1. はじめに
コーディングの専門知識がなくても、分析に備えてデータをより迅速かつ効率的に準備できるとしたらどうでしょう。BigQuery Data Preparation を使用すると、それが現実になります。この強力な機能により、データの取り込み、変換、クレンジングが簡素化され、組織内のすべてのデータ担当者がデータ準備を行うことができます。
商品データに隠された秘密を解き明かす準備はできていますか?
前提条件
- Google Cloud コンソールの基本的な知識
 - SQL に関する基本的な知識
 
学習内容
- ファッションと美容業界の現実的な例を使用して、BigQuery データ準備で元データをクリーニングして、実用的なビジネス インテリジェンスに変換する方法について説明します。
 - クリーニングされたデータのデータ準備を実行してスケジュールを設定する方法
 
必要なもの
- Google Cloud アカウントと Google Cloud プロジェクト
 - ウェブブラウザ(Chrome など)
 
2. 基本的な設定と要件
セルフペース型の環境設定
- Google Cloud コンソールにログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。
 



- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
 - プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は 
PROJECT_IDと識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
 
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
 
3. はじめに
API を有効にする
Gemini in BigQuery を使用するには、Gemini for Google Cloud API を有効にする必要があります。通常、この手順は、serviceusage.services.enable IAM 権限を持つサービス管理者またはプロジェクト オーナーが行います。
- Gemini for Google Cloud API を有効にするには、Google Cloud Marketplace の [Gemini for Google Cloud] ページに移動します。[Gemini for Google Cloud] に移動
 - プロジェクト セレクタでプロジェクトを選択します。
 - [有効にする] をクリックします。ページが更新され、[有効] のステータスが表示されます。これで、必要な IAM 権限を持つすべてのユーザーが、選択した Google Cloud プロジェクトで Gemini in BigQuery を使用できるようになりました。
 
データ準備を開発するためのロールと権限を設定する
- [IAM と管理] で [IAM] を選択します。
 

- ユーザーを選択し、鉛筆アイコンをクリックして [プリンシパルを編集] を選択します。
 

BigQuery データ準備を使用するには、次のロールと権限が必要です。
- BigQuery データ編集者 (roles/bigquery.dataEditor)
 - Service Usage ユーザー (roles/serviceusage.serviceUsageConsumer)
 
4. BigQuery Analytics Hub で「bq data preparation demo」のリスティングを見つけてサブスクライブする
このチュートリアルでは、bq data preparation demo データセットを使用します。これは、BigQuery Analytics Hub のリンク済みデータセットで、読み取るデータセットです。
データ準備では、ソースに書き戻すことはありません。書き込む宛先テーブルを定義するよう求められます。この演習で使用するテーブルには 1,000 行のみが含まれており、費用を最小限に抑えていますが、データ準備は BigQuery で実行され、スケーリングされます。
リンクされたデータセットを見つけてサブスクライブする手順は次のとおりです。
- Analytics Hub にアクセスする: Google Cloud コンソールで BigQuery に移動します。
 - BigQuery のナビゲーション メニューで、[ガバナンス] の下にある [Analytics Hub] を選択します。
 

- リスティングを検索する: Analytics Hub の UI で [リスティングを検索] をクリックします。」
 - 検索バーに「
bq data preparation demo」と入力して、Enter キーを押します。 

- リスティングを定期購入する: 検索結果から 
bq data preparation demoリスティングを選択します。 - リスティングの詳細ページで、[登録] ボタンをクリックします。
 - 確認ダイアログを確認し、必要に応じてプロジェクトまたはデータセットを更新します。デフォルト設定はそのまま使用できるはずです。
 

- BigQuery でデータセットにアクセスする: 定期購入が正常に完了すると、リスティング内のデータセットが BigQuery プロジェクトにリンクされます。
 
