共用方式為


擷取對應

適用於: ✅Microsoft網狀架構Azure 數據總管

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

數據總管支援不同類型的對應,包括數據列導向 (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 將 屬性 {events:[{"n1":"v1"},{"n2":"v2"}]}的 JSON 陣列轉換成 字典,並將其串行化為有效的 JSON 檔,例如 {"n1":"v1","n2":"v2"} 適用於 JSONParquetAVROORC 對應類型。
SourceLocation 提供數據、類型字串的記憶體成品名稱(例如 Blob 的 “BaseUri” 欄位)。 適用於 CSVJSONParquetAVROORC、 和 W3CLOGFILE 對應類型。
SourceLineNumber 相對於該記憶體成品的位移,輸入long(從'1' 開始,並依新記錄遞增)。 適用於 CSVJSONParquetAVROORC、 和 W3CLOGFILE 對應類型。
DateTimeFromUnixSeconds 將代表 unix-time 的數位(自 1970-01-01 起的秒數) 轉換為 UTC 日期時間字串。 適用於 CSVJSONParquetAVROORC 對應類型。
DateTimeFromUnixMilliseconds 將代表 unix-time 的數位(從 1970-01-01 開始的毫秒)轉換為 UTC 日期時間字串。 適用於 CSVJSONParquetAVROORC 對應類型。
DateTimeFromUnixMicroseconds 將代表 unix 時間的數位(自 1970-01-01 起的微秒數) 轉換為 UTC 日期時間字串。 適用於 CSVJSONParquetAVROORC 對應類型。
DateTimeFromUnixNanoseconds 將代表 unix-time 的數位(自 1970-01-01 起的 nanoseconds) 轉換為 UTC 日期時間字串。 適用於 CSVJSONParquetAVROORC 對應類型。
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" } },
]

擷取的數據如下所示:

Time 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==