BigQuery のデータ準備機能を触ってみた(Preview)
こんにちは!エノカワです。
BigQuery で データを準備する機能が プレビュー になりました。
BigQuery provides context-aware transformation recommendations from Gemini for cleansing data for analysis. Data preparation is available in Preview.
以前からプレビューされていた機能ですが、試してみたことはありませんでした。
今回は、この機能を実際に触ってみましたので、その内容をご紹介します。
データ準備(Data preparation)とは?
BigQuery の AI を活用したデータ準備機能です。
Gemini を使用してデータとスキーマを分析し、データのクリーニング、変換、拡充のためのインテリジェントな提案を提供します。
これにより、手動によるデータ準備タスクに費やす時間と労力を大幅に削減できます。
データ準備機能によって生成された SQL は、Dataform データ エンジニアリング パイプラインの一部となります。
使用するテーブル
データ準備を行うテーブルを用意します。
今回は、タスク管理データを取り込んだテーブル(task_management_raw
)を使用しました。
タスク管理データ
タスクID | タスク名 | 期日 | ステータス | 担当者 | 優先度 | 自由記述 | 完了日 |
---|---|---|---|---|---|---|---|
1 | 企画書作成 | 2025/1/20 | 未着手 | 田中 | 高 | 今週中に企画書のたたき台を作成する。 | |
2 | 顧客への提案資料作成 | 2025/01/25 | 進行中 | 佐藤 | 中 | 先週のヒアリング内容を元に、提案資料を作成する。 | |
3 | 契約書確認 | 2025/01/31 | 完了 | 鈴木 | 低 | 法務部との契約書確認が完了。 | 2025-02-05 |
4 | 請求書発行 | 2025/2/5 | 進行中 | たなか | 高 | 顧客Aへの請求書を発行する。 | |
5 | 会議資料準備 | 2025/02/10 | 佐藤 | 中 | 次回の会議資料を準備する。 | ||
6 | 顧客からの問い合わせ対応 | 2025/02/15 | 完了 | 鈴木 | 低 | 顧客Bからの問い合わせに対応完了。 | 2025-02-16 |
7 | 新規顧客リスト作成 | 2025/2/20 | 未着手 | たなか | 中 | 新規顧客リストを作成し、営業部に共有する。 | |
8 | 営業戦略会議 | 2025/02/25 | 進行中 | 佐藤 | 高 | 来期の営業戦略について会議を行う。 | |
9 | 研修資料作成 | 2025/02/28 | 完了 | 鈴木 | 低 | 新入社員向けの研修資料を作成した。 | 2025-03-01 |
10 | システムテスト | 2025/3/5 | 進行中 | 田中 | 中 | システムのテストを行う。 | |
11 | 顧客訪問 | 2025/03/10 | 佐藤 | 高 | 顧客Cを訪問し、提案内容を説明する。 | ||
12 | 報告書作成 | 2025/03/15 | 完了 | 鈴木 | 低 | 今月の営業活動に関する報告書を作成した。 | 2025-03-18 |
13 | 新規サービス企画 | 2025/3/20 | たなか | 中 | 新規サービスの企画を立案する。 | ||
14 | 契約内容確認 | 2025/03/25 | 進行中 | 佐藤 | 高 | 契約内容に不備がないか確認する。 | |
15 | 請求書送付 | 2025/03/31 | 完了 | 鈴木 | 低 | 顧客Dに請求書を送付した。 | 2025-03-30 |
16 | 営業部会議資料作成 | 2025/1/18 | 完了 | 田中 | 中 | 営業部会議で使用する資料を作成する。 | 2025-01-19 |
17 | 新規顧客へのアプローチ | 2025/01/22 | 進行中 | 佐藤 | 高 | 新規顧客へのアプローチを行う。 | |
18 | 契約締結 | 2025/01/28 | 完了 | 鈴木 | 低 | 顧客Eとの契約を締結した。 | 2025-01-30 |
19 | 請求書発行 | 2025/2/3 | 進行中 | たなか | 高 | 顧客Fへの請求書を発行する。 | |
20 | 顧客からの質問対応 | 2025/02/08 | 佐藤 | 中 | 顧客Gからの質問に対応する。 | ||
21 | 研修資料レビュー | 2025/02/13 | 完了 | 鈴木 | 低 | 研修資料のレビューを行った。 | 2025-02-16 |
22 | 新規サービス説明会準備 | 2025/2/18 | 進行中 | たなか | 高 | 新規サービスの説明会を準備する。 | |
23 | 営業戦略資料作成 | 2025/02/23 | 未着手 | 佐藤 | 中 | 営業戦略に関する資料を作成する。 | |
24 | 顧客アンケート実施 | 2025/02/27 | 完了 | 鈴木 | 低 | 顧客アンケートを実施した。 | 2025-02-28 |
25 | システム保守作業 | 2025/3/3 | 進行中 | 田中 | 中 | システムの保守作業を行う。 | |
26 | 顧客への提案書作成 | 2025/03/08 | 佐藤 | 高 | 顧客Hへの提案書を作成する。 | ||
27 | 契約更新手続き | 2025/03/13 | 完了 | 鈴木 | 低 | 顧客Iとの契約更新手続きを行った。 | 2025-03-15 |
28 | 請求書発行 | 2025/3/18 | 進行中 | 田中 | 高 | 顧客Jへの請求書を発行する。 | |
29 | 顧客からの要望ヒアリング | 2025/03/23 | 未着手 | 佐藤 | 中 | 顧客Kからの要望をヒアリングする。 | |
30 | 報告書レビュー | 2025/03/28 | 完了 | 鈴木 | 低 | 報告書のレビューを行った。 | 2025-03-29 |
データ準備手順を作成する
テーブルが用意できたので、データ準備手順を作成してきましょう。
task_management_raw
テーブルの [クエリ] から [データの準備] を選択します。
データ準備エディタのタブが開き、テーブルの代表的なサンプルを含むデータビューが表示されました。
データビューでは、データ準備手順を作成することができます。
Gemini による提案
右側に [Gemini による提案] が表示されていますね。
Gemini が、コンテキストに応じた候補を提案し、データ準備タスクを支援してくれます。
型の変換:Gemini の候補を適用
due_date
カラムに対して、Gemini から以下の提案がありました。
Converts column due_date from type string to date with the following format(s): '%Y/%m/%d'
COALESCE(SAFE.PARSE_DATE('%Y/%m/%d', due_date))
due_date
カラムはSTRING型で日付のフォーマットがバラバラです。
DATE型への変換を提案されているので適用しましょう。
[プレビュー] で適用後のデータを確認することができます。
変換後のデータに問題なさそうです。
[適用] することで、ステップが追加されました。
提案されたステップ が (1) から (2) になっています。
1番目のステップはtask_management_raw
テーブルデータのロードです。
2番目のステップとして、DATE型への変換が追加された形です。
NULL値の置き換え:手動でステップ追加
カラムを選択して、提案を絞り込むことができます。
status
カラムを選択してみましょう。
status
カラムは、未着手
、進行中
、完了
のいずれかの値を取るべきですが、空白(NULL値)となっているレコードがあります。
NULL値は未着手
に置き換えたいのですが、Gemini からの提案には含まれていません。
このような場合は、手動でステップを追加することができます。
[ステップを追加] から [変換] を選択します。
提案のプレビューの説明欄に以下を入力して実行します。
null を '未着手に変換'
すると、Gemini がSQLを提案してくれました!
This expression replaces null values in the status column with '未着手'.
IFNULL(status, r'未着手')
[プレビュー] して、想定したデータになっているか確認します。
問題なさそうなので、[適用] してステップを追加します。
表記揺れの修正:例を使用して候補を改善
使っていて「面白いな」と思う機能がありました。
assignee
カラムを選択します。
田中
とたなか
は同一人物ですが、表記が統一されていません。
田中
に統一したいのですが、Gemini からの提案には含まれていません。
このような場合は、セルの値を手動で編集します。
たなか
を田中
に変更してみましょう。
すると、Gemini がSQLを提案してくれました!
Standardize assignee names by replacing '田中' with '田中'.
CASE
WHEN assignee = 'たなか' THEN '田中'
ELSE assignee
END
編集内容をもとに Gemini がこちらの要望を察してくれたようです。
[プレビュー] して、想定したデータになっているか確認します。
問題なさそうなので、[適用] してステップを追加します。
テーブル作成
変換ステップを追加以降、データビュー右上に以下の警告メッセージが表示されていました。
Data preparation has node(s) without a destination and not referred by any other nodes
これは、データ準備のステップに送信先(宛先テーブル)が無いために表示されています。
最後のステップとして、宛先テーブルを追加しましょう。
これにより、データ準備の出力をテーブルに書き込むことができます。
[ステップを追加] から [送信先] を選択します。
宛先テーブルの情報を入力して、[保存] するとステップが追加されます。
ステップリスト
[適用されたステップ] をクリックすると、ステップリストが表示されます。
ステップリストでは、ステップの編集や削除ができます。
グラフビュー
データビュー左上の [Graph] をクリックすると、グラフビューが表示されます。
グラフビューでは、データ準備の概要を視覚的に確認できます。
データ準備を実行する
それでは、データ準備を実行してみましょう!
まず、実行するための構成を行います。
構成前は、[実行] が無効化されていますので、[構成] をクリックします。
構成画面では、データ準備を実行するサービスアカウントを選択して [保存] します。
[実行] が有効化されたので、クリックします。
作成したデータ準備手順のクエリジョブがバックグラウンドで実行されます。
実行が完了し、task_management
テーブルが作成されました。
ちなみに、データ準備手順は自動で保存されるようです。
エクスプローラの [データの準備] にtask_management_raw のデータの準備
という名前で保存されていることが確認できます。
まとめ
以上、BigQuery のデータ準備機能を触ってみました。
実際に使ってみて、以下の点が便利だと感じました。
- BigQuery コンソール上でデータを確認しながらデータ準備を行うことができる
- Gemini の支援を受けながら、データ変換のSQLを自動生成できる
- GUI操作で、直感的にデータ準備のステップを追加できる
今回は、データの型変換、NULL値の置換、表記揺れの修正といった変換処理のみを試しましたが、他にも以下のようなステップを追加することができます。
- カラムの追加: 新しいカラムを作成し、既存カラムの変換結果を格納する
- フィルタ: 特定の条件に合致するデータのみを抽出する
- 結合: 複数のテーブルを結合して、データを統合する
また、作成したデータ準備手順はスケジュール実行することも可能です。
例えば、毎日決まった時間にデータを変換して、最新のデータで分析を行うといったことも実現できます。
これらの機能も機会があれば、触ってみようと思います。
今回ご紹介したデータ準備機能、ぜひ皆様の業務でも活用してみてはいかがでしょうか?