Share via


ORC 對應

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

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

每個 ORC 對應項目都必須包含下列任一選擇性屬性:

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

注意

欄位和路徑互斥。

下列替代項目相等:

[
  {"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
  {"Column": "event_name", "Properties": {"Field": "EventName"}}
]

重要

針對佇列擷取:

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

範例

[
  {"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
  {"Column": "event_name",      "Properties": {"Path": "$.Event.Name"}},
  {"Column": "event_type",      "Properties": {"Path": "$.Event.Type"}},
  {"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 = "orc",
      ingestionMapping =
      ```
      [
        {"Column": "column_a", "Properties": {"Path": "$.Field1"}},
        {"Column": "column_b", "Properties": {"Path": "$.[\'Field name with space\']"}}
      ]
      ```
  )

預先建立的對應

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

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="orc",
        ingestionMappingReference = "ORC_Mapping"
    )

身分識別對應

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

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