こんにちは、小林寛和(@hiro-koba)と申します。私はデータエンジニアのための勉強会「Data Engineering Study」の共同主催者をやったり、ETL & ワークフローサービス「trocco®︎(トロッコ)」を運営する株式会社primeNumberの取締役CPOを務めているデータエンジニアです。

データエンジニアの皆さんが普段利用されているDWH/ETL/BIツールに関する最新アップデートや、界隈の最新トピックをまとめて配信しております。
お忙しい方や、サクッと最新情報をキャッチアップしたい方向けに、主要なニュースをピックアップして独自にまとめています。

毎月更新でニュースをお届けしていますので、ニュースの新着メール通知をご希望の方はこちらのフォームよりご登録ください。

Google BigQueryのニュースまとめ

INTERVAL型のサポート

これまで日付の演算操作には DATE_ADD, DATE_SUB 関数を利用する際にキーワードとしてINTERVALが使われていましたが、データ型としての機能がリリースされました。PostgreSQLでもサポートされているデータ型です。

クエリ例は以下の通りです。

WITH
  subset AS (
  SELECT
    CURRENT_DATE() now,
    INTERVAL 1 day AS one_day )
SELECT
  *,
  now + one_day,
  now - one_day
FROM
  subset
+---+------------+-------------+---------------------+---------------------+
|   | now        | one_day	   | f0_                 | f1_                 |
+---+------------+-------------+---------------------+---------------------+
| 1 | 2021-08-03 | 0-0 1 0:0:0 | 2021-08-04T00:00:00 | 2021-08-02T00:00:00 |
+---+------------+-------------+---------------------+---------------------+

より詳しく知りたい方は以下の参考リンクもご覧ください。

DMLクエリの結果に統計情報のサポート

DMLクエリの結果に insert, deleted, updated の行数が返す機能がGAリリースされました。また、INFORMATION_SCHEMA.JOBS_BY_* というメタテーブルからも上記の統計情報を照会できるようになりました。

より詳しく知りたい方は以下の参考リンクも御覧ください。

予約ステートメントのサポート

BigQueryを利用にはオンデマンド料金と定額料金のプランがあります。SQLでそれらのリソース(スロット)の購入・確保とprojectへの割当ができるようになりました。利用できる関数は以下のとおりです。

CREATE CAPACITY新しい容量コミットメントを作成して、スロットを購入します。
CREATE RESERVATION予約を作成します。
CREATE ASSIGNMENT
DROP CAPACITY容量コミットメントを削除します。
DROP RESERVATION予約を削除します。
DROP ASSIGNMENT予約割り当てを削除します。

より詳しく知りたい方は以下の参考リンクもご覧ください。

CONTAINS_SUBSTR関数のリリース

CONTAINS_SUBSTRという関数がGAリリースされました。どんな関数かというと、

正規化された大文字と小文字を区別しない検索を実行し、式に値が存在するかどうかを確認します。値が存在する場合は TRUE を返し、存在しない場合は FALSE を返します。

と記載されています。

ここでの式とは文字列だけでなくテーブルやテーブル列を指定することができます。
大文字小文字の区別をなくす他に、NFKCというUnicode正規化の一種を用いて変換した値で判定しているとのこと。制限事項としては、ワイルドカード検索はサポートされていないそうです。

  • アイウエオ => アイウエオ
  • ABC => ABC
  • ① => 1
  • ㌶ => ヘクタール

公式ドキュメントでのSQL例は以下のとおりです。

WITH Recipes AS
 (SELECT 'Blueberry pancakes' as Breakfast, 'Egg salad sandwich' as Lunch, 'Potato dumplings' as Dinner UNION ALL
  SELECT 'Potato pancakes', 'Toasted cheese sandwich', 'Beef stroganoff' UNION ALL
  SELECT 'Ham scramble', 'Steak avocado salad', 'Tomato pasta' UNION ALL
  SELECT 'Avocado toast', 'Tomato soup', 'Blueberry salmon' UNION ALL
  SELECT 'Corned beef hash', 'Lentil potato soup', 'Glazed ham')
SELECT * FROM Recipes;
+-------------------+-------------------------+------------------+
| Breakfast         | Lunch                   | Dinner           |
+-------------------+-------------------------+------------------+
| Bluberry pancakes | Egg salad sandwich      | Potato dumplings |
| Potato pancakes   | Toasted cheese sandwich | Beef stroganoff  |
| Ham scramble      | Steak avocado salad     | Tomato pasta     |
| Avocado toast     | Tomato soup             | Blueberry samon  |
| Corned beef hash  | Lentil potato soup      | Glazed ham       |
+-------------------+-------------------------+------------------+
WITH Recipes AS
 (SELECT 'Blueberry pancakes' as Breakfast, 'Egg salad sandwich' as Lunch, 'Potato dumplings' as Dinner UNION ALL
  SELECT 'Potato pancakes', 'Toasted cheese sandwich', 'Beef stroganoff' UNION ALL
  SELECT 'Ham scramble', 'Steak avocado salad', 'Tomato pasta' UNION ALL
  SELECT 'Avocado toast', 'Tomato soup', 'Blueberry salmon' UNION ALL
  SELECT 'Corned beef hash', 'Lentil potato soup', 'Glazed ham')
