【问题标题】:Issue displaying empty value of repeated columns in Google Data Studio在 Google Data Studio 中显示重复列的空值的问题
【发布时间】:2020-05-16 11:57:44
【问题描述】:

尝试在 Google Data Studio 中可视化非规范化表中的一些信息时遇到问题。

上下文:我想在 Big Query 的表格中收集公司的所有联系人以及相关订单。联系人可以没有订单或多个订单。遵循 Big Query 最佳实践,此表是非规范化的,并且客户端的所有订单都在结构数组中。它看起来像这样:

Fields Examples:

+-------+------------+-------------+-----------+
| Row # | Contact_Id | Orders.date | Orders.id |
+-------+------------+-------------+-----------+
|-  1   | 23         | 2019-02-05  | CB1       |
|       |            | 2020-03-02  | CB293     |
|-  2   | 2321       |   -         |   -       |
|-  3   | 77         | 2010-09-03  | AX3       |
+-------+------------+-------------+-----------+

问题是当我想将此表用作 Data Studio 中的数据源时。 例如,如果我用Contact_Id 作为维度构建一个表,一切都很好,我可以看到我所有的联系人。但是,如果我从 Orders 结构中添加任何维度,则不会显示来自没有订单的联系人的所有信息。例如,来自Contact_Id2321 的所有信息都将从表中删除。

您是否找到任何解决方法来可视化这些空数组(例如作为空值)?
我找到的唯一解决方案是构建一个未嵌套订单的中间表。

【问题讨论】:

  • 您如何将 BigQuery 数据连接到 DataStudio?您是否添加了新的数据源,如documentation 中所述?我已使用您的数据并成功添加了一个新数据源以使用 DataStudio 创建报告。然后我按照你的描述创建了一个表格,我可以看到所有的值。你要我提供我采取的步骤吗?
  • 感谢您的回复@AlexandreMoraes!是的,我创建了一个数据源(使用 Big Query 连接器)。您在数据工作室中创建的表是否包含所有维度(contact_id、orders.date 和 orders.id)?您是否能够可视化 contact_id=2321 的数据?我会很高兴获得截图和步骤。非常感谢!
  • @Arthur_H2 您知道如何显示contact_id=2321 的信息吗?我也面临同样的问题

标签: google-bigquery google-data-studio


【解决方案1】:

我刚刚发现解决此问题的方法是在我的 DS-> BQ 连接器中添加一个额外的字段:

ARRAY_LENGTH(fields.orders) AS numberoforders

如果数组为空,这将返回零 - 然后您可以在 DataStudio 中创建计算字段 - 使用“numberoforders”字段将值强制为 NULL 或零。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

您可以通过稍微更改 BigQuery 连接器上的查询来解决此问题。

不要这样做:

SELECT
    Contact_id,
    Orders
FROM myproject.mydataset.mytable

试试这个:

SELECT
    Contact_id,
    IF(ARRAY_LENGTH(Orders) > 0, Orders, [STRUCT(CAST(NULL AS DATE) AS date, CAST(NULL AS STRING) AS id)]) AS Orders
FROM myproject.mydataset.mytable

这样,您将强制重复字段至少包含一个包含 NULL 值的数组,因此 Data Studio 将表示这些缺失值。

另外,如果您想使用嵌套字段之一创建新的计算字段,您应该在之前检查该值是否为 NULL 以避免填充所有 NULL 值。例如,如果您有一个可以是 10 的重复和嵌套字段,并且您想创建一个计算字段来交换值,您应该这样做:

IF(myfield.key IS NOT NULL, IF(myfield.key = 1, 0, 1), NULL)

在这里您可以看到如果您在交换前检查以及如果您不检查会发生什么:

Original value        No check        Check
1                     0               0
0                     1               1
NULL                  1               NULL
1                     0               0
NULL                  1               NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 2020-10-19
    相关资源
    最近更新 更多