擷取對應
適用於: ✅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對應 |
身分識別對應
不需要指定 ingestionMapping
或 ingestionMappingReference
屬性,即可進行擷取。 數據會使用衍生自數據表架構的識別數據對應來對應。 數據表架構維持不變。 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"} 。 |
適用於 JSON 、 Parquet 、 AVRO 和 ORC 對應類型。 |
SourceLocation | 提供數據、類型字串的記憶體成品名稱(例如 Blob 的 “BaseUri” 欄位)。 | 適用於 CSV 、 JSON 、 Parquet 、 AVRO 、 ORC 、 和 W3CLOGFILE 對應類型。 |
SourceLineNumber | 相對於該記憶體成品的位移,輸入long(從'1' 開始,並依新記錄遞增)。 | 適用於 CSV 、 JSON 、 Parquet 、 AVRO 、 ORC 、 和 W3CLOGFILE 對應類型。 |
DateTimeFromUnixSeconds | 將代表 unix-time 的數位(自 1970-01-01 起的秒數) 轉換為 UTC 日期時間字串。 | 適用於 CSV 、 JSON 、 Parquet 、 AVRO 和 ORC 對應類型。 |
DateTimeFromUnixMilliseconds | 將代表 unix-time 的數位(從 1970-01-01 開始的毫秒)轉換為 UTC 日期時間字串。 | 適用於 CSV 、 JSON 、 Parquet 、 AVRO 和 ORC 對應類型。 |
DateTimeFromUnixMicroseconds | 將代表 unix 時間的數位(自 1970-01-01 起的微秒數) 轉換為 UTC 日期時間字串。 | 適用於 CSV 、 JSON 、 Parquet 、 AVRO 和 ORC 對應類型。 |
DateTimeFromUnixNanoseconds | 將代表 unix-time 的數位(自 1970-01-01 起的 nanoseconds) 轉換為 UTC 日期時間字串。 | 適用於 CSV 、 JSON 、 Parquet 、 AVRO 和 ORC 對應類型。 |
DropMappedFields | 將 JSON 檔中的物件對應至數據行,並移除其他數據行對應已參考的任何巢狀欄位。 | 適用於 JSON 、 Parquet 、 AVRO 和 ORC 對應類型。 |
BytesAsBase64 | 將數據視為位元組陣列,並將它轉換成base64編碼的字串。 | 可用於 AVRO 對應類型。 針對 ApacheAvro 格式,對應數據欄位的架構類型應該是 bytes 或 fixed 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== |