数据工作室如何将可重复列读取为单个记录的值?

Posted

技术标签:

【中文标题】数据工作室如何将可重复列读取为单个记录的值?【英文标题】:How can data studio read a repeatable column as values of a single record? 【发布时间】:2020-07-08 22:56:25 【问题描述】:

我正在将 Mongo 集合移动到 BigQuery 中,以便在 Google Data Studio 中进行分析和可视化。我特别试图映射locations 集合的所有结果,该集合有多个记录,每个位置一个。每条记录将 lat long 存储为 2 个数字的数组。

在 Data Studio 中,当我尝试映射 locations.coordinates 值时,它会发出嘶哑的声音,因为它只提取数组的第一个值。如果不是映射它,而是将结果输出为表格,我会看到每条记录有 2 行,_id 相同,locations.coordinates 在具有纬度 (locations.coordinates[0]) 的行和另一行之间不同经度行 (locations.coordinates[1])。

我认为我必须将其作为 bigquery 中的计划查询来执行,该查询在每次数据同步后运行。但是,我希望在 Google Data Studio 中有一种方法可以将其作为计算字段或混合数据集。

Data as it exists in mongo

Data as it exists in bigquery

Data as it exists in data studio

附加: Big Query Record Types

【问题讨论】:

Data Studio 展平所有重复的字段。 @allegorithm Mosha 的评论对你来说足够了吗? @MoshaPasumansky 如果您看到上面的屏幕截图,您会发现它并没有“压平”所有重复的字段。当您要求显示记录表时,它会将它们分成两条记录。 这就是“展平”的意思——它把单个记录与重复的字段,并将其展平成多条记录,复制非重复的字段。 您可以在 bigquery 中创建一个视图,将数组条目转换为结构条目,例如 STRUCT(location.coordinates.value[offset(0)] AS lat, location.coordinates.value[offset(1)] AS long) 【参考方案1】:

您可以直接寻址数组中的值并使用结构等相应地转换您的数据:

WITH t AS (
  SELECT * FROM UNNEST([
    STRUCT('a' AS company, STRUCT([-71.2, 42.0] as coordinates, 'Point' as type) AS location),
    ('b', ([-71.0, 42.2], 'Point')),
    ('c', ([-71.4, 42.4], 'Point'))
  ])
)

--show source structure of example data
--SELECT * FROM t

SELECT * except(location),
  STRUCT(
    location.coordinates[safe_offset(0)] as long,
    location.coordinates[safe_offset(1)] as lat,
    location.type
  ) as location
FROM t

offset() 用于基于 0 的访问,ordinal() 用于基于 1 的访问,safe_ 在数组中的索引不存在的情况下不会触发错误。如果您需要知道缺少值,那么您应该使用没有safe_ 的版本。

无论如何 - 通过从数组中选择特定值,此结构是平坦的。它应该与 datastudio 或任何其他可视化工具一起使用,不再有重复的行

【讨论】:

以上是关于数据工作室如何将可重复列读取为单个记录的值?的主要内容,如果未能解决你的问题,请参考以下文章

excel中几列数据统计

在火花中读取 json [重复]

如何将可重复的分区作为一个又一个分区的新分区?

RxSwift:将可完成映射到单个可观察?

如果值为空,如何在单个查询中更新列的值,然后使用前一个非空值进行更新[重复]

sql中如何使一列中的多个重复数据只显示一次, 求大神指导,使得图中的班简名重复的只显示一次。