連續資料匯出概觀
適用於: ✅Microsoft網狀架構✅Azure 數據總管
本文說明使用定期執行的查詢,將數據從 Kusto 連續匯出至 外部數據表 。 結果會儲存在外部數據表中,其會定義目的地,例如 Azure Blob 儲存體,以及匯出數據的架構。 此程式可確保所有記錄都會「完全一次」導出,但有些 例外狀況。
根據預設,連續匯出會在分散式模式中執行,其中所有節點會同時匯出,因此成品數目取決於節點數目。 連續匯出並非針對低延遲串流數據所設計。
若要啟用連續數據匯出,請建立外部數據表,然後建立指向外部數據表的連續匯出定義。
在某些情況下,您必須使用受控識別來成功設定連續匯出作業。 如需詳細資訊,請參閱 使用受控識別來執行連續匯出作業。
權限
所有連續導出命令至少 需要 Database Admin 許可權。
連續匯出指導方針
輸出架構:
- 匯出查詢的輸出架構必須符合您匯出之外部數據表的架構。
頻率:
連續匯出會根據 屬性中
intervalBetweenRuns
針對它設定的時間週期執行。 此間隔的建議值為至少幾分鐘,視您願意接受的延遲而定。 如果擷取速率很高,時間間隔可能高達一分鐘。注意
intervalBetweenRuns
僅做為建議,且不保證精確。 連續匯出不適用於匯出定期匯總。 例如,使用每小時匯總 (T | summarize by bin(Timestamp, 1h)
) 的 組態1h
intervalBetweenRuns
=無法如預期般運作,因為連續匯出不會完全在每小時執行。 因此,每個每小時的量化都會在導出的數據中接收多個專案。
檔案數目:
- 每個連續匯出反覆項目中導出的檔案數目取決於外部數據表的分割方式。 如需詳細資訊,請參閱 匯出至外部數據表命令。 每個連續匯出反覆專案一律會寫入新檔案,而且永遠不會附加至現有的檔案。 因此,導出的檔案數目也取決於連續導出執行的頻率。 frequency 參數為
intervalBetweenRuns
。
- 每個連續匯出反覆項目中導出的檔案數目取決於外部數據表的分割方式。 如需詳細資訊,請參閱 匯出至外部數據表命令。 每個連續匯出反覆專案一律會寫入新檔案,而且永遠不會附加至現有的檔案。 因此,導出的檔案數目也取決於連續導出執行的頻率。 frequency 參數為
外部資料表記憶體帳戶:
- 為了達到最佳效能,資料庫和記憶體帳戶應該共置在相同的 Azure 區域中。
- 連續匯出會以分散式方式運作,讓所有節點同時匯出。 在大型資料庫上,如果匯出的數據磁碟區很大,這可能會導致記憶體節流。 建議為外部數據表設定多個記憶體帳戶。 如需詳細資訊,請參閱 匯出命令 期間的記憶體失敗。
僅匯出一次
為了保證「完全一次」導出,連續導出會使用 資料庫數據指標。 連續匯出查詢不應包含時間戳篩選條件 - 資料庫數據指標機制可確保不會多次處理記錄。 在查詢中新增時間戳篩選可能會導致導出數據中遺漏數據。
必須在查詢中參考的所有數據表上啟用 IngestionTime 原則 ,該數據表應該在匯出中「完全一次」處理。 所有新建立的數據表預設都會啟用原則。
「完全一次」導出的保證僅適用於顯示導出成品命令中報告的檔案。 連續匯出不保證每個記錄只會寫入外部數據表一次。 如果匯出開始后發生失敗,而且某些成品已經寫入外部數據表,外部數據表可能會包含重複專案。 如果在完成之前中止寫入作業,外部數據表可能會包含損毀的檔案。 在這種情況下,成品不會從外部數據表中刪除,但不會在顯示的匯出成品命令中報告它們。 使用 show exported artifacts command
所導出的檔案,保證不會重複,也不會損毀。
從事實和維度數據表匯出
根據預設,導出查詢中參考的所有數據表都會假設為 事實數據表。 因此,它們的範圍會限定於資料庫數據指標。 語法會明確宣告哪些數據表已設定範圍(事實),且未設定範圍(維度)。 如需詳細資訊,over
請參閱 create 命令中的 參數。
匯出查詢只包含自上一次匯出執行以來聯結的記錄。 匯出查詢可能包含 維度數據表,其中維度數據表 的所有記錄都包含在所有匯出查詢中。 在連續匯出中使用事實數據表與維度數據表之間的聯結時,請記住,事實數據表中的記錄只會處理一次。 如果在維度數據表中的記錄遺漏某些索引鍵時執行匯出,則會遺漏個別索引鍵的記錄,或包含匯出檔案中維度數據行的 Null 值。 傳回遺漏或 Null 記錄取決於查詢是否使用內部或外部聯結。 連續 forcedLatency
匯出定義中的 屬性在這類情況下很有用,因為事實和維度數據表會在相同時間內嵌比對記錄。
注意
不支援僅連續匯出維度數據表。 匯出查詢至少必須包含單一事實數據表。
監視連續匯出
使用下列 匯出計量監視連續匯出作業的健康情況:
Continuous export max lateness
- databsae 中連續匯出的最大延遲時間(以分鐘為單位)。 這是目前到資料庫中所有連續匯出作業的最小ExportedTo
時間。 如需詳細資訊,請參閱.show continuous export
命令。Continuous export result
- 每個連續匯出執行的成功/失敗結果。 此計量可以依連續匯出名稱來分割。
.show continuous export failures
使用 命令來查看連續匯出作業的特定失敗。
警告
如果連續匯出因永久失敗而故障轉移超過 7 天,系統會自動停用匯出。
永久錯誤包括:找不到外部數據表、連續匯出查詢的架構與外部數據表架構不符,無法存取記憶體帳戶。
修正錯誤之後,您可以使用 命令重新啟用連續匯出 .enable continuous export
。
資源取用量
- 連續匯出對資料庫的影響取決於連續匯出正在執行的查詢。 查詢執行會耗用大部分的資源,例如 CPU 和記憶體。
- 可以同時執行的導出作業數目受限於資料庫的數據導出容量。 如需詳細資訊,請參閱 管理命令節流。 如果資料庫沒有足夠的容量來處理所有連續導出,有些資料庫就會開始落後。
- show commands-and-queries 命令可用來估計資源耗用量。
| where ClientActivityId startswith "RunContinuousExports"
篩選以檢視與連續匯出相關聯的命令和查詢。
匯出歷程資料
連續匯出只會從建立數據點開始匯出數據。 在該時間之前擷取的記錄應該使用非連續 匯出命令分開匯出。 歷程記錄數據可能太大,無法以單一導出命令導出。 如有需要,請將查詢分割成數個較小的批次。
若要避免連續匯出所匯出資料的重複專案,請使用 StartCursor
show continuous export 命令所 傳回的 , 並且只匯出數據 where cursor_before_or_at
指標值。 例如:
.show continuous-export MyExport | project StartCursor
StartCursor |
---|
636751928823156645 |
接著執行:
.export async to table ExternalBlob
<| T | where cursor_before_or_at("636751928823156645")
使用數據列層級安全性從數據表連續匯出
若要使用參考具有 數據列層級安全策略之數據表的查詢來建立連續匯出作業,您必須:
- 在連續匯出組態中提供受控識別。 如需詳細資訊,請參閱 使用受控識別來執行連續匯出作業。
- 針對匯出數據的外部數據表使用 模擬 驗證。
連續匯出至差異數據表 - 預覽
連續匯出至差異數據表目前為預覽狀態。
若要定義對差異資料表的持續匯出,請執行下列步驟:
建立外部差異數據表,如在 Azure 儲存體 上建立和改變差異外部數據表中所述。
注意
如果未提供架構,Kusto 會嘗試在目標記憶體容器中已定義差異數據表時自動推斷它。
不支援差異數據表數據分割。使用建立或改變連續匯出中所述 的命令,定義此數據表的連續匯出。
重要
差異數據表的架構必須與連續匯出查詢同步。 如果基礎差異數據表變更,匯出可能會因為非預期的行為而開始失敗。
限制
一般:
- 目標資料表允許下列格式:
CSV
、TSV
、JSON
和Parquet
。 - 連續匯出並非設計來處理 具體化檢視,因為具體化檢視可能會更新,而導出至記憶體的數據一律只會附加,而且永遠不會更新。
- 因為追蹤者資料庫是唯讀的,而且連續匯出需要寫入作業,所以無法在追蹤者資料庫上建立連續匯出。
- 源數據表中的記錄必須使用更新原則直接內嵌至數據表,或從查詢命令內嵌。 如果使用 .move 範圍或使用 .rename 數據表將記錄移至數據表,連續匯出可能不會處理這些記錄。 請參閱資料庫數據指標頁面中所述的限制。
- 如果連續匯出所使用的成品是要觸發事件方格通知,請參閱 事件方格檔中的已知問題一節。
跨資料庫和跨叢集:
- 連續導出不支援跨叢集呼叫。
- 連續導出僅支持維度數據表的跨資料庫呼叫。 所有事實數據表都必須位於本機資料庫中。 如需詳細資訊, 請參閱從事實和維度數據表匯出。
- 如果連續匯出包含跨資料庫呼叫,則必須使用 受控識別進行設定。
跨資料庫和跨 Eventhouse:
- 連續導出不支援跨 Eventhouse 呼叫。
- 連續導出僅支持維度數據表的跨資料庫呼叫。 所有事實數據表都必須位於本機資料庫中。 如需詳細資訊, 請參閱從事實和維度數據表匯出。
原則:
- 除非符合特定條件,否則無法在具有 數據列層級安全策略 的數據表上啟用連續匯出。 如需詳細資訊,請參閱 使用數據列層級安全性從數據表連續匯出。
- 無法在具有 限制檢視存取原則的數據表上設定連續匯出。
相關內容
- 建立或改變連續導出 :::moniker-range=“azure-data-explorer”
- 使用受控識別來執行連續匯出作業 :::monker-end