共用方式為


JSON 對應

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

當您的擷取來源檔案採用 JSON 格式時,使用 JSON 對應將傳入數據對應至數據表內的數據行。

對應清單中的每個元素都會定義特定數據行的對應。 這些元素是從三個屬性建構的: columndatatypeproperties。 深入了解 數據對應概觀

每個 JSON 對應元素都必須包含下列任一選擇性屬性:

屬性 類型​ 描述
路徑 string 如果值以 $ 它解譯為 JSON 檔中欄位的 JSON 路徑,而該欄位將會成為數據表中數據行的內容。 表示整個檔案的 JSON 路徑為 $。 如果值不是以 $ 該值開頭,則會解譯為常數值。 包含特殊字元的 JSON 路徑應逸出為 ['Property Name']。 如需詳細資訊,請參閱 JSONPath 語法
ConstValue string 要用於數據行的常數值,而不是 JSON 檔案中的某些值。
轉換 string 應該套用到具有 對應轉換之內容上的轉換。

重要

針對佇列擷取:

  • 如果對應中所參考的數據表不存在於資料庫中,就會自動建立該數據表,因為會針對所有數據行指定有效的數據類型。
  • 如果對應中所參考的數據行不存在於數據表中,它會在第一次為該數據行內嵌數據時自動加入數據表,因為數據行指定了有效的數據類型。 若要將新的數據行新增至對應,請使用 .alter 擷取對應命令
  • 數據會使用擷取屬性進行批處理。 使用愈不同的擷取對應屬性,例如不同的 ConstValue 值,擷取會變成越分散,這可能會導致效能降低。

範例

[
  {"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
  {"Column": "event_name",      "Properties": {"Path": "$.Event.Name"}},
  {"Column": "event_type",      "Properties": {"Path": "$.Event.Type"}},
  {"Column": "source_uri",      "Properties": {"Transform": "SourceLocation"}},
  {"Column": "source_line",     "Properties": {"Transform": "SourceLineNumber"}},
  {"Column": "event_time",      "Properties": {"Path": "$.Timestamp", "Transform": "DateTimeFromUnixMilliseconds"}},
  {"Column": "ingestion_time",  "Properties": {"ConstValue": "2021-01-01T10:32:00"}},
  {"Column": "full_record",     "Properties": {"Path": "$"}}
]

當上述對應作為管理命令的 .ingest 一部分提供時,會串行化為 JSON 字串。

.ingest into Table123 (@"source1", @"source2")
  with
  (
      format = "json",
      ingestionMapping =
      ```
      [
        {"Column": "column_a", "Properties": {"Path": "$.Obj.Property"}},
        {"Column": "column_b", "Properties": {"Path": "$.Property"}},
        {"Column": "custom_column", "Properties": {"Path": "$.[\'Property name with space\']"}}
      ]
      ```
  )

預先建立的對應

預先建立對應時,請在管理命令中.ingest依名稱參考對應。

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="json",
        ingestionMappingReference = "Mapping_Name"
    )

身分識別對應

在擷取期間使用 JSON 對應而不定義對應架構(請參閱 身分識別對應)。

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="json"
    )

複製 JSON 對應

您可以複製現有資料表的 JSON 對應,並使用下列程式建立具有相同對應的新資料表:

  1. 在您要複製其對應的資料表上執行下列命令:

    .show table TABLENAME ingestion json mappings
    | extend formatted_mapping = strcat("'",replace_string(Mapping, "'", "\\'"),"'")
    | project formatted_mapping
    
  2. 使用上述指令的輸出來建立具有相同對應的新資料表:

    .create table TABLENAME ingestion json mapping "TABLENAME_Mapping" RESULT_OF_ABOVE_CMD