Googleアナリティクスデータを計算するためにStandardSQLを使用してBig QueryにSQLクエリを書き込もうとしています。私はまだBigQueryでの作業を学んでおり、複雑さに合わせて調整しています。BigQueryの最初のネストされたページ行にカスタムディメンション値が含まれているかどうかを確認
私のGAテーブルの各セッションについて、一定の日数にわたって繰り返し、 "PAGE"タイプのFIRSTヒットを特定したいとします。そのヒットで、私は特定のカスタムディメンションの値を返したいと思います。カスタムディメンションはセッションスコープですが、この特定のヒットの値のみを知りたいとします。
私はセッションでparitionと、次のように試してみる必要があると思うが、私は第二ネスティング
SELECT (SELECT value from hits.customDimension where hits.customDimension.index == 13) OVER(fullVisitorID) FROM
`ga_sessions_2017*` AS t
WHERE
_TABLE_SUFFIX BETWEEN '0901'
AND '0930'
AND totals.hits > 2)
AND row_number() = 1
AND hit.type = "PAGE"
GROUP BY 1
に関する立ち往生しています私は、UDFを使用して、以下を試してみましたが、私は私が書いたことは完全に知っています非効率的な。
#standardSQL
CREATE TEMP FUNCTION
isDefined(json_str STRING)
RETURNS STRING
LANGUAGE js AS """
var row = JSON.parse(json_str);
var defined = "no";
for(i=0; i < row.length; i++) {
if(row[i].type != "PAGE") continue;
row[i].customDimensions.forEach(function(cd) {
if(cd.index == "13" || cd.index == 13) {
if(cd.value !== null || cd.value !== "") defined = "yes";
}
});
return defined;
}
""";
SELECT becomesDefined, count(*) FROM (
SELECT
isDefined(TO_JSON_STRING(t.hits)) as becomesDefined
FROM
`ga_sessions_2017*` AS t
WHERE
_TABLE_SUFFIX BETWEEN '0901'
AND '0930'
AND totals.hits > 2) GROUP BY 1