在 Power BI 中使用 BigQuery 重复/嵌套字段

Posted

技术标签:

【中文标题】在 Power BI 中使用 BigQuery 重复/嵌套字段【英文标题】:Using BigQuery repeated / nested fields in Power BI 【发布时间】:2018-04-25 07:39:34 【问题描述】:

问题:将 Power BI 连接到具有重复/嵌套字段的 BigQuery 表(使用本机 BQ 连接器)时,这些字段不会出现在 Power BI 中以用于创建报表。

示例:使用名为 bigquery-public-data:samples 的公共 BigQuery 数据集,有一个名为 github_nested 的表,其中包含重复字段,例如 payload.pages.action(见下文)

但是,当使用 Power BI 连接到此 BigQuery 表时,我只能获得少数字段(见下文)

据我了解,这是因为 Power BI Big Query 连接器不支持重复/嵌套或记录字段。

问题:在构建 Power BI 报表时,是否可以使用 BigQuery 表中的所有列/字段(无论它们是否重复/嵌套/记录),特别是使用通过本机 Power BI Big Query 连接器进行实时连接?

我在 BigQuery 中确实具有写入权限,因此如果作为解决方案的一部分需要,可以在这些表上创建具有重复/嵌套字段的视图。

一种可能的解决方法可能是在 Big Query 中创建一个视图,该视图取消嵌套重复字段,然后将 Power BI 连接到所述视图。接受任何解决方法建议。

任何帮助将不胜感激。

【问题讨论】:

好像不支持这个,有一个FR here,但目前没有太大的吸引力。 感谢@GuillemXercavins。是的,我还了解到 Power BI BigQuery 连接器不支持重复/嵌套列,但是,我想知道是否有任何解决方法可以启用这些列的报告?例如,一个想法可能是在 Big Query 中创建一个视图,该视图取消嵌套重复字段,然后将 Power BI 连接到所述视图。接受任何解决方法建议。 是的,这可能是最好的选择 感谢@GuillemXercavins,但是我不确定如何执行此操作,或者这是否确实是最好的方法。这就是我提出这些问题的原因,看看是否有人以前可能已经成功地做到了这一点,或者是否有比我更了解 BigQuery 的人可以提供帮助。 【参考方案1】:

Power BI 没有(截至 2018 年 10 月 29 日)本机 Big Query 连接器,它仅使用通用 ODBC 连接器。我建议不要将它用于生产,目前的限制是:

如果您的结算项目与数据集项目不同,则不支持 GCP 结算帐号 不支持 Google 服务帐户 不支持嵌套和重复字段 请求未优化(错误的 finops) 不支持通过 Big Query 链接到 Google 表格的数据集 某些数据类型未正确处理 无法手动编辑请求(以 BQ 标准 SQL 为例)

在这篇文章中了解更多(我是作者):https://medium.com/@remy_david/which-bi-tool-for-big-query-d9eb838ff7ad

【讨论】:

【参考方案2】:

products-and-stocks 表的示例架构:

[
  
    name: 'timestamp',
    type: 'TIMESTAMP'
  , 
    name: 'data',
    type: 'RECORD',
    mode: "REPEATED",
    fields: [
      
        name: 'itemId',
        type: 'STRING'
      , 
        name: 'prodId',
        type: 'STRING'
      , 
        name: 'name',
        type: 'STRING'
      , 
        name: 'stockA',
        type: 'INTEGER'
      , 
        name: 'stockB',
        type: 'INTEGER'
      , 
        name: 'stockQ',
        type: 'INTEGER'
      , 
        name: 'stockD',
        type: 'INTEGER'
      , 
        name: 'stockE',
        type: 'INTEGER'
      , 
        name: 'weight',
        type: 'INTEGER'
      , 
        name: 'size',
        type: 'RECORD',
        fields: [
          
            name: 'length',
            type: 'INTEGER'
          , 
            name: 'width',
            type: 'INTEGER'
          , 
            name: 'height',
            type: 'INTEGER'
          
        ]
      , 
        name: 'cnt',
        type: 'INTEGER'
      , 
        name: 'cntInBox',
        type: 'INTEGER'
      , 
        name: 'lifetime',
        type: 'INTEGER'
      , 
        name: 'barcode',
        type: 'STRING',
        mode: 'REPEATED',
      , 
        name: 'dateStockUpdate',
        type: 'TIMESTAMP'
      , 
        name: 'label',
        type: 'STRING'
      , 
        name: 'comment',
        type: 'STRING'
      , 
        name: 'commentPack',
        type: 'STRING'
      , 
        name: 'skuBox',
        type: 'INTEGER'
      , 
        name: 'snRuleRegularExpression',
        type: 'STRING'
      
    ]
  
]

在 BigQuery 中创建展平查询并将其保存为视图。

SELECT 
  `timestamp`, 
  repeated.*, 
  repeated.size.length as `size_length`, 
  repeated.size.width as `size_width`, 
  repeated.size.height as `size_height`, 
  ARRAY_TO_STRING(barcode, ", ") as barcodesFlat 
FROM 
  `my-project-id.my-dataset.products-and-stocks`
CROSS JOIN UNNEST(`data`) as repeated

将此视图导入 Power BI。

【讨论】:

以上是关于在 Power BI 中使用 BigQuery 重复/嵌套字段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有平台、steam_id、event_name 过滤器的 bigquery 在 power bi 中编写查询以查找过去 28 天的 firebase 事件详细信息?

Power BI Python 在Power BI Desktop中Python代码如何使用Power Query数据

power bi 中 如何 排序 列?

power bi 如何获取数据做可视化

在 Power Bi 中使用 Power Query M 的上一周日期

power bi如何抓取连续的分秒