You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI中从Google BigQuery的JSON列提取data.name字段求助

解决Power BI连接BigQuery时提取ARRAY类型的data.name字段问题

问题背景

你的BigQuery表中有一个data列,类型为:

ARRAY<STRUCT<
  id STRING,
  status STRING,
  name ARRAY<STRUCT<code STRING, value STRING>>,
  description ARRAY<STRUCT<code STRING, value STRING>>
>>

需要提取其中的data.name字段(保留ARRAY<STRUCT<code STRING, value STRING>>格式)并命名为data.name,但原SQL使用MAX(name.value)仅返回单个值,不符合需求。

正确SQL写法

场景1:提取所有data元素的完整name数组

如果不需要过滤name.code,仅提取每个data元素的name数组:

  • 拆分每个data元素为单独行,同时提取name字段:
SELECT
  t.* EXCEPT(data),
  data.name AS `data.name`
FROM
  your_table t
CROSS JOIN UNNEST(t.data) AS data
  • 保留原表行结构,合并所有data元素的name数组为一个大数组:
SELECT
  t.* EXCEPT(data),
  ARRAY_CONCAT_AGG(data.name) AS `data.name`
FROM
  your_table t
CROSS JOIN UNNEST(t.data) AS data
GROUP BY t.* EXCEPT(data)

场景2:提取code为'en'的name条目(保留数组结构)

如果需要过滤出name.code = 'en'的条目,同时保留ARRAY<STRUCT>格式,使用数组构造子查询:

SELECT
  t.* EXCEPT(data),
  ARRAY(
    SELECT AS STRUCT name.code, name.value
    FROM UNNEST(t.data) AS data_element
    CROSS JOIN UNNEST(data_element.name) AS name
    WHERE name.code = 'en'
  ) AS `data.name`
FROM
  your_table t

原SQL问题说明

你之前的SQL使用MAX(name.value)会将符合条件的value聚合为单个字符串值,而非保留ARRAY<STRUCT>的数组结构,因此无法得到预期的输出格式。

内容的提问来源于stack exchange,提问作者Mounica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:23:15