BigQuery Studio に戻ります。
5. データを探索してデータ準備を開始する
- データセットとテーブルを見つける: [エクスプローラ] パネルでプロジェクトを選択し、
bq data preparation demoのリストに含まれているデータセットを見つけます。stg_productテーブルを選択します。 - データ準備で開く: テーブル名の横にあるその他アイコンをクリックし、
Open in Data Preparationを選択します。 
データ準備インターフェースでテーブルが開き、データの変換を開始できるようになります。

以下のデータのプレビューに示すように、Google はいくつかのデータに関する課題に取り組んでいます。
- 価格列には金額と通貨の両方が含まれるため、分析が困難です。
 - 商品列には、商品名とカテゴリが混在しています(パイプ記号 | で区切られています)。
 

Gemini はすぐにデータを分析し、いくつかの変換を提案します。この例では、いくつかの推奨事項が表示されています。必要なものは次のステップで適用します。

6. 価格列の処理
次に、[Price] 列を処理します。ご覧のとおり、通貨と金額の両方が含まれています。目標は、これらを「通貨」と「金額」の 2 つの列に分離することです。
Gemini は、[価格] 列に関する推奨事項をいくつか特定しました。
- 次のような推奨事項を見つけます。
 
説明: 「この式は、指定したフィールドの先頭にある「USD」を削除します」
REGEXP_REPLACE(Price,` `r'^USD\s',` `r'')
- [プレビュー] を選択します。
 

- [適用] を選択します。
 
次に、Price 列のデータ型を STRING から NUMERIC に変換します。
- 次のような推奨事項を見つけます。
 
説明: 「列 Price の型を string から float64 に変換」
SAFE_CAST(Price AS float64)
- [適用] を選択します。
 
ステップリストに、適用された 3 つのステップが表示されます。

7. 商品列の処理
product 列には、商品名とカテゴリの両方がパイプ(|)で区切られて格納されます。
自然言語で質問することもできますが、Gemini の強力な機能のもう 1 つを試してみましょう。
商品名をクリーンアップする
|文字を含む商品エントリのカテゴリ部分を選択し、削除します。

Gemini は、このパターンをインテリジェントに認識し、列全体に適用する変換を提案します。
- [編集] を選択します。
 

Gemini の最適化案は的確です。「|」文字の後の部分が削除され、商品名が効果的に分離されます。
しかし、今回は元のデータを上書きしたくありません。
- ターゲット列のプルダウンで、[新しい列を作成する] を選択します。
 - 名前を ProductName に設定します。
 

- 変更内容をプレビューして、問題がないことを確認します。
 - 変換を適用します。
 
商品カテゴリを抽出する
自然言語を使用して、[商品] 列のパイプ(|)の後の単語を抽出するよう Gemini に指示します。この抽出された値は、Product という既存の列に上書きされます。
Add Stepをクリックして、新しい変換ステップを追加します。

- プルダウン メニューから [
Transformation] を選択します。 - 自然言語プロンプト フィールドに「Product 列のパイプライン(|)の後の単語を抽出します。」と入力し、Enter キーを押します。SQL が生成されます。
 

- ターゲット列は「商品」のままにします。
 - [適用] をクリックします。
 
変換の結果は次のようになります。

8. 結合してデータを拡充する
多くの場合、他の情報源からのデータでデータを拡充する必要があります。この例では、商品データをサードパーティのテーブルの拡張商品属性 stg_extended_product と結合します。この表には、ブランドやリリース日などの詳細情報が含まれます。
Add Stepをクリックします。- 「
Join」を選択する stg_extended_productテーブルに移動します。

Gemini in BigQuery は、productid 結合キーを自動的に選択し、キー名が同じであるため、左側と右側を修飾しました。
注: 説明フィールドに「Join by productid」と表示されていることをご確認ください。結合キーが他にもある場合は、説明フィールドを「productid による結合」に上書きし、説明フィールドの生成ボタンを選択して、次の条件 L を使用して結合式を再生成します。
productid
= R。
productid。
- 必要に応じて、[プレビュー] を選択して結果をプレビューします。
 Applyをクリックします。
