イクジニアブログ

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

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

5月にも面白い機能が色々出ました!! 行ってみましょう!

照合順の指定が可能に

Preview

COLLATEを使って文字列の並べ替え方法や比較方法を指定出来るようになりました。
例えば文字列の並び替えは文字コードによって変わりますよね。どの文字コードのソート順にするかは Linuxの場合LANG設定で変えていたりしたと思います。

そのような操作がBQでも出来るようになりました!
現在指定出来るのは、大文字小文字の区別を無くす指定方法のみです。

-- 文字列の大文字小文字の区別をなくした場合
SELECT *
FROM UNNEST([
  COLLATE('B', 'und:ci'),
  'b',
  'a'
]) AS character
ORDER BY character

+-----------+
| character |
+-----------+
| a         |
| B         |
| b         |
+-----------+
-- 大文字小文字の区別あり
SELECT *
FROM UNNEST([
  'B',
  'b',
  'a'
]) AS character
ORDER BY character

+-----------+
| character |
+-----------+
| B         |
| a         |
| b         |
+-----------+

大文字の B に対してCOLLATE関数を挟んだことで order by の結果が違っていることがわかるかと思います。

文字列の比較にも使用できます

select 'a' = COLLATE('A', 'und:ci');

true

COLLATEはカラム単位ではなく、テーブルのデフォルト値としても使用することが出来ます。

CREATE TABLE (...)
DEFAULT COLLATE 'und:ci'

現在COLLATEで指定出来る照合順は und:ci のみでこちらは大文字小文字の区別を無くすという指定です。

時刻 日付のフォーマットに%Jが追加

DATE,DATETIME,TIMESTAMP関数の日付フォーマットに%Jが追加されました。
%Jは ISO 8601の1から始まる年です。

一部Metricsの遅延が短縮

query/statement_scanned_bytesとquery/statement_scanned_bytes_billedのmetricsが今まで最大(?)6時間遅延だったのですが、180秒以内に見られるようになりました。 Metrics毎にどの程度の遅延で見られるかは決まっていますので、metricsのページを参照してください。

Informaticaのデータをload出来るように

GA

InformaticaのデータをGUIからload出来るようになりました。

動的データマスキングが可能に

Preview

カラムレベルでの動的なデータマスキングが可能となりました。

やり方はまず、DataCatalogでポリシータグを作ります その際にマスキングルールも指定出来ます (BigQuery Data Policy APIが有効になっていない場合はデータポリシーを作る際にエラーとなります)

テーブルのスキーマの編集ボタンから

マスクをしたいカラムを選んでADD POLICY TAGからポリシータグを付与します

ポリシータグが付与された様子

これらの設定をすれば、ポリシーで指定したプリンシパル(個人アカウントやgoogle group)がクエリをした際に、ポリシータグがついてるカラムの値はマスクされて出力されます。

マスキングルールでnull化、デフォルト値を指定した場合が元の値に関わらず同一の結果が返ってきてしまうので、joinや集計関数の使用には注意してください。
マスキングルールでハッシュを選んだ場合には同じ値からは同じハッシュが作られるので、joinや集計も可能です。

5月の更新は以上となります!また来月!!!