2016-05-13 10 views
3

Google BigQueryで複数の商品スコープのカスタムディメンションをクエリしようとしています。その結果、このようなものです:BigQuery - BigQueryでProductスコープのカスタムディメンションを複数選択する

Current set of results

私は、結果にこのようなものを組み合わせた行を取得したいと思い

Expected set of results

が、これはBigQueryの中のクエリで可能ですか?

編集

私が使用した既存のクエリを参照してください:

SELECT IF(hits.product.customDimensions.index=21, hits.product.customDimensions.value, NULL) cd21, 
IF(hits.product.customDimensions.index=22, 
hits.product.customDimensions.value, NULL) cd22 
FROM [<table_id>.ga_sessions_20160510] 
WHERE hits.product.productListName LIKE "%test%" 
    AND hits.product.isImpression IS TRUE 
    AND hits.product.customDimensions.index IN (21,22) 
+0

を共有してください:これは、2つのテーブルが含まれています。 – Pentium10

+0

私が使用した既存のクエリをご覧ください:SELECT IF(hits.product.customDimensions.index = 21、hits.product.customDimensions.value、NULL)cd21、 IF(hits.product.customDimensions.index = 22、ヒット.product.customDimensions.value、NULL)から、CD22 hits.product.productListName LIKE "%テスト%" は AND hits.product.isImpressionがTRUE AND hits.product.customDimensions.index IS [ .ga_sessions_20160510] IN(21,22) – Sarjak

答えて

1

を私は公共のデータセットを使用した例を書き直しました:

SELECT fullVisitorId, visitId, hits.hitNumber, hits.time, 
    max(IF(hits.customDimensions.index = 1, hits.customDimensions.value, NULL)) within RECORD cd21, 
    max(IF(hits.customDimensions.index = 2, hits.customDimensions.value, NULL)) within RECORD cd22, 
FROM 
    [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] 
WHERE 
    hits.customDimensions.index IN (1,2) 
and fullVisitorId = '712553853382222331' 

出力は次のとおりです。

+-----+--------------------+------------+----------------+-----------+-------+--------+--+ 
| Row | fullVisitorId  | visitId | hits_hitNumber | hits_time | cd21 | cd22 | | 
+-----+--------------------+------------+----------------+-----------+-------+--------+--+ 
| 1 | 712553853382222331 | 1378804218 | 1    | 0   | Vests | Bronze | | 
+-----+--------------------+------------+----------------+-----------+-------+--------+--+ 
| 2 | 712553853382222331 | 1378804218 | 2    | 9611  | Vests | Bronze | | 
+-----+--------------------+------------+----------------+-----------+-------+--------+--+ 
| 3 | 712553853382222331 | 1378804218 | 3    | 10664  | Vests | Bronze | | 
+-----+--------------------+------------+----------------+-----------+-------+--------+--+ 
| 4 | 712553853382222331 | 1378804218 | 5    | 25377  | Vests | Bronze | | 
+-----+--------------------+------------+----------------+-----------+-------+--------+--+ 

同じRECORDから複数のエントリを読み取るためにWITHIN構文を使用することがあります。この方法でスコープ集計を取得しました。

GAデータでは複数のヒットがある可能性があります.1つの行のみを保持する場合は、この出力をさらに集計する必要があります。


Googleアナリティクスチームは、生成されるデータの性質を理解するために使用できるサンプルデータセットを提供しています。このデータをBigQuery UIのビューに追加するには、プロジェクトメニュー(プロジェクト名の横にあるドロップダウン、プロジェクトに切り替え、プロジェクトを表示)を使用して、プロジェクトgoogle.com:analytics-bigqueryを追加します。代わりに、BigQuery UIリンクに移動することができますhttps://bigquery.cloud.google.com/project/google.com:analytics-bigquery プロジェクトを追加すると、サンプルデータセット(LondonCycleHelmet)がナビゲーションパネルに表示されます。私たちはそれを改善することができ、既存のクエリ

  • ga_sessions_20130910
  • refunds_201309
+0

回答が役に立ちます。しかし、私がフェッチしているデータには、同じhitNumberに複数のCD値があります。これらは商品の印象であるため、このようにしています。これがしているのは、MAX関数が私にすべてのものではなく最高の価値しか与えないということです。これを達成する方法はありますか? – Sarjak

+0

以前に使用したクエリでは、http://i.imgur.com/r2rYpJY.pngになります。クエリごとにMAXを使用すると、http://i.imgur.com/2DlJ642.pngが表示されます。 – Sarjak

+0

MAXをgroup_concatに置き換えます。私はちょうど例として使用した – Pentium10

関連する問題