Ниже приведена фиксированная версия вашей функции
#standardSQL
CREATE TEMP FUNCTION test(ID INT64)
RETURNS INT64 AS ((
SELECT CASE
WHEN CAST(FLOOR(ID/POWER(CAST(2 AS INT64),38)) AS INT64) & 3 = 0
THEN ID & CAST(12345678 AS INT64)
ELSE ID
END
));
SELECT test(12)
Как вы можете видеть - вы упускали некоторые аспекты, такие как TEMP
ключевое слово, некоторые открывающие и закрывающие скобки и т. Д.
Между тем, как и в простом сценарии, подобном вашему - вы можете опустить SELECT
и использовать только выражение, как в примере ниже (обратите внимание, что в этом случае вы также избавляетесь от лишних скобок открытия / закрытия
#standardSQL
CREATE TEMP FUNCTION test(ID INT64)
RETURNS INT64 AS (
CASE
WHEN CAST(FLOOR(ID/POWER(CAST(2 AS INT64),38)) AS INT64) & 3 = 0
THEN ID & CAST(12345678 AS INT64)
ELSE ID
END
);
SELECT test(12)