【问题标题】:Big Query - Google Analytics - Time diff between first visit and purchaseBig Query - Google Analytics - 首次访问和购买之间的时间差异
【发布时间】:2015-05-13 19:42:25
【问题描述】:

尝试获取列表:

visitorid,首次访问时间,交易发生的命中时间。

我所写的只是抓取具有交易收入的行。我还尝试通过 Date(visitStartTime) 将作为 unix 日期的 visitStartTime 转换为常规日期,但是由于输出日期,这在组中失败了。

任何方向都超级有用。

SELECT 
  fullvisitorID, 
  visitNumber,
  visitStartTime,
  hits.transaction.transactionRevenue

FROM 
  [75718103.ga_sessions_20150310],
  [75718103.ga_sessions_20150309],
  [75718103.ga_sessions_20150308],
  [75718103.ga_sessions_20150307],
  [75718103.ga_sessions_20150306],
  [75718103.ga_sessions_20150305],
  [75718103.ga_sessions_20150304],
  [75718103.ga_sessions_20150303],
  [75718103.ga_sessions_20150302],


WHERE totals.transactions >=1

GROUP BY    
  fullvisitorID, visitNumber, visitStartTime, hits.transaction.transactionRevenue;

【问题讨论】:

  • 对于日期,只需在外部查询中执行。基本上保留您的查询,但将其包装在“Select Date(visitStartTime) FROM (yourquery)”周围。对于另一个问题......你是什么意思?它不返回“transactionRevenue”为空的行?
  • 是的,该查询仅返回在会话中产生收入的 visitorID 和 visitNumbers。我希望获得第一个会话(其中 visitNumber = 1 以及任何会话都有销售......无论是第一个会话还是第 N 个会话。但我还需要每个会话的相应日期。
  • 这是一个有趣的问题。第一次访问,一直有hits.time=0
  • 试图确保我理解正确:在这个问题中,first visit time 指的是会话的开始,对吗?或者是用户在可能更早的会话期间第一次访问的时间。

标签: google-analytics google-bigquery


【解决方案1】:

Mosha的解决方案简洁优雅,但过于简单,实际上是计算一次访问中的第一次浏览量和每笔交易之间的时间,所以它没有计算一次访问者的第一次访问和第一笔交易之间的时间。因此,如果您使用 Mosha 的查询计算平均时间,它将是 1.33 分钟。但是,如果您使用我创建的查询,它将是 9.91 分钟。我的 SQL 技能已经很生疏了,所以应该可以改进一下。

玛莎的查询(第一次网页浏览和一次访问中每笔交易之间的平均时间):

SELECT ROUND(AVG(MinutesToTransaction),2) AS avgMinutesToTransaction FROM (
    SELECT
        fullVisitorId,
        timestamp(integer(visitStartTime*1000000)) as start_time, 
        timestamp(integer(visitStartTime*1000000 + hits.time*1000)) as transaction_time,
        ROUND((TIMESTAMP_TO_SEC(timestamp(integer(visitStartTime*1000000 + hits.time*1000))) - TIMESTAMP_TO_SEC(timestamp(integer(visitStartTime*1000000)) )) / 60, 2) AS MinutesToTransaction
    FROM 
        [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] 
    WHERE hits.transaction.transactionRevenue > 0
)

我的查询(第一次访问和一个访问者的第一次交易之间的平均时间):

SELECT ROUND(AVG(MinutesToTransaction),2) AS avgMinutesToTransaction FROM (
    SELECT firstInteraction.fullVisitorId, 
        MIN(firstInteraction.visitId) AS firstInteraction.visitId,
        TIMESTAMP(INTEGER(MIN(firstInteraction.visitStartTime)*1000000)) AS timeFirstInteraction,
        firstTransaction.visitId,
        firstTransaction.timeFirstTransaction,
        FIRST(BOOLEAN(firstInteraction.visitId = firstTransaction.visitId)) AS transactionInFirstVisit,
        ROUND((TIMESTAMP_TO_SEC(firstTransaction.timeFirstTransaction) - TIMESTAMP_TO_SEC(TIMESTAMP(INTEGER(MIN(firstInteraction.visitStartTime)*1000000)))) / 60, 2) AS MinutesToTransaction
    FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] firstInteraction
    INNER JOIN (
        SELECT
            fullVisitorId,
            visitId,
            TIMESTAMP(INTEGER(MIN(visitStartTime*1000000 + hits.time*1000))) AS timeFirstTransaction
        FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] 
        WHERE hits.type = "TRANSACTION"
        GROUP BY 1, 2
    ) AS firstTransaction
    ON  firstInteraction.fullVisitorId = firstTransaction.fullVisitorId
    GROUP BY 1, 4, 5
)

我留下了一些额外的字段,所以如果你在没有第一个 SELECT 的情况下使用它,你可以看到一些有趣的数据。

Ps:感谢 Mosha 展示了如何计算时间。

【讨论】:

    【解决方案2】:

    visitStartTime 在 Google Analytics 架构中定义为 POSIX 时间,表示自纪元以来的秒数。 BigQuery TIMESTAMP 编码为自纪元以来的秒数。因此,为了将开始时间设为 TIMESTAMP,我使用了TIMESTAMP(INTEGERvisitStartTime*1000000))。 hits.time 包含自第一次命中以来的毫秒秒数,因此要获得事务时间,需要将它们乘以 1000 才能达到微秒粒度,因此 TIMESTAMP(INTEGER(visitStartTime*1000000 + hits.time*1000))。由于命中是重复记录,因此不需要 GROUP BY,数据模型已经将所有命中分组在一起。 把它们放在一起:

    SELECT
      fullVisitorId,
      timestamp(integer(visitStartTime*1000000)) as start_time, 
      timestamp(integer(visitStartTime*1000000 + hits.time*1000)) as transaction_time
    FROM 
     [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] 
    WHERE hits.transaction.transactionRevenue > 0
    

    【讨论】:

    • 感谢 Mosha - 看看,看看它是否检查出来!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    相关资源
    最近更新 更多