Gmail からデータを取り込む
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。
マネージド Gmail 取り込みパイプラインを作成し、メールボックスのメッセージ、ラベル、下書き、フィルター、およびプロファイルを Unity Catalog テーブルに読み込みます。パイプラインは、データ取り込み UI、Declarative Automation Bundles、または Pipelines API を使用して作成できます。各パイプラインは、接続で設定された単一のメールボックスを取り込みます。
要件
-
取り込みパイプラインを作成するには、まず次の要件を満たす必要があります。
-
ワークスペースでUnity Catalogが有効になっている必要があります。
-
ワークスペースで Serverless コンピュートを有効にする必要があります。See Serverless コンピュートの要件.
-
新しい接続を作成するには、メタストアに対する
CREATE CONNECTION権限が必要です。Unity Catalog での権限の管理を参照してください。コネクタが UI ベースのパイプライン オーサリングをサポートしている場合、管理者はこのページのステップを完了することで、接続とパイプラインを同時に作成できます。 ただし、パイプラインを作成するユーザーが API ベースのパイプライン オーサリングを使用している場合、または管理者以外のユーザーである場合、管理者はまずカタログ エクスプローラーで接続を作成する必要があります。 「管理対象取り込みソースへの接続」を参照してください。
-
既存の接続を使用するには、接続オブジェクトに対する
USE CONNECTION権限またはALL PRIVILEGES権限が必要です。 -
ターゲットカタログに対する
USE CATALOG権限が必要です。 -
既存のスキーマに対する
USE SCHEMA権限とCREATE TABLE権限、またはターゲットカタログに対するCREATE SCHEMA権限が必要です。
-
-
Gmailから取り込むには、まず Gmail接続の作成 のステップを完了する必要があります。
取り込みパイプラインを作成
取り込まれた各テーブルは、ストリーミングテーブルに書き込まれます。ソーススキーマは default です。取り込み可能なテーブルの一覧については、サポートされているテーブルを参照してください。
- Databricks UI
- Declarative Automation Bundles
- Databricks notebook
- Databricksワークスペースのサイドバーで、
データ取り込み をクリックします。
- データの追加 ページの Databricks コネクタ で、 Gmail をクリックします。
- 取り込みウィザードの 接続 ページで、Gmailアクセス資格情報を保存している接続を選択します。メタストアに対する
CREATE CONNECTION特権がある場合は、接続の作成 をクリックして、Gmail接続の作成にある認証詳細を使用して新しい接続を作成できます。
- 次へ をクリックします。
- インジェスト設定 ページで、パイプラインの一意の名前を入力します。
- イベント Logs を書き込むカタログとスキーマを選択します。カタログに対する
USE CATALOG権限とCREATE SCHEMA権限がある場合は、ドロップダウンメニューでCreate schema をクリックして新しいスキーマを作成できます。
- パイプラインの作成および続行 をクリックします。
- ソース ページで、取り込むテーブルを選択します。
- 保存して続行 をクリックします。
- 「宛先」 ページで、データをロードするカタログとスキーマを選択します。カタログに対して
USE CATALOGとCREATE SCHEMA権限をお持ちの場合は、クリックできます。ドロップダウンメニューから「スキーマを作成」を選択して、新しいスキーマを作成します。
- 保存して続行 をクリックします。
- (オプション) スケジュールと通知 ページで、
スケジュールの作成 をクリックします。宛先テーブルを更新する頻度を設定します。
- (オプション)
通知の追加 をクリックして、パイプライン操作の成功または失敗に関するEメール通知を設定し、 保存してパイプラインを実行 をクリックします。
宣言型オートメーションバンドルを使用して、Gmail パイプラインをコードとして管理します。バンドルには、ジョブとタスクの YAML 定義を含めることができ、Databricks CLI を使用して管理され、異なるターゲット ワークスペース(開発、ステージング、本番運用など)で共有および実行できます。詳細については、「宣言型オートメーションバンドルとは?」をご覧ください。
-
Databricks CLI を使用してバンドルを作成するには、次の手順を実行します。
Bashdatabricks bundle init -
バンドルに2つの新しいリソースファイルを追加します:
- パイプライン定義ファイル(例:
resources/gmail_pipeline.yml)。See パイプライン.ingestion_definition および 例。 - データ取り込みの頻度を制御するジョブ定義ファイル(例:
resources/gmail_job.yml)。
- パイプライン定義ファイル(例:
-
Databricks CLIを使ってパイプラインを展開します:
Bashdatabricks bundle deploy
- パイプライン構成の詳細を使用して、パイプライン仕様を変更します。「パイプライン.ingestion_definition」を参照してください。および 例。
- ノートブックを実行します。
メールボックスの選択
読み取り対象のメールボックスは、パイプラインではなく接続で設定されます。接続を作成するときに、 メールボックス Eメール (impersonate_email) フィールドを使用して構成します。Gmail 接続の作成を参照してください。サービスアカウントはドメイン全体の委任を通じてこのユーザーに偽装し、コネクタはそのユーザーのメールボックスを読み取ります。設定しない場合、接続はサービスアカウント自体として認証されますが、そのアカウントには取り込むメールボックスがありません。コネクタは、すべての行の mailbox 列としてメールボックスの値をスタンプします。
各接続で取り込めるメールボックスは1つだけです。複数のメールボックスを取り込むには、メールボックスごとに個別の接続とパイプラインを作成してください。
パイプラインが少なくとも毎週実行されるようにスケジュールを設定します
Databricksでは、少なくとも7日に1回はパイプラインを実行するようにスケジュールすることを推奨しています。messages テーブルと message_labels テーブルは、GmailのHistory APIを使用して増分同期されます。Gmailは履歴を限られた期間(通常は約7日間)保持します。
パイプラインの実行頻度がGmailの履歴ウィンドウよりも低い場合、保存されているhistoryIdカーソルが期限切れになる可能性があります。その場合、次回のランでmessagesとmessage_labelsの完全更新が実行されます。
例
これらの例を使用して、パイプラインを構成してください。
単一のソーステーブルを取り込む
- Declarative Automation Bundles
- Databricks notebook
以下のパイプライン定義ファイルは、単一のソーステーブルを取り込みます。pipeline_gmail リソースはメインのパイプラインであり、objects は取り込むテーブルの配列を定義します。この例では messages テーブルを取り込みます。
variables:
dest_catalog:
default: main
dest_schema:
default: ingest_destination_schema
# The main pipeline for gmail_dab
resources:
pipelines:
pipeline_gmail:
name: gmail_pipeline
catalog: ${var.dest_catalog}
schema: ${var.dest_schema}
ingestion_definition:
connection_name: <gmail-connection>
objects:
# An array of objects to ingest from Gmail. This example ingests the messages table.
- table:
source_schema: default
source_table: messages
destination_catalog: ${var.dest_catalog}
destination_schema: ${var.dest_schema}
次のパイプライン仕様は、単一のソーステーブルを取り込みます:
pipeline_spec = """
{
"name": "<pipeline-name>",
"ingestion_definition": {
"connection_name": "<gmail-connection>",
"objects": [
{
"table": {
"source_schema": "default",
"source_table": "messages",
"destination_catalog": "main",
"destination_schema": "ingest_destination_schema"
}
}
]
}
}
"""
create_pipeline(pipeline_spec)
複数のソーステーブルを取り込む
- Declarative Automation Bundles
- Databricks notebook
次のパイプライン定義ファイルは、複数のソーステーブルを取り込みます。
variables:
dest_catalog:
default: main
dest_schema:
default: ingest_destination_schema
# The main pipeline for gmail_dab
resources:
pipelines:
pipeline_gmail:
name: gmail_pipeline
catalog: ${var.dest_catalog}
schema: ${var.dest_schema}
ingestion_definition:
connection_name: <gmail-connection>
objects:
# An array of objects to ingest from Gmail. This example ingests the messages and message_labels tables.
- table:
source_schema: default
source_table: messages
destination_catalog: ${var.dest_catalog}
destination_schema: ${var.dest_schema}
- table:
source_schema: default
source_table: message_labels
destination_catalog: ${var.dest_catalog}
destination_schema: ${var.dest_schema}
次のパイプライン仕様では、複数のソーステーブルを取り込みます。
pipeline_spec = """
{
"name": "<pipeline-name>",
"ingestion_definition": {
"connection_name": "<gmail-connection>",
"objects": [
{
"table": {
"source_schema": "default",
"source_table": "messages",
"destination_catalog": "main",
"destination_schema": "ingest_destination_schema"
}
},
{
"table": {
"source_schema": "default",
"source_table": "message_labels",
"destination_catalog": "main",
"destination_schema": "ingest_destination_schema"
}
}
]
}
}
"""
create_pipeline(pipeline_spec)
宣言型オートメーションバンドルのジョブ定義ファイル
以下は、宣言型オートメーションバンドルで使用するジョブ定義ファイルの例です。ジョブは毎日、前回のランからちょうど 1 日後にランされます。
resources:
jobs:
gmail_dab_job:
name: gmail_dab_job
trigger:
periodic:
interval: 1
unit: DAYS
email_notifications:
on_failure:
- <email-address>
tasks:
- task_key: refresh_pipeline
pipeline_task:
pipeline_id: ${resources.pipelines.pipeline_gmail.id}
次のステップ
パイプラインの起動、スケジュール、アラートの設定を行います。一般的なパイプラインのメンテナンス タスクを参照してください。