Bigquery 中的自定义定义

Posted

技术标签:

【中文标题】Bigquery 中的自定义定义【英文标题】:Custom Definitions in Bigquery 【发布时间】:2021-04-05 08:06:15 【问题描述】:

我对 Bigquery/Firebase/GA 甚至 SQL 都很陌生。 (顺便说一句,如果您有一些好的经验或建议可以让我开始学习,那就太好了!)

但是我现在需要解决 Bigquery 的主要问题。我有点尝试所有可以从中获取信息/提示的来源。我希望这个社区将成为其中之一。

所以我的问题在于自定义定义。我们在 Google Analytics 中定义了它们。我们想用这个定义来划分用户,分别分析:

我的问题是:在哪里/如何在 bigquery 中找到这些自定义定义来过滤我的数据?我有普通字段,例如用户 ID、时间戳等,但找不到这些自定义定义。

我一直在做一些研究,但仍然没有明确的答案,如果有人能给我一些提示或解决方案,我将永远负债累累! xD

我从另一个社区得到了一个看起来像这样的解决方案,但我无法让它工作,我的 bigquery 无法识别错误中所说的 customDimensions。

从表中选择 cd.*,unnest(customDimensions) cd

【问题讨论】:

kaggle 在 BigQuery 中有两门关于 SQL 的课程:kaggle.com/learn/overview 【参考方案1】:

您可以根据自己的要求在 Bigquery 上创建自己的 custom function、Stored Procedure。 要在用户 ID 和时间戳等字段上应用正式过滤器,您可以简单地应用标准 SQL 过滤器,如下所示:-

SELECT * FROM DATA WHERE USER_ID = 'User1' OR Timestamps = 'YYY-MM-DDTHH:MM'

另外,unnest 是用来分割字段数据的,你有需要被攻击的数据吗? 如果您分享您对 SQL 的期望,我可以为您提供更多帮助。

【讨论】:

谢谢答案,是的,我有点想出如何选择基本字段,如用户 ID 等。但是当我们谈论我在谷歌分析中定义的 customDimensions 时,我的问题就开始了,是的,我猜想这个数据需要拆分。我试过这个(看起来我不能在这里发布图片所以我把它上传到外部网站上):ibb.co/NnXy04Q,但是 Bigquery 不能识别 customDimensions,是因为我在错误的表中搜索吗?我不知道。有什么办法可以查看我项目中的所有表及其字段,以便我可以根据它编写我的 sql 代码? 这里是我在谈论的谷歌分析中自定义维度的截图preview.redd.it/… 如果我理解正确,'customDimensions' 是表而不是列?如果是这种情况,那么您不能在表上的“unnest”中拥有一个表,它应该只在第一个表的列上。要解决这个问题,您应该首先在连接键上连接 2 个表,然后在连接数据上应用过滤条件。 查看表结构和项目中的所有表...只需将光标悬停在 Bigquery 编辑器上的表名上...然后按控制并单击表名,它将在 Bigquery 网页上打开表结构。 是的,但我似乎需要 ga_sessions_ 数据集,但我的项目找不到。我找到了公共数据集一 (bigquery-public-data.google_analytics_sample.ga_sessions_),但我可以找到适合我项目的数据集吗?【参考方案2】:

您的自定义维度位于名为 customDimensions 的数组中。这些数组基本上是一个结构列表 - 每个结构有 2 个字段:keyvalue。所以它们基本上看起来像这个例子:[ key:1, value:'banana', key:4, value:'yellow', key:8, value:'premium' ] 其中key 是您在 Google Analytics(分析)中设置的自定义维度的索引。

有 3 个customDimensions 数组!其中两个嵌套在其他数组中。如果你想和那些你真的需要熟练使用数组的人一起工作。例如。 unnest() 函数将数组转换为可以运行 SQL 的表格式。

customDimensions[] 点击[] customDimensions[] 产品[] customDimensions[]

在会话范围的自定义维度 3 上带有子查询的示例 1:

select
  fullvisitorid,
  visitStartTime,
  (select value from unnest(customDimensions) where key=3) cd3
from
  ga_sessions_20210202

带有横向交叉连接的示例 2 - 您在此处放大表格 - 不理想:

select
  fullvisitorid,
  visitStartTime,  
  cd.*
from ga_session_20210202 cross join unnest(customDimensions) as cd

所有名称都区分大小写 - 在您的一个屏幕截图中,您使用了错误的名称,其中“c”为大写。

此页面可以帮助您完成数组游戏:https://cloud.google.com/bigquery/docs/reference/standard-sql/arrays - 只需完成所有示例并在查询编辑器中进行操作

【讨论】:

非常感谢!我想我理解那里的逻辑,但我有一个问题,关于代码的“来自”部分,你有 ga_session_yymmdd 对吗?在我的情况下,我应该如何使用这个例子?因为我想我知道我需要哪些字段,但误解了从哪里获取这些字段。 我不太清楚你的意思 - 这里有所有领域的概述:support.google.com/analytics/answer/… 是的,我已经看到了,但我的问题不同。抱歉,由于我缺乏知识,我无法很好地说明它。我再试一次。这是我将代码放入 Biguery ibb.co/mzXkHWM 后的屏幕。它无法识别“ga_sessions20210202”部分。如果您尝试解释这一点,我想您也会回答我的问题 所以经过更多研究,我找到了 ga_sessions_ (`bigquery-public-data.google_analytics_sample.ga_sessions_) 的公共数据集,我可以在其中编写您的代码并且它可以工作。但是我也可以为我的项目找到相同的数据集吗?从我的私人谷歌分析中获取数据,而不是从公共分析中获取数据 是的,您必须先导出数据 - 这是操作方法support.google.com/analytics/answer/3416092

以上是关于Bigquery 中的自定义定义的主要内容,如果未能解决你的问题,请参考以下文章

在 Apps 脚本中的自定义函数中,BigQuery 调用失败

BigQuery - 扫描查询字节的自定义配额?

取消嵌套命中和取消嵌套会话范围的自定义维度 BigQuery 代码过滤器

将嵌套的自定义维度列数据转置为行 Bigquery

无法使用 BigQuery 标准 SQL 提取特定 ID 的自定义维度

Bigquery 的自定义连接器 - Data Studio 用于缓存数据