我在BigQuery中有一个包含两列的数据集:
1。网址
2。标签
URL 是一个值,而 TAGS 是一个数组(下面的示例):
行 | URL 标签
DataStudio中的过滤器能否在BigQuery数组(即“标签”列)上使用?
我想在DataStudio中单击过滤器下拉列表,然后查看列表:
1。驴
2。孔
3。生活
4。这里
下面是查询BigQuery数组的代码,我必须使用哪里存在和 unnest 从“标签”列中获取结果
select * FROM `any_table`
where exists(select * from unnest(tags) as tags where tags = 'donkey')
https://cloud.google.com/bigquery/docs/reference/standard-sql/arrays#scanning-for-specific-values
答案 0 :(得分:1)
在Data Studio中使用数组很容易,因为它本身受支持。只需为TAGS
字段设置一个过滤器,它就可以像所有都是单独的字段一样工作。语义是,如果数组中至少有一项与过滤器匹配,则要过滤的图表或表将仅包括顶层行。
尽管有一些警告。
您的表模型几乎会发生,因此,如果您要在Data Studio中为Count
的{{1}}制作记分卡,您将得到1。如果您执行相同的操作{{1} }在URL
上,您将获得4。这样,我认为行为对于大多数人期望的是理想的-您可以访问所有原始数据,就像在BigQuery结果网格中看到的一样
但是,如果您使用BI Engine来加速仪表板,那么我注意到行为有时会有所不同。 。 。也就是说,看起来数据更像是Count
了,复制了非数组值以匹配数组的行。因此,以无计数示例为例,同时包含TAGS
和CROSS JOIN
的表将显示两者的值为COUNT(URL)
。这可能会弄乱一些计数/求和,因此在使用它时请务必小心谨慎。仅当在同一图表/表中同时选择一个数组字段和一个非数组字段时,才会发生这种情况。 。 。否则,行为就是您所期望的。对于某些无法由BI Engine加速的比较而言,这尤其令人困惑,因为这会更改语义,有可能破坏您的报告。如果您仅将COUNT(TAGS)
之类的内容用于这些顶级字段,则无论哪种方法都可以正常工作。否则,您可能需要重组数据以确保安全。
如果您有一个庞大的数据集,并且担心要读取比所需更多的数据,则还可以使用Data Source Parameters作为将过滤器值发送到查询的一种方式,然后仅返回已在过滤器上过滤的结果BigQuery方面-尽管大多数人更喜欢直接在Data Studio中执行此操作的灵活性。