【问题标题】:How to create a channel path with BigQuery?如何使用 BigQuery 创建通道路径?
【发布时间】:2017-04-13 14:44:59
【问题描述】:

我想根据用户访问网站的顺序为每个用户 ID 创建一个通道路径,并且我想对每个路径的总交易量求和。我们的想法是使用 Bigquery 来做到这一点。

我有以下输入表:

           user id - date       - hits.time - channelgrouping - transaction
           xxxxxxx - 2017-01-01 - 23234     - google cpc      - 1          
           xxxxxxx - 2017-01-02 - 23234     - email           - 0           

我想要的输出表是:

           user id - channelgrouping path - transaction
           xxxxxxx - google cpc > email   - 1

任何人都可以通过提供代码来帮助我开始创建路径吗?

提前致谢!

【问题讨论】:

    标签: google-analytics google-bigquery


    【解决方案1】:

    请看下面的例子和方向

    #standardSQL
    WITH yourTable AS (
      SELECT 1 AS user_id, '2017-01-01' AS DATE, 'google cpc' AS channelgrouping, 1 AS transaction UNION ALL
      SELECT 1, '2017-01-02', 'email', 0 UNION ALL
      SELECT 2, '2017-01-01', 'abc', 2 UNION ALL
      SELECT 2, '2017-01-02', 'xyz', 3 
    )
    SELECT 
      user_id, 
      STRING_AGG(channelgrouping, ' > ') AS channelgrouping_path,
      SUM(transaction) AS transaction
    FROM yourTable
    GROUP BY user_id
    -- ORDER BY USER_ID  
    

    输出如下

    user_id channelgrouping_path    transaction  
    1       google cpc > email      1    
    2       abc > xyz               5    
    

    基于您的确切查询的示例:

    #standardSQL
    SELECT
      visitorId
      ,STRING_AGG(channelgrouping, ' > ') AS channelgrouping_path
      ,SUM(transactions) AS transaction
    FROM (
      SELECT 
        date
        ,visitorId
        ,channelgrouping
        ,SUM(totals.transactions) AS transactions
      FROM `project.dataset.table`
      GROUP BY
        date
        ,visitorId
        ,channelGrouping
    )
    GROUP BY visitorId  
    

    确保将 project.dataset.table 替换为各自的

    我必须按日期和 hits.time 对数据集进行排序,这执行起来非常繁重。

    查看如何使用聚合字符串控制顺序的示例

    STRING_AGG(channelgrouping, ' > ' ORDER BY date) AS channelgrouping_path
    

    【讨论】:

    • 谢谢米哈伊尔,这很有帮助!但不幸的是,Bigquery 不支持 string_agg() 函数。有其他选择吗?
    • @gvkleef - 你有没有试过完全按照我的答案运行?!请注意,它适用于 BigQuery 标准 SQL!请再试一次,让我知道是否仍有问题 - 所以我们将尝试解决问题
    • 对不起,我直接在我自己的数据和我自己的脚本版本上尝试过。当我使用您的脚本时,一切正常。当我使用我的时,我收到以下错误:4.12 - 4.38: Unrecognized function string_agg
    • @gvkleef - 你确定你处于标准 sql 模式吗? - 看看我的例子中的第一行 - 你应该在你的例子中添加同样的内容
    • @gvkleef - 哦,男孩......:o)在我的回答中看到补充 - 希望你现在就能让它工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2021-11-01
    • 1970-01-01
    • 2014-10-09
    • 2011-02-16
    • 2020-07-04
    • 1970-01-01
    相关资源
    最近更新 更多