拡張属性のクリーンアップ
結合は成功しましたが、拡張属性データのクリーニングが必要です。LaunchDate 列の日付形式が一貫しておらず、Brand 列に欠落値が含まれています。
まず、LaunchDate 列について説明します。

変換を作成する前に、Gemini の推奨事項を確認します。
- 列名 
LaunchDateをクリックします。次の画像のような推奨事項が生成されます。 

- 次の SQL を含む推奨事項が表示された場合は、推奨事項を適用し、次の手順をスキップします。
 
COALESCE(SAFE.PARSE_DATE('%Y-%m-%d',
LaunchDate),SAFE.PARSE_DATE('%Y/%m/%d', LaunchDate))
- 上記の SQL に一致する推奨事項が表示されない場合は、[
Add Step] をクリックします。 Transformationを選択します。- [SQL] フィールドに次のクエリを入力します。
 
COALESCE(SAFE.PARSE_DATE('%Y-%m-%d',
LaunchDate),SAFE.PARSE_DATE('%Y/%m/%d', LaunchDate))
Target ColumnsをLaunchDateに設定します。Applyをクリックします。
LaunchDate 列の日付形式が統一されました。

9. 宛先テーブルの追加
これでデータセットがクリーンになり、データウェアハウスのディメンション テーブルに読み込む準備ができました。
ADD STEPをクリックします。Destinationを選択します。- 必要なパラメータ(データセット: 
bq_data_preparation_demoテーブル:DimProduct)を入力します。 Saveをクリックします。

これで、[データ] タブと [スキーマ] タブを使用できるようになりました。これに加えて、BigQuery Data Preparation には、パイプライン内の変換ステップの順序を視覚的に表示する「グラフ」ビューがあります。

10. ボーナス A: メーカー列の処理とエラーテーブルの作成
また、Manufacturer 列に空の値が含まれていることも確認されています。これらのレコードについては、データ品質チェックを実装し、エラーテーブルに移動して詳細な審査を行う必要があります。
エラーテーブルを作成する
stg_product data preparationタイトルの横にあるMoreボタンをクリックします。- [
Setting] で [Error Table] を選択します。 - [
Enable error table] チェックボックスをオンにして、次の設定を行います。 
- データセット: [
bq_data_preparation_demo] を選択します。 - テーブル: 
err_dataprepと入力します。 - [
Define duration for keeping errors] で [30 days (default)] を選択します。 
Saveをクリックします。

メーカー列の検証を設定する
- [メーカー] 列を選択します。
 - Gemini は関連する変換を特定している可能性があります。Manufacturer フィールドが空でない行のみを保持する推奨事項を見つけます。SQL は次のようになります。
 
Manufacturer IS NOT NULL
2. この最適化案の [編集] ボタンをクリックして確認します。

- [検証に失敗した行をエラーテーブルに送信する] オプションがオンになっていない場合はオンにします。
 Applyをクリックします。
適用した変換は、[適用されたステップ] ボタンをクリックすることでいつでも確認、変更、削除できます。

重複する ProductID_1 列をクリーンアップする
結合テーブルの ProductID を複製する ProductID_1 列を削除できます。
- [
Schema] タブに移動します。 - [
ProductID_1] 列の横にあるその他アイコンをクリックします。 Dropをクリックします。
これで、データ準備ジョブを実行してパイプライン全体を検証する準備が整いました。結果に問題がなければ、ジョブを自動で実行するようにスケジュールできます。
- データ準備ビューから移動する前に、準備を保存します。
stg_product data preparationのタイトルの横にSaveボタンが表示されます。ボタンをクリックして保存します。 
11. 環境をクリーンアップする
stg_product data preparationを削除します。bq data preparation demoデータセットを削除する
12. 完了
以上で、この Codelab は完了です。
学習した内容
- データ準備の設定
 - テーブルを開いてデータ準備を操作する
 - 数値と単位記述子データを含む列を分割する
 - 日付形式の標準化
 - データ準備の実行