事件方格資料連線

事件方格內嵌是接聽 Azure 儲存體的管線,並會在訂閱的事件發生時,更新 Azure 資料總管以提取資訊。 Azure Data Explorer 提供從 Azure 記憶體 (Blob 記憶體和 ADLSv2) 的持續擷取,以及透過 Azure 事件方格 Azure 事件中樞 將這些通知串流至 Azure Data Explorer。

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

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

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

Azure Data Explorer 數據連線驗證機制

警告

如果從數據源中移除受控識別許可權,則會停用數據連線,且無法從數據源擷取數據。

  • 金鑰型資料連線:如果未在數據連線中指定受控識別,聯機會自動預設為金鑰型驗證。 索引鍵型聯機會使用資源 連接字串 來擷取數據,例如 Azure 事件中樞 連接字串。 Azure Data Explorer 會產生指定資源的資源 連接字串,並將它安全地儲存在數據連線中。 然後,連接字串 用來從數據源擷取數據。

警告

如果輪替密鑰,則會停用數據連線,且無法從數據源擷取數據。 若要修正此問題,請更新或重新建立數據連線。

資料格式

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

注意

針對 BlobStorageStorageV2Data Lake Storage Gen2,可在 Azure 儲存體帳戶上設定事件方格通知訂閱。

內嵌屬性

您可以透過 Blob 中繼資料指定 Blob 內嵌的內嵌屬性。 您可以設定下列屬性:

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

事件路由

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

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

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

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

警告

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

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

設定與 Azure Data Explorer 叢集的 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 Data Explorer。 例如,請參閱 重新命名 Blob

注意

  • 目錄重新命名可在 ADLSv2 中進行,但其不會觸發「Blob 重新命名」事件,以及將 Blob 內嵌目錄中的動作。 若要在重新命名之後內嵌 Blob,請直接重新命名所需的 Blob。
  • 如果您在 建立數據連線手動建立事件方格資源時定義篩選來追蹤特定主體,這些篩選會套用至目的地檔案路徑。

使用儲存體生命週期刪除 Blob

Azure Data Explorer 不會在擷取之後刪除 Blob。 使用 Azure Blob 儲存體生命週期來管理您的 Blob 刪除。 建議將 Blob 保留三到五天。

已知的事件方格問題

  • 使用 Azure Data Explorer 匯出用於事件方格擷取的檔案時,請注意:
    • 如果提供給匯出命令的連接字串或提供給外部資料表的連接字串是 ADLS Gen2 格式的連接字串 (例如 abfss://filesystem@accountname.dfs.core.windows.net),但未針對階層命名空間啟用儲存體帳戶,則不會觸發事件方格通知。
    • 如果未針對階層命名空間啟用帳戶,則連接字串必須使用 Blob 儲存體格式 (例如,https://accountname.blob.core.windows.net)。 即使您使用 ADLS Gen2 連接字串,匯出也會如預期般運作,但不會觸發通知,且事件方格內嵌將無法運作。