2
根据a post by Robert Sahlin,我想使用BigQuery UDF通过其索引访问BigQuery中的任何Google Analytics自定义维度。在建议的解决方案中,Robert使用JavaScript UDF,我想知道是否可以对SQL UDF执行相同的操作 - 因为SQL UDF应该比JS更好。如何使用BigQuery中的UDF将Google Analytics自定义维度展平?
提出的JS 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总是返回一个值(或null)。 SQL UDF可能会返回多个结果,这会导致错误:“标量子查询生成多个元素”。 – stefandoorn
与之前的评论相关:我实际上在Google Analytics(分析)BigQuery数据中使用了真实数据。所以这不仅仅是理论上的。我现在增加了一个“GROUP BY x.value”来解决这个问题,因为它只是对我的数据集略微偏移。 – stefandoorn
如果你给我一个样本,我可以测试查询,我可以测试查询并添加修复。 –