Parquet eşleme

Alım kaynak dosyanız Parquet biçiminde olduğunda gelen verileri tabloların içindeki sütunlara eşlemek için Parquet eşlemesini kullanın.

Eşleme listesindeki her öğe, belirli bir sütun için eşlemeyi tanımlar. Bu öğeler üç özellikten oluşturulur: column, datatypeve properties. Veri eşlemelerine genel bakış bölümünde daha fazla bilgi edinin.

Her Parquet eşleme öğesi aşağıdaki isteğe bağlı özelliklerden birini içermelidir:

Özellik Tür Description
Alan string Parquet kaydındaki alanın adı.
Yol string Değer ile $ başlıyorsa, Parquet belgesindeki alanın yolu olarak yorumlanır ve tablodaki sütunun içeriği olur. Parquet kaydının tamamını belirten yol şeklindedir $. Değer ile $ başlamıyorsa sabit değer olarak yorumlanır. Özel karakterler içeren yollara ['Özellik Adı'] olarak kaçış karakteri verilmelidir. Daha fazla bilgi için bkz. JSONPath söz dizimi.
ConstValue string Parquet dosyasının içindeki bir değer yerine bir sütun için kullanılacak sabit değer.
Dönüşüm string Eşleme dönüştürmeleri ile içeriğe uygulanması gereken dönüştürme.

Not

Alan ve Yol birbirini dışlar.

Aşağıdaki alternatifler eşdeğerdir:

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

Önemli

Kuyruğa alınan alım için:

  • Eşlemede başvuruda bulunılan tablo veritabanında yoksa, tüm sütunlar için geçerli veri türlerinin belirtildiğinden otomatik olarak oluşturulur.
  • Eşlemede başvuruda bulunılan bir sütun tabloda yoksa, sütun için geçerli bir veri türü belirtildiğinden, bu sütun için ilk veri alımında son sütun olarak tabloya otomatik olarak eklenir. Eşlemeye yeni sütunlar eklemek için .alter alma eşleme komutunu kullanın.
  • Veri alımı özellikleri kullanılarak toplu olarak oluşturulur. Farklı ConstValue değerleri gibi daha farklı alım eşleme özellikleri kullanıldıkça, alma işlemi o kadar parçalanır ve bu da performans düşüşlerine yol açabilir.

Parquet türü dönüştürmeleri

Bir Parquet kaynağından veri alırken veya sorgularken veri türlerini dönüştürmek için kapsamlı destek sağlanır.

Aşağıdaki tabloda Parquet alan türlerinin ve dönüştürülebilecekleri tablo sütun türlerinin eşlemesi sağlanır. İlk sütunda Parquet türü, diğerleri ise dönüştürülebilecekleri tablo sütun türlerini gösterir.

Not

Parquest DECIMAL türleri için fiziksel tür parantez içinde aşağıdaki gibi belirtilir:

  • I32: INT32 (32 bit tamsayı)
  • I64: INT64 (64 bit tamsayı)
  • FLBA: Sabit Uzunlukta Bayt Dizisi
  • BA: Bayt Dizisi
Parquet türü bool int long real decimal datetime timespan string guid dynamic
INT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT64 ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
BOOLEAN ✔️ ✔️ ✔️
ONDALıK (I32) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
ONDALıK (I64) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
ONDALıK (FLBA) ✔️ ✔️ ✔️ ✔️
ONDALıK (BA) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
TIMESTAMP ✔️ ✔️
DATE ✔️ ✔️
DİZE ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UUID ✔️ ✔️
JSON ✔️ ✔️
LİSTE ✔️
HARİTA ✔️
STRUCT ✔️

Örnekler

[
  {"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": "$"}}
]

Yukarıdaki eşleme, yönetim komutunun bir parçası .ingest olarak sağlandığında JSON dizesi olarak seri hale getirilir.

.ingest into Table123 (@"source1", @"source2")
  with
  (
    format = "parquet",
    ingestionMapping =
    ```
    [
      {"Column": "column_a", "Properties": {"Path": "$.Field1.Subfield"}},
      {"Column": "column_b", "Properties": {"Path": "$.[\'Field name with space\']"}},
    ]
    ```
  )

Önceden oluşturulmuş eşleme

Eşleme önceden oluşturulduğunda, yönetim komutunda eşlemeye .ingest ada göre başvurun.

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

Kimlik eşleme

Eşleme şeması tanımlamadan alma sırasında Parquet eşlemesini kullanın (bkz. kimlik eşlemesi).

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