いくつかのテーブルからデータを取得して、bigquery の JavaScript UDF に渡そうとしています。
次のコードを書きましたが、select の結果を必要な構造に格納するための正しい構文と、それを udf 関数に渡す方法を理解できないようです。
DECLARE arg1 ARRAY<STRING>;
DECLARE arg2 ARRAY<STRUCT <col1 STRING, col2 STRING> >;
DECLARE res1 ARRAY<STRING>;
SET arg1 = ARRAY<STRING>["Adams", "Joseph", "Davis", "Mary", "Jesus"] ;
CREATE TEMP FUNCTION myfunction(arg1 ARRAY<STRING> , arg2 ARRAY<STRUCT<col1 STRING, col2 STRING> > )
RETURNS ARRAY<STRING>
LANGUAGE js AS '''
return ["a", "b", "c"]
''';
SET ARG2 = (SELECT AS STRUCT(
WITH TBL1 AS
(SELECT 'Adams' as LastName, 50 as SchoolID UNION ALL
SELECT 'Buchanan', 52 UNION ALL
SELECT 'Coolidge', 52 UNION ALL
SELECT 'Davis', 51 UNION ALL
SELECT 'Eisenhower', 77)
SELECT LastName as col1, SchoolID as col2 FROM TBL1));
SET res1 = select res FROM UNNEST(myfunction( arg1, arg2 )) res;