如何通过 bigQuery 从谷歌分析中有效地获取价格和 ID

Posted

技术标签:

【中文标题】如何通过 bigQuery 从谷歌分析中有效地获取价格和 ID【英文标题】:How to efficiently get price & id from google analytics through bigQuery 【发布时间】:2021-08-06 11:41:34 【问题描述】:

我试图创建一个从 iap 事件中提取几个参数的查询,但我似乎无法让它按我想要的方式工作。我尝试了几种不同的方法,但是在查看多天时发现了性能问题。以下是我最近的尝试,虽然我觉得这是错误的方法,但似乎是最快的。任何建议都会有所帮助。

    with purchase_id as (
        SELECT event_timestamp, param.value.string_value as product_id
        FROM `XXX.analytics_X.events_20210803`,
        UNNEST(event_params) AS param
        WHERE event_name = "in_app_purchase"
        AND (param.key = "product_name")
    ),
     purchase_price as (
        SELECT event_timestamp, param.value.int_value as product_price
        FROM `XXX.analytics_X.events_20210803`,
        UNNEST(event_params) AS param
        WHERE event_name = "in_app_purchase"
        AND (param.key = "price")
    )

SELECT event_timestamp, product_id, product_price 

FROM purchase_id as pid 
JOIN purchase_price as pp
ON pid.event_timestamp = pp.event_timestamp

我正在寻找的结果是每个事件都有一行,其中包含相关参数。

timestamp product_id price
1627860223322000 fun_times 10
1627860223432000 old_times 3

这是一个标准的谷歌分析表,但为了完整起见,请查看屏幕截图。

【问题讨论】:

请提供样本数据、期望的结果以及对您想要实现的逻辑的清晰解释。没有数据解释的问题很难理解。 抱歉,我只是添加了一个屏幕截图。它只是一个标准的谷歌分析表。 【参考方案1】:

最简单的方法是使用模式SELECT <..> FROM UNNEST(<..>)

如果您打算在查询中多次使用此模式,您可以定义 TEMP FUNCTION 以使其看起来更简洁:

CREATE TEMP FUNCTION GetParamValue(params ANY TYPE, target_key STRING)
AS (
  (SELECT `value` FROM UNNEST(params) WHERE key = target_key LIMIT 1)
);

SELECT
  event_timestamp,
  GetParamValue(event_params, 'product_id').string_value AS product_id,
  GetParamValue(event_params, 'product_price').int_value AS product_price
FROM <Your_table>
WHERE event_name = 'in_app_purchase';

您也可以对user_properties 使用相同的临时函数。

【讨论】:

【参考方案2】:

我已经实现了这个,它读起来更好,而且速度略快:

SELECT event_timestamp,

(SELECT value.int_value FROM UNNEST(event_params) 
    WHERE key = "price" LIMIT 1) AS product_price,
(SELECT value.string_value FROM UNNEST(event_params) 
    WHERE key = "product_id" LIMIT 1) AS product_id,


FROM `XXX.analytics_X.events_20210803`
WHERE event_name = "in_app_purchase"

为了帮助其他人检查这篇文章,真的很有帮助。我一定是第一次错过了。

https://medium.com/firebase-developers/how-to-use-select-from-unnest-to-analyze-multiple-parameters-in-bigquery-for-analytics-5838f7a004c2

【讨论】:

以上是关于如何通过 bigQuery 从谷歌分析中有效地获取价格和 ID的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 BigQuery 连接器将自定义查询从谷歌数据工作室传递到 BigQuery?

用于将数据从谷歌电子表格加载到 bigquery 的独立脚本

如何通过 BigQuery 从 Firebase 分析中获取事件转换

是否使用数据流管道(未内置自定义)从谷歌存储到 bigquery 摄取数据(批量)?

如何通过输入城市/城镇名称从谷歌地图获取餐厅列表?

如何在谷歌大查询中从谷歌云存储上传表格