如何在BigQuery中创建适配PowerBI的含数组列的视图?
针对BigQuery数组列导入PowerBI的优化方案
方案1:直接在Power Query中处理数组(无需BigQuery视图)
跳过BigQuery建视图的步骤,在PowerBI导入数据阶段完成数组展开:
- 把BigQuery表导入PowerBI后,进入Power Query编辑器
- 找到数组列,点击列标题旁的展开图标,选择「展开到新行」
- 生成的表会包含所有原字段+展开后的数组元素,同一ID的非数组字段会重复,但可以通过以下方式解决:
- 在建模界面将ID列设为「主键」
- 使用DAX函数
MAX([非数组字段])获取唯一值(同一ID下该字段值一致,MAX不改变结果) - 若要保留原表非重复结构,可同时导入原表和展开后的表,用ID建立一对多关系,报表中从原表取非数组字段,从展开表取数组元素,彻底避免重复
方案2:BigQuery单视图整合所有字段(优化拆分视图方案)
不用拆分两个视图,直接在BigQuery创建包含全字段+展开数组的视图:
SELECT t.ID, t.字段1, t.字段2, -- 替换成你的实际非数组字段 arr.item AS 数组元素 FROM `你的数据集.目标表` t, UNNEST(t.数组列名) arr
导入该视图到PowerBI后,通过以下方式处理重复问题:
- 用矩阵可视化,行区域放ID和非数组字段,值区域对数组元素做计数、去重等聚合操作
- 用DAX创建计算列,标记每个ID的第一条记录,过滤掉重复的非数组字段展示
方案3:用PowerBI复合模型关联数据
如果需要保留原表非重复结构同时使用数组展开数据:
- 导入原表(忽略数组列的分隔字符串显示)和BigQuery中已展开数组的视图
- 在建模界面建立原表ID与数组视图ID的一对多关系
- 报表中直接从原表拖拽非数组字段,从数组视图拖拽数组元素,PowerBI会自动处理关联,不会出现非数组字段重复
内容的提问来源于stack exchange,提问作者Ron Bailey
相关产品推荐
相关产品推荐

