Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wip: BigQueryにおけるスキャン量の削減方法についてのプラクティス #38

Open
takegue opened this issue Aug 28, 2022 · 0 comments

Comments

@takegue
Copy link
Owner

takegue commented Aug 28, 2022

BigQuery の 分割テーブル について

BigQueryにおいてはスキャン量を削減する仕組みとして分割テーブルが存在する。

  • 基礎: カラム選択による削減
  • 日付シャーディングテーブル: TABLE_SUFFIX 疑似カラムによるスキャン量の削減. `'project.dataset.table*'で指定するやつ
  • パーティションテーブル: _PARTITIONTIME 疑似カラム や パーティションカラム によるスキャン量の削減
  • クラスタインデックスによる削減
  • マテリアライズドビューによるクエリ書き換えによる削減
  • 検索インデックスによる削減

パーティションのプルーニングに関する機能

  • パーティションカラムに対するプルーニングの評価

  • SELECT式におけるGROUP BY
    -疑似カラムに対する計算

  • ViewやTVFにおいてもパーティションの機能

WITH 
BASE AS (
  SELECT 
    _PARTITIONTIME as __PARTITIONTIME
    , #... 
  FROM
    mytable
)
, AGG AS (
  SELECT 
    __PARTITIONTIME
    , # ... 
  FROM
    BASE
  GROUP BY
    __PARTITIONTIME, # ...
)

SELECT 
  *
FROM 
  AGG
WHERE
  __PARTITIONTIME = TIMESTAMP("2017-10-01") -- 擬似列を利用しスキャン量が抑えられる
  • シャーディング用のワイルド―カードにおけるプルーニング
  • クラスタリングインデックスにおけるプルーニング
@takegue takegue added the draft label Aug 28, 2022
@takegue takegue self-assigned this Aug 28, 2022
@takegue takegue changed the title wip: BigQueryのパーティションのプルーニング wip: BigQueryno Aug 28, 2022
@takegue takegue changed the title wip: BigQueryno wip: BigQueryにおけるスキャン量の削減方法についてのプラクティス Aug 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant