共用方式為


事件方格資料連線

事件方格內嵌是接聽 Azure 儲存體的管線,並會在訂閱的事件發生時,更新 Azure 資料總管以提取資訊。 Azure 資料總管透過 Azure 事件中樞,從 Azure 儲存體 (Blob 記憶體和 ADLSv2) 提供連續擷取,並針對 blob 建立或 Blob 重新命名的通知提供 Azure 事件方格 訂用帳戶,並將這些通知串流至 Azure 數據總管。

事件方格擷取管線會經過數個步驟。 您會在 Azure 數據總管中建立目標數據表,以 擷取特定格式 的數據。 然後在 Azure 數據總管中建立事件方格數據連線。 事件方格數據連線必須知道 事件路由 資訊,例如要傳送數據的數據表和數據表對應。 您也可以指定 擷取屬性,其中描述要內嵌的數據、目標數據表和對應。 您可以產生範例數據並上傳 Blob,或重新命名 Blob 以測試您的連線。 擷取之後刪除 Blob

事件方格擷取可以透過 Azure 入口網站、使用擷取精靈、以程序設計方式搭配 C#Python,或使用 Azure Resource Manager 範本來管理。

如需 Azure 數據總管中數據擷取的一般資訊,請參閱 Azure 數據總管數據擷取概觀

事件方格數據連線驗證機制

  • 金鑰型資料連線:如果未為數據連線指定受控識別驗證,則聯機會自動預設為密鑰型驗證。 密鑰型聯機會使用資源 連接字串 來擷取數據,例如 Azure 事件中樞 連接字串。 Azure 數據總管會取得指定資源的資源 連接字串,並安全地加以儲存。 接著會使用 連接字串 從數據源擷取數據。

    警告

    如果輪替密鑰,數據連線將無法再運作,而且無法從數據源擷取數據。 若要修正此問題,請更新或重新建立數據連線。

資料格式

  • 請參閱 支援的格式
  • 請參閱 支援的壓縮
    • 原始未壓縮的數據大小應該是 Blob 元數據的一部分,否則 Azure 數據總管會估計它。 每個檔案的擷取未壓縮大小限製為6 GB。

      注意

      在 Azure 儲存體帳戶,您可以針對BlobStorageStorageV2ADLS Gen2 設定事件方格通知訂閱。

內嵌屬性

您可以透過 Blob 元數據指定 Blob 擷取的擷取屬性 。 您可以設定下列屬性:

屬性 說明
rawSizeBytes 未經壓縮的數據大小。 針對 Avro/ORC/Parquet,這是套用格式特定壓縮之前的大小。 將此屬性設定為未壓縮的數據大小,以位元組為單位提供原始數據大小。
kustoDatabase 目標資料庫的區分大小寫名稱。 根據預設,數據會內嵌至與數據連線相關聯的目標資料庫。 使用這個屬性來覆寫預設資料庫,並將數據傳送至不同的資料庫。 若要這樣做,您必須先 將連線設定為多資料庫連線
kustoTable 現有目標數據表的區分大小寫名稱。 覆 Table 寫窗格上的 Data Connection 集合。
kustoDataFormat 資料格式 覆 Data format 寫窗格上的 Data Connection 集合。
kustoIngestionMappingReference 要使用的現有 擷取對應 名稱。 覆 Column mapping 寫窗格上的 Data Connection 集合。
kustoIgnoreFirstRecord 如果設定為 true,Kusto 會忽略 Blob 的第一個數據列。 在表格式數據中使用 #CSV、TSV 或類似格式數據來忽略標頭。
kustoExtentTags 字串,表示 將附加至結果範圍的標記
kustoCreationTime 寫 Blob 的範圍建立時間 ,格式為 ISO 8601 字串。 用於回填。

事件路由

當您建立叢集的數據連線時,您可以指定要傳送內嵌數據的位置路由。 預設路由會傳送至與目標資料庫相關聯之 連接字串 中指定的目標數據表。 數據的預設路由也稱為 靜態路由。 您可以使用事件資料屬性來指定資料的替代路由。

將事件數據路由傳送至替代資料庫

默認會關閉將數據路由傳送至替代資料庫。 若要將數據傳送至不同的資料庫,您必須先將連接設定為多資料庫連接。 您可以在 Azure 入口網站、C#、Python 或 ARM 範本中執行此動作。 用來允許資料庫路由的使用者、群組、服務主體或受控識別,至少必須具有 叢集的參與者 角色和寫入許可權。 如需詳細資訊,請參閱 建立 Azure 數據總管的事件方格數據連線。

若要指定替代資料庫,請設定資料庫擷取屬性

警告

指定替代資料庫而不將連接設定為多資料庫數據連線,會導致擷取失敗。

將事件數據路由傳送至替代數據表

設定與 Azure 資料總管叢集的 Blob 記憶體連線時,請指定目標資料表屬性:

  • 資料表名稱
  • 數據格式
  • 對應

您也可以使用 Blob 元數據,為每個 Blob 指定目標資料表屬性。 數據會動態路由,如擷取屬性指定。

下列範例示範如何在上傳 Blob 元數據之前,先在 Blob 元數據上設定擷取屬性。 Blob 會路由傳送至不同的數據表。

此外,您可以指定目標資料庫。 事件方格數據連線是在特定資料庫的內容內建立。 因此,此資料庫是數據連線的預設資料庫路由。 若要將數據傳送至不同的資料庫,請設定 「KustoDatabase」 擷取屬性,並將數據連線設定為多資料庫數據連接。 預設會停用將數據路由傳送至另一個資料庫(不允許)。 設定與數據連線資料庫不同的資料庫擷取屬性,而不允許數據路由傳送至多個資料庫(將連接設定為多資料庫數據連接),將導致擷取失敗。

如需詳細資訊,請參閱 上傳 Blob

var container = new BlobContainerClient("<storageAccountConnectionString>", "<containerName>");
await container.CreateIfNotExistsAsync();
var blob = container.GetBlobClient("<blobName>");
// Blob is dynamically routed to table `Events`, ingested using `EventsMapping` data mapping
await blob.SetMetadataAsync(
    new Dictionary<string, string>
    {
        { "rawSizeBytes", "4096" }, // the uncompressed size is 4096 bytes
        { "kustoTable", "Events" },
        { "kustoDataFormat", "json" },
        { "kustoIngestionMappingReference", "EventsMapping" },
        { "kustoDatabase", "AnotherDB" }
    }
);
await blob.UploadAsync(BinaryData.FromString(File.ReadAllText("<filePath>")));

上傳 Blob

您可以從本機檔案建立 Blob、將擷取屬性設定為 Blob 元數據,然後上傳它。 如需範例,請參閱 使用事件方格數據連線

注意

  • 強烈建議使用 BlockBlob 來產生數據,因為using AppendBlob 可能會導致非預期的行為。
  • 使用 Azure Data Lake Gen2 記憶體 SDK 需要使用 CreateFile 來上傳檔案,最後 Flush 將 close 參數設定為 true。 如需 Data Lake Gen2 SDK 正確使用方式的詳細範例,請參閱 使用事件方格數據連線
  • 在作業之後 CopyBlob 觸發擷取,不支援已啟用階層命名空間功能的記憶體帳戶。
  • 當事件中樞端點未確認收到事件時,Azure 事件方格 啟動重試機制。 如果此重試傳遞失敗,事件方格可以使用寄不出的信件程式,將未傳遞的事件傳遞至記憶體帳戶。 如需詳細資訊,請參閱 Event Grid 訊息傳遞與重試

重新命名 Blob

使用 ADLSv2 時,您可以將 Blob 重新命名為觸發 Blob 擷取至 Azure 數據總管。 例如,請參閱 重新命名 Blob

注意

  • 目錄重新命名在 ADLSv2 中是可能的,但它不會觸發 Blob 重新命名的事件,也不會擷取目錄中的 Blob。 若要在重新命名之後內嵌 Blob,請直接重新命名所需的 Blob。
  • 如果您在建立數據連線或手動建立事件方格資源時定義篩選來追蹤特定主題,這些篩選會套用至目的地檔案路徑。

使用記憶體生命週期刪除 Blob

Azure 資料總管不會在擷取之後刪除 Blob。 使用 Azure Blob 記憶體生命週期 來管理 Blob 刪除。 建議將 Blob 保留三到五天。

已知的事件方格問題

  • 如果事件中樞命名空間上已停用本機驗證,其中包含用於串流通知的事件中樞,請使用下列步驟,確保使用受控識別正確地從記憶體流向事件中樞:

    1. 將系統指派的受控識別指派給記憶體帳戶的事件方格系統主題。 如需詳細資訊,請參閱 啟用系統主題的受控識別。
    2. 將事件中樞上的 Azure 事件中樞 數據寄件者角色指派給受控識別發件人許可權。 如需詳細資訊,請參閱 將身分識別新增至目的地上的 Azure 角色。
    3. 請確定事件方格訂用帳戶使用受控識別進行事件傳遞。 如需詳細資訊,請參閱 建立使用身分識別的事件訂用帳戶。

    此外,將事件方格數據連線設定為使用受控識別驗證,讓 Azure 數據總管可以從事件中樞接收通知。

  • 使用 Azure 數據總管匯出用於事件方格擷取的檔案時,請注意:

    • 如果提供給導出命令的 連接字串 或提供給外部數據表的 連接字串 是 ADLS Gen2 格式的連接字串abfss://filesystem@accountname.dfs.core.windows.net但記憶體帳戶並未針對階層命名空間啟用,則不會觸發事件方格通知。
    • 如果未啟用階層命名空間的帳戶,連接字串 必須使用 Blob 記憶體格式(例如 , https://accountname.blob.core.windows.net)。 即使使用ADLS Gen2連接字串,匯出仍如預期般運作,但不會觸發通知,事件方格擷取將無法運作。