標準のSQLを使用してユーザー定義関数にSTRUCTSのARRAYを渡す方法を教えてください。まず標準BigQueryのユーザー定義関数にSTRUCTのARRAYを渡すSQL
、コンテキストのビット:
表スキーマ:
id STRING
customer STRING
request STRUCT<
headers STRING
body STRING
url STRING
>
response STRUCT<
size INT64
body STRING
>
outgoing ARRAY<
STRUCT<
request STRUCT<
url STRING,
body STRING,
headers STRING
>,
response STRUCT<
size INT64,
body STRING
>
>
>
ユーザー定義関数:私の問題については
CREATE TEMPORARY FUNCTION extractDetailed(
customer STRING,
request STRUCT<
headers STRING,
body STRING
>,
outgoing ARRAY<
STRUCT<
request STRUCT<url STRING>,
response STRUCT<body STRING>
>
>
)
RETURNS STRING
LANGUAGE js AS """
""";
SELECT extractDetailed(customer, STRUCT(request.headers, request.body), outgoing)
FROM request_logs
:私はできませんoutgoing
ARRAYの一部を選択し、それをユーザー定義の関数に渡す方法を理解しているようです配列としての配列。
が効果的に、私は次のユーザー定義関数の呼び出しをシミュレートしようとしている:
extractDetailed(
"customer id",
{ "headers": "", "body": "" },
[
{
"request": { "url": "" },
"response": { "body": "" }
},
{
"request": { "url": "" },
"response": { "body": "" }
}
]
);
私は最近、それをアンロックsome documentation that might helpに出くわしてきた、私はちょうどそれが収まるようにする方法を見つけ出すように見えることはできません。私は本当にこれに苦しんでおり、それを解決する助けに感謝します。
したがって、パフォーマンスの観点から、2つの間に違いはありますか? 2つのUDFを持っていることについての私の最初の考えは、それがわずかな減速を引き起こすことである。しかし、私はそれが移植性とパフォーマンスのトレードオフかもしれないと思います。 – garbetjie
私の経験からSQL UDFは遅さに追加されていません。 JS UDFは可能性があります。だから、私は上記の2つが同じことをしなければならないと感じています –
@garbetjie - 私の答えがあなたの問題を解決するのを助け、あなたがそれを受け入れるなら - 投票してください。 http://meter.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235のhttp://stackoverflow.com/help/someone-answersおよびUpvoteセクションをご覧ください。 –