擷取對應

擷取期間會使用擷取對應,將傳入數據對應至數據表內的數據行。

Data Explorer 支援不同類型的對應,數據列導向 (CSV、JSON、AVRO 和W3CLOGFILE) ,以及數據行導向 (Parquet 和 ORC) 。

擷取對應可以 預先建立 ,而且可以使用參數從擷取命令 ingestionMappingReference 參考。 雖然可以擷取,但不需要指定對應。 如需詳細資訊,請參閱 身分識別對應

對應清單中的每個元素都是從三個字段建構:

屬性 必要 描述
資料行 ✔️ 數據表中的目標數據行名稱。
Datatype 如果數據表中還沒有對應數據行,則用來建立對應數據行的數據類型。
屬性 屬性包,包含每個對應的特定屬性,如每個特定對應類型頁面所述。

重要

針對佇列擷取:

  • 如果對應中所參考的數據表不存在於資料庫中,就會自動建立它,前提是會針對所有數據行指定有效的數據類型。
  • 如果對應中所參考的數據行不存在於數據表中,它會在第一次針對該數據行擷取數據時自動新增至數據表做為最後一個數據行,前提是已為數據行指定有效的數據類型。 若要將數據行新增至對應,請使用 .alter 擷取對應命令
  • 數據會使用擷取屬性進行批處理。 所使用的更相異擷取對應屬性,例如不同的 ConstValue 值,擷取會變得更分散,這可能會導致效能降低。

支援的對應類型

下表定義擷取或查詢特定格式的外部數據時要使用的對應類型。

資料格式 對應類型
CSV CSV 對應
TSV CSV 對應
TSVe CSV 對應
PSV CSV 對應
SCSV CSV 對應
SOHsv CSV 對應
TXT CSV 對應
RAW CSV 對應
JSON JSON 對應
AVRO AVRO 對應
APACHEAVRO AVRO 對應
Parquet Parquet 對應
ORC ORC 對應
W3CLOGFILE W3CLOGFILE對應

身分識別對應

您可以在不指定 ingestionMappingingestionMappingReference 屬性的情況下內嵌。 系統將會使用從資料表結構描述衍生的身分識別資料對應來對應資料。 而資料表結構描述會維持不變。 請指定 format 屬性。 請參閱 擷取格式

格式類型 格式 對應邏輯
具有資料行定義順序的表格式數據格式,例如分隔符分隔或單行格式。 CSV、TSV、TSVe、PSV、SCSV、Txt、SOHsv、Raw 所有的資料行都會依照在資料來源中出現的順序,對應到資料表中的各資料行。 資料行的資料類型取自於資料表結構描述。
使用具名數據行或具有具名字段的記錄格式化。 JSON、Parquet、Avro、ApacheAvro、Orc、W3CLOGFILE 所有資料表資料行,都會對應到具有相同名稱 (區分大小寫) 的資料行或記錄欄位。 資料行的資料類型取自於資料表結構描述。

警告

若資料表結構描述與資料結構之間有任何差異 (例如資料行或欄位資料類型、資料行或欄位的名稱或數目等),都可能會導致資料表空白或資料內嵌不正確。

對應資訊

某些資料格式對應 (PARQUET、JSON 和 AVRO) 支援簡單且實用的內嵌時間轉換。 如果在內嵌時需要更複雜的處理,請使用更新原則,這可讓您使用 KQL 運算式定義輕量型處理。

依存於路徑的轉換 描述 條件
PropertyBagArrayToDictionary 將 屬性的 JSON 陣列轉換成 {events:[{"n1":"v1"},{"n2":"v2"}]}字典,並將其串行化為有效的 JSON 檔,例如 {"n1":"v1","n2":"v2"} 適用於JSONParquetAVROORC 對應類型。
SourceLocation 可提供資料的儲存體成品名稱,類型為字串 (例如 Blob 的 "BaseUri" 欄位)。 適用於CSVJSONParquetAVROORCW3CLOGFILE 對應類型。
SourceLineNumber 相對於該儲存體成品的位移,類型為長整數 (從 '1' 開始,會隨著每筆新記錄而遞增)。 提供於:JSONParquetAVROORCW3CLOGFILE 對應類型。
DateTimeFromUnixSeconds 將代表 unix 時間 (秒的數位,從 1970-01-01) 轉換為 UTC 日期時間字串。 適用於JSONParquetAVROORC 對應類型。
DateTimeFromUnixMilliseconds 將代表 unix 時間 (毫秒的數位,從 1970-01-01) 轉換為 UTC 日期時間字串。 適用於JSONParquetAVROORC 對應類型。
DateTimeFromUnixMicroseconds 將 1970-01-01-01) 後的 unix 時間 (微秒的數位轉換為 UTC 日期時間字串。 適用於JSONParquetAVROORC 對應類型。
DateTimeFromUnixNanoseconds 將代表 unix 時間 (奈秒的數位,從 1970-01-01) 轉換為 UTC 日期時間字串。 適用於JSONParquetAVROORC 對應類型。
DropMappedFields 將 JSON 檔中的物件對應至數據行,並移除其他數據行對應所參考的任何巢狀欄位。 適用於JSONParquetAVROORC 對應類型。
BytesAsBase64 將數據視為位元組陣列,並將它轉換成base64編碼字串。 可用於 AVRO 對應類型。 針對 ApacheAvro 格式,對應數據欄位的架構類型應該是 bytesfixed Avro 類型。 針對 Avro 格式,欄位應該是包含 [0-255] 範圍中位元組值的陣列。 null 如果數據不代表有效的位元組陣列,則會擷取。

對應轉換範例

DropMappedFields 轉型:

指定下列 JSON 內容:

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "EventName": "CustomEvent",
        "Revenue": 0.456
    }
}

下列數據對應會將整個 Props 對象對應至動態 Props 數據行,但排除已對應的數據行 (Props.EventName 已經對應至數據行 EventName,因此會排除) 。

[
    { "Column": "Time", "Properties": { "Path": "$.Time" } },
    { "Column": "EventName", "Properties": { "Path": "$.Props.EventName" } },
    { "Column": "Props", "Properties": { "Path": "$.Props", "Transform":"DropMappedFields" } },
]

擷取的數據如下所示:

時間 EventName Props
2012-01-15T10:45 CustomEvent {"Revenue": 0.456}

BytesAsBase64 轉型

指定下列 AVRO 檔案內容:

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "id": [227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52]
    }
}

下列數據對應會對應標識符數據行兩次,不含轉換。

[
    { "Column": "Id", "Properties": { "Path": "$.props.id" } },
    { "Column": "Base64EncodedId", "Properties": { "Path": "$.props.id", "Transform":"BytesAsBase64" } },
]

擷取的數據如下所示:

識別碼 Base64EncodedId
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] 44MiXBxbQUiGigmFMy1oNA==