2
私は、ユーザーレベルでBigqueryでチャンネルパスを作成します。私は、トランザクションが発生したときにパスを終了します。次の訪問は新しいパスを開始します。現在、私はすべてのトランザクションを集計するユーザーごとに1つのパスを持っています。下記のコードを参照してください。また、現在のOUTPUT TABLEと必要なOUTPUT TABLEも含めました。イベントに基づいてBigQueryでチャンネルパスを作成するにはどうすればよいですか?
私の考えは、トランザクションをカウントしている新しい列を作成することです。この値は0から始まり、トランザクションが発生した後に1だけインクリメントする必要があります。次に、この値をuser_id値とマージし、集約された文字列をその変数にグループ化します。しかし、私はこれを行う方法を知らない。
ありがとうございます!
グイド
#standardSQL
WITH yourTable AS (
SELECT 1 AS user_id,'1a' as visit_id, '2017-01-01 14:10:12' AS DATETIME,
'google cpc' AS channelgrouping, 0 AS transaction , 1 as visit UNION ALL
SELECT 1, '1b', '2017-01-01 20:10:12', 'email', 1, 1 UNION ALL
SELECT 1, '1c','2017-01-03 08:10:12', 'direct', 0, 1 UNION ALL
SELECT 1, '1d','2017-01-04 13:10:14', 'organic', 1, 1
)
SELECT
user_id,
STRING_AGG(channelgrouping, ' > ' ORDER BY DATETIME) AS channelgrouping_path,
SUM(transaction) AS transaction,
SUM(visit) AS visits
FROM yourTable
GROUP BY user_id
出力テーブル
user_id|channgelgrouping_path |Transactions|Visits
1 |google cpc > email > direct > organic| 2 | 4
所望の出力TABLE
user_id|channgelgrouping_path |Transactions|Visits
1 |google cpc > email | 1 | 2
1 |direct > organic | 1 | 2
もう一度おねがいします。これは私が探していたものです。 おそらく、無期限のプレシードと1プレッシング機能の間の行を説明できますか?なぜGROUP BYにIFNULL(grp、0)を追加しましたか? – gvkleef
分析関数のチェックhttps://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#analytic-functions、特にウィンドウ枠節。 'UNBOUNDED PRECEDINGと1 PRECEDINGの間に行こう 'と言っています - 現在の行の前にあるすべての行に対してSUMを実行します。非常に最初の行のために必要な 'IFNULL(grp、0)' - 先行する行がないので、合計は0になる必要があります。 –
訪問のタイムスタンプパスの最初と最後のチャンネルの?私は最初に新しい質問を作成する前にあなたに尋ねると思った。 – gvkleef