SELECT * FROM Recipes WHERE CONTAINS_SUBSTR(Recipes, 'toast');
+-------------------+-------------------------+------------------+
| Breakfast         | Lunch                   | Dinner           |
+-------------------+-------------------------+------------------+
| Potato pancakes   | Toasted cheese sandwich | Beef stroganoff  |
| Avocado toast     | Tomato soup             | Blueberry samon  |
+-------------------+-------------------------+------------------+

より詳しく知りたい方は、以下の参考リンクもご覧ください。

マテリアライズド・ビューの集合関数無し、内部結合がリリース

これまではBigQueryのマテリアライズド・ビューは、集合関数を含む必要があるうえ、結合ができなかったのですが、今回のPreviewリリースでサポートされるようになりました。
制限事項は内部結合(INNER JOIN)のみサポートしていること。外部結合や自己結合は不可とのことです。

より詳しく知りたい方は以下の参考リンクも御覧ください。

その他のアップデート

その他のアップデートは以下のとおりです。

Amazon Redshiftのニュースまとめ

トランザクション内での複数クエリ実行をサポート

新しく追加されたbatch-execute-statementというAPIを利用することで、複数クエリを実行しそれぞれの結果を取得することが可能になりました。なお、これらのクエリは単一のトランザクション内で実行されます。

参考1: AWS公式アナウンス
参考2: DevelopersIOの紹介記事

Snowflakeのニュースまとめ

Google Cloud API Gatewayのサポートの一般提供開始

Google Cloud API Gateway経由でリモートサービスを呼び出すための外部関数サポートの一般提供が開始されました。

アクセス履歴を一般提供開始

以前よりプレビュー提供されていたアクセス履歴の一般提供が開始されました。過去365日(1年)以内のSnowflakeオブジェクト(例: テーブル、ビュー、列)のアクセス履歴を参照することができます。

行アクセスポリシーを一般提供開始

以前よりプレビュー提供されていた行アクセスポリシーの一般提供が開始されました。ポリシーを設定し、行レベルでクエリ結果に表示されるかどうかを制御できます。

Lookerのニュースまとめ

新しいナビゲーションパネルのサポート

Lookerのスクリーンショット

“Enhanced Navigation”のラボ機能が追加されました。
こちらを有効化すると、これまで画面上部にあった各種メニューが左側のナビゲーションパネルに統合されます。デフォルトでは有効化されていないので、「管理 > Labs」メニューから設定を変更する必要があります。

参考: Looker公式ドキュメント

グルーピングとクイック計算

ディメンションの値をグルーピングするカスタムディメンションが、GUIベースで設定できるようになりました。また、よく利用されるテーブル計算を”Quick Calculations”メニューから一操作で呼び出すことができます。
これらの機能は”Custom Fields”のラボ機能を有効化することで利用できます。

参考: Looker公式リリースノート

Googleデータポータルのニュースまとめ

レポートの利用状況を、Google Analytics 4でも計測できるように

レポート利用状況の計測は、これまではユニバーサル アナリティクスのみでしたが、新しく Google Analytics 4 もサポートしました。

ファイル > レポート設定 から Google Analytics 4 の測定IDを設定すると、レポートの利用状況を Google Analytics 4 で分析できるようになります。

参考: Google公式リリースノート

ETLツール「trocco(トロッコ)」のニュースまとめ

データリネージ機能をリリース

データ同士の依存関係を可視化する「データリネージ」機能を追加しました。
troccoでは今後、この機能を皮切りにデータガバナンスを推進するためのメタデータ管理機能を拡充していく予定です。

グラフ上部の「転送モードハイライト」を押すことで、追記方式の転送・洗い替え方式の転送を判別することができます。

GitHub PRレビュー機能

Git連携機能が強化され、転送設定の変更内容を元に連携しているGitHubリポジトリに対して、プルリクエストを作成できるようになりました。
GitHub上で変更内容のレビュー確認ご利用ください。

プルリクエスト作成画面
GitHubプルリクエストページ例

スキーマ変更検知・追従機能

転送元データのスキーマ変更(列追加・削除・型変更など)を検知し、trocco設定・BigQueryテーブル定義に自動反映する機能をリリースしました。

スキーマの変更を検知すると、以下のようなSlack通知が行われます。

通知内のリンクをクリックすると、以下のように変更内容が表示されます。

変更内容を確認したら、「カラム定義に変更を反映」を押すとtrocco設定に自動適用されます。
確認画面では、変更内容をBigQueryに自動反映する事も可能です。


以上、Data Engineering News 2021年7月アップデートまとめでした。

毎月更新でニュースをお届けしておりますので、ニュースの新着メール通知をご希望の方はこちらのフォームよりご登録ください。

こんなニュースを知りたい!というようなご意見・ご要望も著者Twitterアカウントまでお気軽にDM下さい!

hirokazu.kobayashi