Azure Data Share を使用して Azure Data Explorer とデータを共有する

ファイル共有、FTP、電子メール、API など、従来からデータを共有するたくさんの方法があります。 これらの方法では、チームや組織間でデータを移動するデータ パイプラインを両者が作成して維持する必要があります。 Azure Data Explorer を使用すると、会社や社外のパートナーのユーザーとデータを簡単かつ安全に共有できます。 共有はほぼリアルタイムで行われ、データ パイプラインの構築や管理は必要はありません。 スキーマやデータを含む、プロバイダー側でのすべてのデータベースの変更がコンシューマー側ですぐに使用できるようになります。

Azure Friday のビデオ。

Azure Data Explorer では、ストレージとコンピューティングが分離されているため、お客様は複数のコンピューティング (読み取り専用) インスタンスを基になる同じストレージで実行できます。 データベースをフォロワー データベースとしてアタッチできます。これは、リモート クラスター上の読み取り専用データベースです。

データ共有を構成する

Azure Data Share を使用して、会社全体または外部のパートナーや顧客との招待と共有を送信および管理します。 Azure Data Share では、フォロワー データベースを使用して、プロバイダーとコンシューマーの Azure Data Explorer クラスターの間にシンボリック リンクが作成されます。 このオプションを使用すると、Azure Data Explorer クラスターおよびその他のデータ サービス全体のすべてのデータ共有を 1 つのウィンドウで表示および管理できます。 Azure Data Shareでは、さまざまなMicrosoft Entra テナント内の組織間でデータを共有することもできます。

注意

両方のクラスターの管理者は、さまざまな API を使用してフォロワー データベースを直接構成できます。 これは、レポートのためにスケールアウトする追加のコンピューティングが必要なシナリオで役立ちます。

データ共有は、以下に対して構成できます。

注意

共有関係が確立されると、Azure Data Share によって、プロバイダーとコンシューマーの Azure Data Explorer クラスターの間にシンボリック リンクが作成されます。 データ プロバイダーがアクセスを取り消すと、シンボリック リンクが削除され、データ コンシューマーは共有データベースを使用できなくなります。

Azure Data Explorer でのデータ共有。

データ プロバイダーは、データベース レベルまたはクラスター レベルでデータを共有できます。 データベースを共有するクラスターはリーダー クラスターであり、共有を受け取るクラスターはフォロワー クラスターです。 フォロワー クラスターは、1 つ以上のリーダー クラスター データベースをフォローすることができます。 フォロワー クラスターは、変更を確認するために定期的に同期されます。 リーダーとフォロワーの間の時間差は、メタデータとデータの全体的なサイズによって、数秒から数分になります。 データはコンシューマー クラスターにキャッシュされ、読み取りまたはクエリ操作でのみ使用できますが、ホット キャッシュ ポリシーとデータベースのアクセス許可の上書きは例外です。 フォロワー クラスターで実行されているクエリではローカル キャッシュは使用され、リーダー クラスターのリソースは使用されません。

前提条件

データ共有の流れ

  1. プロバイダーは、Azure Data Share リソースを使用して、データベース全体または特定のテーブルを共有し、受信者のメールアドレスを指定します。
  2. Azure Data Share は、受信者に電子メール招待状を送信します。
  3. 受信者は電子メール招待状を開き、自分の Azure Data Share リソースを選択します。
  4. 受信者は、Azure Data Share を使用して、共有されたデータベースまたはテーブルを適切なクラスターにマップします。

データ プロバイダー - データを共有する

データ プロバイダーは、データベース全体または特定のテーブルを受信者と共有できます。

データベース全体の共有

ビデオの説明に従って、Azure Data Share アカウントを作成し、データセットを追加して、招待状を送信します。 データ プロバイダー - データを共有します。

テーブルの共有

Azure Resource Manager テンプレートを使用して、Azure Data Share 経由で 1 つまたは複数のテーブルを共有できます。

