gpt4 book ai didi

dynamic - 按日期对表进行分段的 BigQuery 最佳实践

转载 作者:行者123 更新时间:2023-12-02 20:41:58 25 4
gpt4 key购买 nike

我对柱状数据库概念尤其是 BigQuery 很陌生。我注意到,为了性能和成本效率,建议不仅在逻辑上而且还按时间跨表分割数据。

例如 - 虽然我需要一个表来存储我的日志(1 个称为“logs”的逻辑表),但实际上为不同时期创建一个单独的表被认为是一个很好的做法,例如“logs_2012”、“logs_2013” ”等...甚至“logs_2013_01”、“logs_2013_02”等...

我的问题:

1) 这实际上是最佳实践吗?

2) 最好在哪里划清界限——年度表格?每月表?每日一 table ?你明白了...

3)在通过查询检索数据方面 - 最好的方法是什么?我应该使用 UNION 选项动态构建查询吗?如果我将所有日志放在一张表中 - 我自然会使用 where 子句来获取所需时间范围内的数据,但是将数据分布在多个表中会变得很奇怪。我来自关系数据库的世界(如果到目前为止还不是很明显的话),我正在努力尽可能顺利地实现这一飞跃......

4)使用分布式方法(不同时期的不同表)仍然会引发以下问题:在查询数据本身之前 - 我希望能够确定特定日志类型 - 可用的是什么查询范围。例如,对于一台特定的机器,我想首先向我的用户展示其可用日志的相关范围,并让他们选择该范围内的特定时期来获取见解。问题是 - 当我的数据分布在多个表(每个表一个时期)上,而我不知道哪些表可用时,如何构造这样的查询?当我不知道哪些表存在时,如何构造查询?当该表实际上不存在时,我可能会尝试访问表“logs_2012_12”,或者最糟糕的是 - 我不知道哪些表相关且可用于我的查询。

希望我的问题有意义......

阿米特

最佳答案

表命名

对于每日表格,建议的表格名称模式是表格的具体名称 + 日期,如“20131225”。例如,“logs20131225”或“logs_20131225”。

理想的聚合:日、月、年?

这个问题的答案将取决于您的数据和查询。

  • 您通常会查询一两天的数据吗?然后使用每日表,您的成本会低得多,因为您只查询所需的数据。
  • 您通常会查询所有数据吗?然后将所有数据放在一张表中。随着要查询的表数量的增加,一个查询中包含多个表可能会变得更慢。
  • 如果有疑问,请同时进行!你可以有每日、每月、每年的表格。对于仅针对预期数据的查询,您可以节省大量存储成本,从而节省大量存储成本。

工会

随意建立工会。

  • 请记住,每个查询最多有 1000 个表。这意味着如果您有每日表,您将无法查询 3 年的数据 (3*365 > 1000)。
  • 请记住,BigQuery 中的联合不使用 UNION 关键字,而是使用其他数据库用于联接的“,”。 BigQuery 中的联接可以使用显式 SQL 关键字 JOIN(或用于非常大的联接的 JOIN EACH)来完成。

表发现

  • API:tables.list将通过 API 列出数据集中的所有表。
  • SQL:查询 SQL 中的表列表...敬请关注。

关于dynamic - 按日期对表进行分段的 BigQuery 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20544040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com