イクジニアブログ

育児 + エンジニア = イクジニア

BigQuery 2022/2月のupdate情報まとめ

f:id:nii_yan:20220321101308p:plain 花粉が厳しい季節になってきましたね。今年の花粉かなりきています・・・・

それでは先月までに引き続き2月のまとめもいってみましょう!

nii-yan.hatenablog.com

再帰クエリが使用可能に

Preview

WITH RECURSIVE句を使った再帰クエリが使用可能になりました。

WITH RECURSIVE
  T1 AS ( (SELECT 1 AS n) UNION ALL (SELECT n + 1 AS n FROM T1 WHERE n < 3) )
SELECT n FROM T1

上記の例ですと WITH句で指定したT1をWITH句内で自己参照出来るようになっており、 n < 3 の条件を満たすまでループします。
深い階層構造になってしまっているテーブルからデータを取り出す際に今までだと深いネスト構造のクエリを書かないといけなかったのが、再帰処理でシンプルに書けるようになります。

また、再帰処理の注意点として書き方によっては無限ループになってしまいますが、試してみたところ以下の警告が出て処理が途中で終わりました。

A recursive CTE has reached the maximum number of iterations: 100.

どうやら、100回の再帰までしか認められていないようです。

BigQuery移行の事前評価が可能に

Preview

BigQuery Migration Serviceの一部として移行の事前評価が可能となりました。
(現在はteradataのみサポート)

teradataからメタデータを抽出し、結果をBQに格納。移行に関するレポートをデータポータル上で表示することが可能です。

レポートの項目例としては

  • テーブルの使用状況

  • クエリ(使用時間も出るので、データ転送するのに最適な時間もわかる)

  • SQL変換(何本のクエリが自動変換可能か)

  • 不要なテーブル 

などなど、現状から移行するために役立つレポートが抽出されます。

これは便利だな〜って思ったのですが・・・・自身のBigQueryに対したこのようなレポートも欲しくなりました。

INFORMATION_SCHEMAでOmniの結果を取得可能に

Preview

INFORMATION_SCHEMA.JOBS_ と INFORMATION_SCHEMA.RESERVATION でBigQueryOmniの結果を取得出来るようになりました。
AWSとAzureに対応しています

信頼性に関するドキュメントの追加

以下の4つの新rないせいについてドキュメントが追加されました。

  • インポートの信頼性

  • クエリの信頼性

  • 読み取りの信頼性

  • 障害対策

例えば、インポートでいうとどういうインポート方法があって、それぞれのメリデメ、上限、ユースケースなど書かれています。
BQの挙動理解にも大変助かるドキュメントになっているかと思います。

分析関数の結果をフィルタリング可能に

Preview -> GA

分析関数(Window関数)の結果をQUALIFY句でフィルタリング出来るようになりました。
これによりサブクエリなど使わずにシンプルにクエリが書けるようになります。

SELECT
  item,
  RANK() OVER (PARTITION BY category ORDER BY purchases DESC) as rank
FROM Produce
WHERE Produce.category = 'vegetable'
QUALIFY rank <= 3

ストリーミング処理のメタデータを参照可能に

Preview -> GA

INFORMATION_SCHEMA.STREAMING_TIMELINE_* を使って、ストリーミング処理のメタデータを参照可能になりました。

テーブルのクローンを作成可能に

Preview

コピー元テーブルとは別の書き込み可能なコピーを作成出来るようになりました。 (読み込みのみで良い場合はsnaposhotを使用)

ストレージ料金は元テーブルとの差分のみとなります。

f:id:nii_yan:20220321100453p:plain

以下のようなユースケースに良さそうです

  • work領域にデータを持って行き、自分で変更などしたい

  • 開発やSTGにて本番データを使ったデータの変更を含むテストをしたい

ストレージコストの節約にかなり役立ちそうです!!

リモート関数が使用可能に

Preview

BigQueryからCloudFunctionsが呼び出せるようになりました! (使うには現在こちらのformから申請が必要)

UDFではSQL/JSでの記載でしたが、CloudFunctionsで使える言語を使って関数の作成が可能になりました。
外部通信もできるので、クエリだけで外部APIからデータを取得しBQに入れるといった簡易的なパイプラインも作成可能になりました。

実際に使用感をお伝えしたかったのですが、申請が遅かったのか未だ使えずでして、どこかでお伝えできたらと思います。

2月のリリースは以上となります。また来月まとめたいと思います!!