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

时间:2018-04-25 07:39:35

标签: google-bigquery powerbi

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

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

BigQuery repeated / nested fields

但是,当使用Power BI连接到这个BigQuery表时,我只获得了一些字段(见下文)

Power BI Report canvas

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

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

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

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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。

相关问题