Confluence からデータを取り込む

Databricks Lakeflow Connect を使用してマネージド Confluence インジェスト パイプラインを作成する方法について説明します。

必要条件

  • インジェスト パイプラインを作成するには、まず次の要件を満たす必要があります。

    • ワークスペースは、Unity Catalog に対して有効にする必要があります。

    • ワークスペースに対してサーバーレス コンピューティングを有効にする必要があります。 サーバーレス コンピューティング要件を参照してください。

    • 新しい接続を作成するには、メタストアに対する CREATE CONNECTION 特権が必要です。 「Unity Catalog の特権の管理」を参照してください。

      コネクタが UI ベースのパイプライン作成をサポートしている場合、管理者は、このページの手順を完了することで、接続とパイプラインを同時に作成できます。 ただし、パイプラインを作成するユーザーが API ベースのパイプライン作成を使用している場合、または管理者以外のユーザーである場合は、まず管理者がカタログ エクスプローラーで接続を作成する必要があります。 「マネージド インジェスト ソースへの接続」を参照してください。

    • 既存の接続を使用するには、接続オブジェクトに対する USE CONNECTION 特権または ALL PRIVILEGES が必要です。

    • ターゲット カタログに対する USE CATALOG 特権が必要です。

    • 既存のスキーマに対する USE SCHEMA 権限と CREATE TABLE 権限、またはターゲット カタログに対する CREATE SCHEMA 権限が必要です。

  • Confluence から取り込むには、「 Confluence 接続の作成」の手順を最初に完了する必要があります。

インジェスト パイプラインを作成する

各ソース テーブルは、ストリーミング テーブルに取り込まれます。 サポートされているソース テーブルの一覧については、「 サポートされているデータ」を参照してください。

Databricks ユーザーインターフェース

  1. Azure Databricks ワークスペースのサイドバーで、[ Data Ingestion をクリックします。
  2. [ データの追加 ] ページの [Databricks コネクタ] で、[ Confluence] をクリックします。
  3. インジェスト ウィザードの [ 接続 ] ページで、Confluence アクセス資格情報を格納する接続を選択します。 メタストアでの CREATE CONNECTION 特権がある場合は、プラス アイコン。 [接続を作成する] をクリックして新しい接続を作成し、認証の詳細を [Confluence 接続を作成する] に作成することができます。
  4. [次へ] をクリックします。
  5. [ インジェストのセットアップ ] ページで、パイプラインの一意の名前を入力します。
  6. イベント ログを書き込むカタログとスキーマを選択します。 カタログに対するUSE CATALOG権限とCREATE SCHEMA権限がある場合は、[プラス] アイコンをクリックできます。ドロップダウン メニューでスキーマを作成し、新しいスキーマを作成します。
  7. [パイプラインの作成] をクリックして続行します
  8. [ ソース ] ページで、取り込むテーブルを選択します。
  9. [ 保存] をクリックして続行します。
  10. [ 宛先 ] ページで、データを読み込むカタログとスキーマを選択します。 カタログに対するUSE CATALOG権限とCREATE SCHEMA権限がある場合は、[プラス] アイコンをクリックできます。ドロップダウン メニューでスキーマを作成し、新しいスキーマを作成します。
  11. [ 保存] をクリックして続行します。
  12. (省略可能)[ スケジュールと通知 ] ページで、[プラス] アイコンをクリック します。 スケジュールを作成します。 変換先テーブルを更新する頻度を設定します。
  13. (省略可能)[ プラス] アイコンをクリックします。 パイプライン 操作の成功または失敗の電子メール通知を設定する通知を追加し、[ パイプラインの保存と実行] をクリックします。

宣言型オートメーション バンドル

宣言型オートメーション バンドルを使用して、Confluence パイプラインをコードとして管理します。 バンドルには、ジョブとタスクの YAML 定義を含め、Databricks CLI を使用して管理できます。また、さまざまなターゲット ワークスペース (開発、ステージング、運用など) で共有および実行できます。 詳細については、「 宣言型オートメーション バンドルとは」を参照してください。

  1. Databricks CLI を使用してバンドルを作成します。

    databricks bundle init
    
  2. バンドルに 2 つの新しいリソース ファイルを追加します:

    • パイプライン定義ファイル (たとえば、 resources/confluence_pipeline.yml)。 「pipeline.ingestion_definitionと例」参照してください。
    • データ インジェストの頻度を制御するジョブ定義ファイル (たとえば、 resources/confluence_job.yml)。
  3. Databricks CLI を使用してパイプラインをデプロイします:

    databricks bundle deploy
    

Databricks ノートブック

  1. Azure Databricks ワークスペースに次のノートブックをインポートします。

    ノートブックを入手

  2. セル 1 を as-isのままにします。

  3. パイプライン構成の詳細を使用してセル 3 を変更します。 「pipeline.ingestion_definitionと例」参照してください。

  4. [ すべて実行] をクリックします。

例示

これらの例を使用して、パイプラインを構成します。

ソーステーブル1つを取り込む

宣言型オートメーション バンドル

次のパイプライン定義ファイルは、1 つのソース テーブルを取り込みます。

variables:
  dest_catalog:
    default: main
  dest_schema:
    default: ingest_destination_schema

# The main pipeline for confluence_dab
resources:
  pipelines:
    pipeline_confluence:
      name: confluence_pipeline
      catalog: ${var.dest_catalog}
      schema: ${var.dest_schema}
      ingestion_definition:
        connection_name: <confluence-connection>
        objects:
          # An array of objects to ingest from Confluence. This example ingests the pages table.
          - table:
              source_schema: default
              source_table: pages
              destination_catalog: ${var.dest_catalog}
              destination_schema: ${var.dest_schema}

Databricks ノートブック

1 つのソース テーブルを取り込むパイプライン仕様の例を次に示します。

pipeline_spec = """
{
  "name": "<pipeline-name>",
  "ingestion_definition": {
    "connection_name": "<confluence-connection>",
    "objects": [
      {
        "table": {
          "source_schema": "default",
          "source_table": "pages",
          "destination_catalog": "main",
          "destination_schema": "ingest_destination_schema"
        }
      }
    ]
  },
  "channel": "PREVIEW"
}
"""
create_pipeline(pipeline_spec)

複数のソース テーブルを取り込む

宣言型オートメーション バンドル

次のパイプライン定義ファイルは、複数のソース テーブルを取り込みます。

variables:
  dest_catalog:
    default: main
  dest_schema:
    default: ingest_destination_schema

# The main pipeline for confluence_dab
resources:
  pipelines:
    pipeline_confluence:
      name: confluence_pipeline
      catalog: ${var.dest_catalog}
      schema: ${var.dest_schema}
      ingestion_definition:
        connection_name: <confluence-connection>
        objects:
          # An array of objects to ingest from Confluence. This example ingests the pages and blogposts tables.
          - table:
              source_schema: default
              source_table: pages
              destination_catalog: ${var.dest_catalog}
              destination_schema: ${var.dest_schema}
          - table:
              source_schema: default
              source_table: blogposts
              destination_catalog: ${var.dest_catalog}
              destination_schema: ${var.dest_schema}

Databricks ノートブック

複数のソース テーブルを取り込むパイプライン仕様の例を次に示します。

pipeline_spec = """
{
  "name": "<pipeline-name>",
  "ingestion_definition": {
    "connection_name": "<confluence-connection>",
    "objects": [
      {
        "table": {
          "source_schema": "default",
          "source_table": "pages",
          "destination_catalog": "main",
          "destination_schema": "ingest_destination_schema"
        }
      },
      {
        "table": {
          "source_schema": "default",
          "source_table": "blogposts",
          "destination_catalog": "main",
          "destination_schema": "ingest_destination_schema"
        }
      }
    ]
  },
  "channel": "PREVIEW"
}
"""
create_pipeline(pipeline_spec)

宣言型オートメーション バンドル ジョブ定義ファイル

宣言型オートメーション バンドル

宣言型オートメーション バンドルで使用するジョブ定義ファイルの例を次に示します。 ジョブは、最後の実行から正確に 1 日後に毎日実行されます。

resources:
  jobs:
    confluence_dab_job:
      name: confluence_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_confluence.id}

