Mac*_*ing 4 google-bigquery google-data-studio
我在 BigQuery 中有一个包含两列的数据集:
1. url
2. 标签
URL是单个值,TAGS是一个数组(示例如下):
行| 网址 | 标签
DataStudio 中的过滤器可以用于 BigQuery 数组,即标签列吗?
我想单击 DataStudio 中的过滤器下拉列表并查看列表:
1. donkey
2. kong
3.
living
4. here
下面是查询 BigQuery 数组的代码,我必须使用where exists和unnest从标签列中获取结果
select * FROM `any_table`
where exists(select * from unnest(tags) as tags where tags = 'donkey')
Run Code Online (Sandbox Code Playgroud)
https://cloud.google.com/bigquery/docs/reference/standard-sql/arrays#scanning-for-specific-values
在 Data Studio 中使用数组很容易,因为它们是本机支持的。只需为该TAGS字段设置一个过滤器,它就会像所有单独的字段一样工作。语义是,如果数组中至少有一项与过滤器匹配,则被过滤的图表或表格将仅包含顶级行。
不过有一些注意事项。
您的表格模型几乎就是发生的事情,所以如果您要在 Data Studio 中为Countof制作记分卡URL,您将获得 1。如果您在Count上做同样的事情TAGS,您将获得 4。这样,我认为 be 行为是理想的对于大多数人所期望的 - 您可以访问所有原始数据,就像您在 BigQuery 结果网格中看到的那样。
但是,如果您使用BI Engine来加速您的仪表板,我注意到行为有时会有所不同。. . 也就是说,它看起来更像是数据被CROSS JOIN'd,复制非数组值以匹配数组的行。因此,在没有计数示例的情况下,同时包含COUNT(URL)和的表COUNT(TAGS)将显示两者的值4. 这可能会弄乱一些计数/求和,因此在处理此问题时请注意并小心。仅当您在同一个 chart/table 中同时选择数组字段和非数组字段时才会发生这种情况。. . 否则行为就是你所期望的。这对于 BI 引擎无法加速的某些比较尤其令人困惑,因为这会改变语义,可能会破坏您的报告。如果您只使用COUNT_DISTINCT这些顶级字段之类的东西,那么无论哪种方式都可以正常工作。否则,您可能需要重构数据以确保安全。
如果您有一个 vert 大数据集并且担心读取比需要更多的数据,您还可以使用数据源参数作为将过滤值发送到查询的一种方式,然后只返回已经在 BigQuery 端过滤的结果 - 尽管大多数人们更喜欢直接在 Data Studio 中执行此操作的灵活性。
| 归档时间: |
|
| 查看次数: |
2946 次 |
| 最近记录: |