テーブルを共有するには、次の手順に従います。

  1. テンプレートを作成し、データセットとテーブルの制限に対して適切なパラメーターを設定し、招待状の受信者を指定します。 次の表にある情報を使用すると、テンプレートの構成に役立ちます。

    パラメーター 説明
    accountName プロバイダーの Azure Data Share アカウントの名前。
    location すべてのリソースの場所。 リーダーとフォロワーは同じ場所にある必要があります。
    shareName データ共有アカウントに作成される共有の名前。
    recipientEmail Azure Data Share の受信者の電子メール。
    databaseName プロバイダーのデータベースの名前。
    databaseResourceId プロバイダーのデータベースのリソース ID。
    externalTablesToExclude 除外する外部テーブルの一覧。 すべての外部テーブルを除外するには、["*"] を使用します。 ["ExternalTable1ToExclude", "ExternalTable2ToExclude"]
    externalTablesToInclude 含める外部テーブルの一覧。 'Logs' で始まるすべての外部テーブルを含めるには、["Logs*"] を使用します。 ["ExternalTable1ToInclude", "ExternalTable2ToInclude"]
    materializedViewsToExclude 除外する具体化されたビューの一覧です。 すべての具体化されたビューを除外するには、["*"] を使用します。 ["Mv11ToExclude", "Mv22ToExclude"]
    materializedViewsToInclude 含める具体化されたビューの一覧です。 'Logs' で始まる具体化されたビューをすべて含めるには、["Logs*"] を使用します。 ["Mv1ToInclude", "Mv2ToInclude"]
    tablesToExclude 除外するテーブルの一覧です。 すべてのテーブルを除外するには、["*"] を使用します。 ["table1ToExclude", "table2ToExclude"]
    tablesToInclude 含めるテーブルの一覧です。 すべてのテーブルを含めるには、["*"] を使用します。 ["table1ToInclude", "table2ToInclude"]
    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "accountName": { "type": "String" },
        "location": { "defaultValue": "[resourceGroup().location]", "type": "String" },
        "shareName": { "type": "String" },
        "recipientEmail": { "type": "String" },
        "databaseName": { "type": "String" },
        "databaseResourceId": { "type": "String" },
        "externalTablesToExclude": { "type": "Array" },
        "externalTablesToInclude": { "type": "Array" },
        "materializedViewsToExclude": { "type": "Array" },
        "materializedViewsToInclude": { "type": "Array" },
        "tablesToExclude": { "type": "Array" },
        "tablesToInclude": { "type": "Array" }
      },
      "variables": {
        "invitationSuffix": "[replace(replace(parameters('recipientEmail'),'@', '_'), '.', '_')]"
      },
      "resources": [
        {
          "type": "Microsoft.DataShare/accounts",
          "apiVersion": "2021-08-01",
          "name": "[parameters('accountName')]",
          "location": "[parameters('location')]",
          "identity": {
            "type": "SystemAssigned"
          },
          "properties": {}
        },
        {
          "type": "Microsoft.DataShare/accounts/shares",
          "apiVersion": "2021-08-01",
          "name": "[concat(parameters('accountName'), '/' , parameters('shareName'))]",
          "dependsOn": [
            "[resourceId('Microsoft.DataShare/accounts', parameters('accountName'))]"
          ],
          "properties": {
            "shareKind": "InPlace"
          }
        },
        {
          "type": "Microsoft.DataShare/accounts/shares/invitations",
          "apiVersion": "2021-08-01",
          "name": "[concat(parameters('accountName'), '/',  parameters('shareName'), '/', concat(parameters('shareName'), variables('invitationSuffix')))]",
          "dependsOn": [
            "[resourceId('Microsoft.DataShare/accounts/shares', parameters('accountName'), parameters('shareName'))]",
            "[resourceId('Microsoft.DataShare/accounts', parameters('accountName'))]"
          ],
          "properties": {
            "targetEmail": "[parameters('recipientEmail')]"
          }
        },
        {
          "type": "Microsoft.DataShare/accounts/shares/dataSets",
          "apiVersion": "2021-08-01",
          "name": "[concat(parameters('accountName'), '/', parameters('shareName'), '/', parameters('databaseName'))]",
          "dependsOn": [
            "[resourceId('Microsoft.DataShare/accounts/shares', parameters('accountName'), parameters('shareName'))]",
            "[resourceId('Microsoft.DataShare/accounts', parameters('accountName'))]"
          ],
          "kind": "KustoTable",
          "properties": {
            "kustoDatabaseResourceId": "[parameters('databaseResourceId')]",
            "tableLevelSharingProperties": {
              "externalTablesToExclude": "[parameters('externalTablesToExclude')]",
              "externalTablesToInclude": "[parameters('externalTablesToInclude')]",
              "materializedViewsToExclude": "[parameters('materializedViewsToExclude')]",
              "materializedViewsToInclude": "[parameters('materializedViewsToInclude')]",
              "tablesToExclude": "[parameters('tablesToExclude')]",
              "tablesToInclude": "[parameters('tablesToInclude')]"
            }
          }
        }
      ]
    }
    
  2. Azure portal または PowerShell を使用して Azure Resource Manager テンプレートをデプロイします。

    テンプレートのデプロイ。

データ コンシューマー - データの受信

ビデオの説明に従って、招待を受け入れ、データ共有アカウントを作成して、コンシューマー クラスターにマップします。

データ コンシューマー - データの受信。

データ コンシューマーは、Azure Data Explorer クラスターにアクセスして、共有データベースへのアクセス許可をユーザーに付与し、データにアクセスできるようになりました。 ソース Azure Data Explorer クラスターへのキューインジェストを使用して取り込まれたデータは、数秒以内から数分以内にターゲット クラスターに表示されます。

制限事項