Google bigquery 是否可以在DataStudio计算中使用BigQuery重复字段?

Google bigquery 是否可以在DataStudio计算中使用BigQuery重复字段?,google-bigquery,google-data-studio,Google Bigquery,Google Data Studio,在BigQuery表中,我在表的第1行中有以下数据: [ { "order_key": "4416", "order_product": [ { "id": "116608", "key": "5215", "subtotal": "7.99", "stock_move": [ { "id": "64316", "inventory_

在BigQuery表中,我在表的第1行中有以下数据:

[
  {
    "order_key": "4416",
    "order_product": [
      {
        "id": "116608",
        "key": "5215",
        "subtotal": "7.99",
        "stock_move": [
          {
            "id": "64316",
            "inventory_value": "2.33",
          }
        ]
      },
      {
        "id": "116609",
        "key": "5216",
        "subtotal": "39.99",
        "stock_move": [
          {
            "id": "64317",
            "inventory_value": "17.23",
          }
        ]
      },
      {
        "id": "116611",
        "key": "5218",
        "subtotal": "139.94",
        "stock_move": [
          {
            "id": "64319",
            "inventory_value": "25.99",
          },
          {
            "id": "64320",
            "inventory_value": "15.95",
          },
          {
            "id": "64321",
            "inventory_value": "25.02",
          }
        ]
      },
      {
        "id": "116610",
        "key": "5217",
        "subtotal": "59.99",
        "stock_move": [
          {
            "id": "64318",
            "inventory_value": "15.56",
          }
        ]
      }
    ]
  }
]
我正在Google Data Studio项目中使用此表,并试图显示
订单产品.小计
字段的总和以及
订单产品.库存移动.库存值
字段的总和

看起来,为了获取这些数据,DataStudio交叉连接了所有数据,以便解包嵌套的值。这将导致返回错误的总数

例如,在DataStudio中,我有两个记分卡,一个显示订单产品小计的总和,另一个显示订单产品、库存移动、库存价值的总和

然后我有一个过滤器,我为它过滤
order\u key=4416
。我想要的结果是,小计卡片显示的总数为
247.91
,即
7.99+39.99+59.99+139.94
。库存价值卡应显示总计
102.08
,即
2.33+17.23+25.99+15.95+25.02+15.56

实际上,我得到的是库存价值卡的正确值,但小计卡的值是错误的。小计卡上显示的总计为
527.79
,等于
(139.94*3)+7.99+39.99+59.99

因此,正如您所看到的,139.94的值被包含了三次,因为它有三次相应的股票移动。这是DataStudio正在构建的联接的结果

如果查看Data Studio正在运行的查询,我可以看到连接导致了问题:

选择
总和(t0_订单_产品。小计)为t0_qt_0G2EYJUXb,
合计(t0\订单\产品\库存\移动库存\价值)为t0\ qt\ mcntbkubxb
从…起
`查看订单、产品、库存、移动,如t0
交叉连接
将(t0.订单产品)取消为t0订单产品
交叉连接
取消将(t0订单产品库存移动)作为t0订单产品库存移动
哪里
t0.ORDER.key IN(4416);
现在,真正困扰我的是,如果我删除库存价值卡,只查询小计,就会返回正确的值。换句话说,如果页面上唯一的记分卡是小计,则返回的值是预期的
247.91

这是预期的行为吗?根据正在计算的其他指标,为相同的值获得不同的结果?我明白为什么会这样,但我不确定是否应该这样

这有什么办法吗?也许是一种强制计分卡使用自己的查询进行计算的方法,而不是尝试将它们合并为一个查询?似乎在一个查询中尝试计算这两个指标会由于所需的联接而导致错误的答案。或者是告诉记分卡只对唯一记录求和的一种方法


我希望我能解释清楚。感谢您的帮助。

坏消息是,您在DataStudio中发现了一个bug,以及它如何处理多个嵌套列

好消息是,我在DataStudio仪表板上显示了正确的结果:

获得正确结果的秘诀是:我创建了两个指向同一个表的不同源。然后DataStudio不会同时查询这两列。如果你看一下我的报告,你会发现每个记分卡都使用不同的数据源。幸运的是,过滤器控件选项用于两个数据源

为什么DataStudio在为两者使用相同的数据源时给出错误的结果?因为DS试图优化并只在一个查询中获得结果,这会交叉连接(错误地)两个嵌套列。您可以通过查看BigQuery日志找到查询


您可以在

上找到并使用我的共享表,谢谢您的回复。我用了你的变通方法,现在看来它能奏效。但有一件事我仍然感到困惑。当我查找DataStudio生成的查询时,它们看起来与您的非常不同。我的问题显示在原始问题中。您可以看到有两个
交叉连接
语句。您的查询似乎非常不同,这是为什么?感谢您为我报告此错误。然而,我很困惑接下来会发生什么。我没有在issuetracker上看到任何重要的活动(除非我遗漏了什么,因为我没有使用它的任何经验)。这不是一个相当重要的问题吗?为什么我没有收到任何关于它的反馈?我在这里提出了一个bug-然而,这里的解决方案虽然很适合在同一个报告中的单独图表中显示数字(因为DS将运行单独的查询)。我们不能在不同的层次上对两个数字进行加和除/乘。-如果我们想将父巢和子巢中的两个数字相加并将它们分开,这是行不通的。e、 g.
SUM(交易.电子商务采购)/COUNT(不同的交易.项目.项目id)
似乎与?