2
a post by Robert Sahlinに基づいて、BigQueryのインデックスでGoogleアナリティクスのカスタムディメンションにアクセスするには、BigQuery UDFを使用します。提案されている解決策では、RobertはJavaScript UDFを使用しています.Sql UDFで同じことを実行できるかどうかは疑問です.SQL UDFはJSより優れているはずです。BigQueryでUDFを使用してGoogleアナリティクスのカスタムディメンションをフラット化する方法
提案JS UDF:SQL UDFで
CREATE TEMPORARY FUNCTION customDimensionByIndex(index INT64, arr ARRAY<STRUCT<index INT64, value STRING>>)
RETURNS STRING
LANGUAGE js AS """
for (var j = 0; j < arr.length; j++){
if(arr[j].index == index){
return arr[j].value;
}
}
""";
SELECT
fullvisitorId,
visitId,
hit.hitnumber,
customDimensionByIndex(6, hit.customDimensions) as author,
customDimensionByIndex(7, hit.customDimensions) as category
FROM `123456.ga_sessions_YYYYMMDD`
JOIN
UNNEST(hits) as hit
ただし、違いがあります。 JS UDFは常に単一の値(またはヌル)を返します。 SQL UDFは複数の結果を返す可能性があります。「スカラーサブクエリが複数の要素を生成しました」というエラーが発生します。 – stefandoorn
前のコメントと関連しています。実際にはGoogleアナリティクスBigQueryのデータに実際のデータが含まれていました。だから理論だけではありません。私はこれを回避するために 'GROUP BY x.value'を追加しました。これは私のデータセット上のわずかなオフセットです。 – stefandoorn
私がクエリをテストできるサンプルを私に与えたら、クエリをテストして修正を追加することができます。 –