【问题标题】:Google BigQuery Appending / Updating dataGoogle BigQuery 追加/更新数据
【发布时间】:2013-10-31 19:13:34
【问题描述】:

作为背景,我一直在研究将 Google BigQuery 用作 BI 类型工具的后端平台。我想指出我还没有使用过 BigQuery,所以我的问题是关于我在文档中看到的内容。

高级计划是——或许——让 Big Query 作为基于 Tableau 构建的仪表板的“实时”源。

显然,加载数据的最佳方式是使用 JSON 的非规范化结构(支持嵌套)

我看到我的 JSON 看起来像这样:

{
    FirstName: 'John',
    LastName: 'Doe',
    Orders: {
        orderNo: 12345, 
        orderDate: '2013-01-01'
        orderlines: {
          lineNo: 1,
          qty: 1,
          price: 12,
          productId: 1234
          productName: 'Learning System',
         productSubsystem: 'SUB'
       }
    },
    LeadScores: {
       {
        scoreName: 'Learning Tech',
        scoreValue: 123,
        scoreDate: '2013-01-01'
       },
       {
       scoreName: 'ScoreB',
       scoreValue: 15,
       scoreDate: '2013-01-01'
       }
    },
    Activities {
     ** email opens, email clicks, page view, etc. (all here) **
      {
        activityType: 'email',
        activityAction: 'open',
        activityDescription 'message-1234'
      }
    }

}

现在我的问题:

我可以将记录附加到“内部”集合(比如我想每天附加更多活动)吗?还是它需要是另一个实体? (就像洞JSON是一个单一的实体)

这种结构是否有意义,或者如果有“3”个左右的实体(活动、订单、人口统计、分数)并使用 JOIN 会更好吗?我读到 BigQuery 不喜欢使用 JOIN。

一个潜在的结构可能是

分数:

 {  
   date: '2013-01-01',
   scoreName: 'Score A',
   scoreValue: '1234',
   customerId: '123456'
 }

对于活动:

 {  
   date: '2013-01-01',
   activityType: 'email',
   activityAction: 'open',
   extra: '',
   customerId: '123456'
 }

人口统计

  {
       customerId: '123456',
       firstName: 'A',
       lastName: 'B', etc..

  }

哪种方法更有意义?

谢谢!

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    问题 a) 很简单:您可以添加行和列,但不能更改现有行。将数据添加到现有行的嵌套结构中,将符合更改所述行的条件 - 因此不可能。

    问题 b) 是一个设计问题。您已经掌握了基础知识,但在不了解您的查询模式的情况下,很难优化。 BigQuery 足够灵活,可以双向工作,但优化需要更多数据。

    一个好的经验法则是存储很便宜:您可以保留规范化和非规范化数据 - 并根据查询进行选择。最好的模式会以这种方式快速出现!

    【讨论】:

    • 是的,我不想尝试在圆孔中安装方钉。我需要多考虑一下。我在 bigquery 上查看了您的 subreddit。那里的东西很棒。遗憾的是,GA 数据仅对高级客户可用。这么大的潜力!再次感谢
    • 是的,BQ 上的分析功能非常强大。在设计上,一个好的经验法则是存储很便宜:您可以保留规范化和非规范化数据 - 并根据查询进行选择。
    猜你喜欢
    • 2021-06-28
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多