スペースでフィルタリングする

パイプライン定義内の任意のテーブル オブジェクトに connector_options.confluence_options を追加することで、取り込まれたデータを特定の Confluence スペースにフィルター処理できます。 include_confluence_spacesで正確なスペース キーを指定します。 スペースキーは大文字と小文字を区別し、スペース名とは異なった扱いになります。

スペース キーを見つけるには、スペース内の任意のページに移動し、URL を確認します。 これは、 /space/ または /display/に続く短い識別子です。 または、 Space ツール>Overview>Space の詳細 に移動して、キーを表示します。

詳細については、Confluence ドキュメントの スペース キー を参照してください。

Note

labels テーブルと attachments テーブルでは、スペース フィルター処理はサポートされていません。 Confluence API は、これらのオブジェクトの発生元の領域を識別しないため、include_confluence_spacesまたはlabelsが取り込まれると、attachmentsは無視されます。

宣言型オートメーション バンドル

- table:
    source_schema: default
    source_table: pages
    destination_catalog: ${var.dest_catalog}
    destination_schema: ${var.dest_schema}
    connector_options:
      confluence_options:
        include_confluence_spaces:
          - KEY1
          - KEY2

Databricks ノートブック

pipeline_spec = """
{
  "name": "<pipeline-name>",
  "ingestion_definition": {
    "connection_name": "<confluence-connection>",
    "objects": [
      {
        "table": {
          "source_schema": "default",
          "source_table": "pages",
          "destination_catalog": "main",
          "destination_schema": "ingest_destination_schema",
          "connector_options": {
            "confluence_options": {
              "include_confluence_spaces": ["KEY1", "KEY2"]
            }
          }
        }
      }
    ]
  }
}
"""
create_pipeline(pipeline_spec)

一般的なパターン

高度なパイプライン構成については、「 マネージド インジェスト パイプラインの一般的なパターン」を参照してください。

次のステップ

パイプラインを開始し、スケジュールを設定し、アラートを設定します。 一般的なパイプライン メンテナンス タスクを参照してください。

その他のリソース