Veri eşlemeleri

Veri eşlemeleri, gelen verileri tabloların içindeki sütunlarla eşlemek için veri alımı sırasında kullanılır.

Veri Gezgini hem (CSV, JSON, AVRO ve W3CLOGFILE) hem de row-oriented (Parquet ve column-oriented ORC) farklı eşleme türlerini destekler.

Eşleme listesindeki her öğe üç özellikten oluşturulur:

Özellik Açıklama
Column Tabloda hedef sütun adı
Datatype (İsteğe bağlı) Tabloda zaten yoksa eşlenmiş sütunun oluşturulacağı veri türü
Properties (İsteğe bağlı) Aşağıdaki her bölümde açıklandığı gibi her eşlemeye özgü özellikleri içeren özellik paketi.

Eşlemeler önceden oluşturulabilir ve parametreleri kullanılarak ingestionMappingReference alma komutundan başvurulabilir.

Bir eşleme belirtmeden veri alımı mümkündür (bkz. kimlik eşlemesi).

CSV eşlemesi

Kaynak dosya bir CSV (veya sınırlayıcıyla ayrılmış bir biçim) olduğunda ve şeması geçerli tablo şemasıyla eşleşmiyorsa, CSV eşlemesi dosya şemasından tablo şemasına eşler. Tablo Azure Veri Gezgini'nde yoksa, bu eşlemeye göre oluşturulur. Tabloda eşlemedeki bazı alanlar eksikse, bunlar eklenir.

CSV eşlemesi tüm sınırlayıcıyla ayrılmış tablo biçimlerinde uygulanabilir: CSV, TSV, PSV, SCSV, SOHsv ve TXT. Daha fazla bilgi için bkz. desteklenen veri biçimleri.

Listedeki her öğe belirli bir sütun için eşlemeyi açıklar ve aşağıdaki özelliklerden birini içermelidir:

Özellik Açıklama
Ordinal CSV'deki sütun sırası numarası.
ConstantValue (İsteğe bağlı) CSV dosyasının içindeki bir değer yerine bir sütun için kullanılacak sabit değer.

Not

  • Ordinal ve ConstantValue birbirini dışlar.
  • TXT biçiminde, metin tek satır sütunu olarak işlendiğinden yalnızca Ordinal0 eşlenebilir.

CSV eşleme örneği

[
  {"Column": "event_time", "Properties": {"Ordinal": "0"}},
  {"Column": "event_name", "Properties": {"Ordinal": "1"}},
  {"Column": "event_type", "Properties": {"Ordinal": "2"}},
  {"Column": "ingestion_time", "Properties": {"ConstValue": "2021-01-01T10:32:00"}}
]

Not

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

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="csv",
        ingestionMapping =
        '['
            '{"Column": "column_a", "Properties": {"Ordinal": 0}},'
            '{"Column": "column_b", "Properties": {"Ordinal": 1}}'
        ']'
    )

Not

Yukarıdaki eşleme önceden oluşturulduğunda , denetim komutunda .ingest buna başvurulabilir:

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="csv",
        ingestionMappingReference = "MappingName"
    )

Not

Bir eşleme belirtmeden veri alımı mümkündür (bkz. kimlik eşlemesi).

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

JSON eşlemesi

Kaynak dosya JSON biçiminde olduğunda, dosya içeriği tabloya eşlenir. Eşlenen tüm sütunlar için geçerli bir veri türü belirtilmediği sürece tablo veritabanında bulunmalıdır. JSON eşlemesinde eşlenen sütunlar, var olmayan tüm sütunlar için bir veri türü belirtilmediği sürece tabloda bulunmalıdır.

Listedeki her öğe belirli bir sütun için eşlemeyi açıklar ve aşağıdaki özellikleri içerebilir:

Özellik Açıklama
Path Değer ile $başlıyorsa: JSON belgesindeki sütunun içeriği olacak alanın JSON yolu (belgenin tamamını belirten JSON yoludur $). Değer ile $başlamıyorsa, sabit bir değer kullanılır. Özel karakterler içeren JSON yollarından ['Özellik Adı'] olarak kaçış karakteri kullanılmalıdır. Daha fazla bilgi için bkz. JSONPath söz dizimi.
ConstantValue (İsteğe bağlı) JSON dosyasının içindeki bir değer yerine bir sütun için kullanılacak sabit değer.
Transform (İsteğe bağlı) Eşleme dönüştürmeleri ile içeriğe uygulanması gereken dönüştürme.

JSON eşleme örneği

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

Not

Yukarıdaki eşleme denetim komutunun .ingest bir parçası olarak sağlandığında JSON dizesi olarak serileştirilir.

.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\']"}}'
      ']'
  )

Not

Yukarıdaki eşleme önceden oluşturulduğunda , denetim komutunda .ingest buna başvurulabilir:

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

Not

Bir eşleme belirtmeden veri alımı mümkündür (bkz. kimlik eşlemesi).

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

JSON eşlemesini kopyalama örneği

Aşağıdaki işlemi kullanarak var olan bir tablonun JSON eşlemesini kopyalayabilir ve aynı eşlemeye sahip yeni bir tablo oluşturabilirsiniz:

  1. Eşlemesini kopyalamak istediğiniz tabloda aşağıdaki komutu çalıştırın:

    .show table TABLENAME ingestion json mappings
    | extend formatted_mapping = strcat("'",replace_string(Mapping, "'", "\\'"),"'")
    | project formatted_mapping
    
  2. Aynı eşlemeye sahip yeni bir tablo oluşturmak için yukarıdaki komutun çıktısını kullanın:

    .create table TABLENAME ingestion json mapping "TABLENAME_Mapping" RESULT_OF_ABOVE_CMD
    

AVRO eşlemesi

Kaynak dosya AVRO biçiminde olduğunda, AVRO dosyası içeriği tabloyla eşlenir. Eşlenen tüm sütunlar için geçerli bir veri türü belirtilmediği sürece tablo veritabanında bulunmalıdır. Avro eşlemesinde eşlenen sütunlar, var olmayan tüm sütunlar için bir veri türü belirtilmediği sürece tabloda bulunmalıdır.

Listedeki her öğe belirli bir sütun için eşlemeyi açıklar ve aşağıdaki özellikleri içerebilir:

Özellik Açıklama
Field AVRO kaydındaki alanın adı.
Path Gerekirse, avro kayıt alanının iç kısmının alınmasına izin veren kullanımın Field alternatifi. Değer, AVRO kaydının kökünden bir JSON yolu belirtir (AVRO kaydının tamamını belirten JSON yoludur $). Değer ile $başlamıyorsa, sabit bir değer kullanılır. Özel karakterler içeren JSON yollarından ['Özellik Adı'] olarak kaçış karakteri kullanılmalıdır. Daha fazla bilgi için bkz. JSONPath söz dizimi.
ConstantValue (İsteğe bağlı) AVRO dosyasının içindeki bir değer yerine sütun için kullanılacak sabit değer.
Transform (İsteğe bağlı) Desteklenen dönüştürmelere sahip içeriğe uygulanması gereken dönüştürme.

Not

Field ve Path birlikte kullanılamaz; yalnızca birine izin verilir.

Aşağıdaki alternatifler eşittir:

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

AVRO eşleme örneği

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

Not

Yukarıdaki eşleme denetim komutunun .ingest bir parçası olarak sağlandığında JSON dizesi olarak serileştirilir.

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

Not

Yukarıdaki eşleme önceden oluşturulduğunda , denetim komutunda .ingest buna başvurulabilir:

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

Not

Bir eşleme belirtmeden veri alımı mümkündür (bkz. kimlik eşlemesi).

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

Parquet eşleme

Kaynak dosya Parquet biçiminde olduğunda, dosya içeriği tabloya eşlenir. Eşlenen tüm sütunlar için geçerli bir veri türü belirtilmediği sürece tablo veritabanında bulunmalıdır. Parquet eşlemesinde eşlenen sütunlar, mevcut olmayan tüm sütunlar için bir veri türü belirtilmediği sürece tabloda bulunmalıdır.

Listedeki her öğe belirli bir sütun için eşlemeyi açıklar ve aşağıdaki özellikleri içerebilir:

Özellik Açıklama
Field Parquet kaydındaki alanın adı.
Path Gerekirse, bir Parquet kayıt alanının iç kısmının alınmasına izin veren kullanımın Field alternatifi. Değer, Parquet kaydının kökünden bir JSON yolu belirtir (AVRO kaydının tamamını belirten JSON yoludur $). Değer ile $başlamıyorsa, sabit bir değer kullanılır. Özel karakterler içeren JSON yollarından ['Özellik Adı'] olarak kaçış karakteri kullanılmalıdır. Daha fazla bilgi için bkz. JSONPath söz dizimi.
ConstantValue (İsteğe bağlı) Parquet dosyasının içindeki bir değer yerine bir sütun için kullanılacak sabit değer.
Transform (İsteğe bağlı) içeriğe uygulanması gereken eşleme dönüştürmeleri .

Not

Field ve Path birlikte kullanılamaz; yalnızca birine izin verilir.

Aşağıdaki alternatifler eşittir:

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

Parquet eşleme örneği

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

Not

Yukarıdaki eşleme denetim komutunun .ingest bir parçası olarak sağlandığında, eşleme bir JSON dizesi olarak serileştirilir.

.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\']"}},'
      ']'
  )

Not

Yukarıdaki eşleme önceden oluşturulduğunda, denetim komutunda .ingest buna başvurulabilir:

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

Not

Bir eşleme belirtmeden veri alımı mümkündür (bkz. kimlik eşlemesi).

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

ORC eşlemesi

Kaynak dosya ORC biçiminde olduğunda, dosya içeriği tabloya eşlenir. Eşlenen tüm sütunlar için geçerli bir veri türü belirtilmediği sürece tablo veritabanında bulunmalıdır. OrC eşlemesinde eşlenen sütunlar, var olmayan tüm sütunlar için bir veri türü belirtilmediği sürece tabloda bulunmalıdır.

Listedeki her öğe belirli bir sütun için eşlemeyi açıklar ve aşağıdaki özellikleri içerebilir:

Özellik Açıklama
Field ORC kaydındaki alanın adı.
Path Gerekirse, bir ORC kayıt alanının iç kısmının alınmasına izin veren kullanımın Field alternatifi. Değer, ORC kaydının kökünden bir JSON yolu belirtir (ORC kaydının tamamını belirten JSON yoludur $). Değer ile $başlamıyorsa, sabit bir değer kullanılır. Özel karakterler içeren JSON yollarından ['Özellik Adı'] olarak kaçış karakteri kullanılmalıdır. Daha fazla bilgi için bkz. JSONPath söz dizimi.
ConstantValue (İsteğe bağlı) ORC dosyasının içindeki bir değer yerine sütun için kullanılacak sabit değer.
Transform (İsteğe bağlı) içeriğe uygulanması gereken eşleme dönüştürmeleri .

Not

Field ve Path birlikte kullanılamaz; yalnızca birine izin verilir.

Aşağıdaki alternatifler eşittir:

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

ORC eşleme örneği

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

Not

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

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

Not

Yukarıdaki eşleme önceden oluşturulduğunda denetim komutunda .ingest buna başvurulabilir:

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

Not

Bir eşleme belirtmeden veri alımı mümkündür (bkz. kimlik eşlemesi).

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

W3CLOGFILE eşlemesi

Kaynak dosya W3CLOGFILE biçiminde olduğunda, dosya içeriği tabloya eşlenir. Eşlenen tüm sütunlar için geçerli bir veri türü belirtilmediği sürece tablo veritabanında bulunmalıdır. W3CLOGFILE eşlemesinde eşlenen sütunlar, var olmayan tüm sütunlar için bir veri türü belirtilmedikçe tabloda bulunmalıdır.

Listedeki her öğe belirli bir sütun için eşlemeyi açıklar ve aşağıdaki özellikleri içerebilir:

Özellik Açıklama
Field W3CLOGFILE girdi adı
ConstantValue (İsteğe bağlı) W3CLOGFILE dosyasının içindeki bir değer yerine bir sütun için kullanılacak sabit değer.
Transform (İsteğe bağlı) içeriğe uygulanması gereken eşleme dönüştürmeleri .

W3CLOGFILE eşleme örneği

[
   {"Column": "Date",          "Properties": {"Field": "date"}},
   {"Column": "Time",          "Properties": {"Field": "time"}},
   {"Column": "IP",            "Properties": {"Field": "s-ip"}},
   {"Column": "ClientMethod",  "Properties": {"Field": "cs-method"}},
   {"Column": "ClientQuery",   "Properties": {"Field": "cs-uri-query"}},
   {"Column": "ServerPort",    "Properties": {"Field": "s-port"}},
   {"Column": "ClientIP",      "Properties": {"Field": "c-ip"}},
   {"Column": "UserAgent",     "Properties": {"Field": "cs(User-Agent)"}},
   {"Column": "Referer",       "Properties": {"Field": "cs(Referer)"}},
   {"Column": "Status",        "Properties": {"Field": "sc-status"}},
   {"Column": "ResponseBytes", "Properties": {"Field": "sc-bytes"}},
   {"Column": "RequestBytes",  "Properties": {"Field": "cs-bytes"}},
   {"Column": "TimeTaken",     "Properties": {"Field": "time-taken"}}
]

Not

W3CLOGFILE biçimi için desteklenen tek dönüştürmeler şunlardır: SourceLineNumber ve SourceLocation. Yukarıdaki eşleme denetim komutunun .ingest bir parçası olarak sağlandığında JSON dizesi olarak serileştirilir.

.ingest into Table123 (@"source1", @"source2")
  with
  (
      format = "w3clogfile",
      ingestionMapping =
      '['
         '{"Column": "column_a", "Properties": {"Field": "field1"}},'
         '{"Column": "column_b", "Properties": {"Field": "field2"}}'
      ']'
  )

Not

Yukarıdaki eşleme önceden oluşturulduğunda denetim komutunda .ingest buna başvurulabilir:

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

Not

Bir eşleme belirtmeden veri alımı mümkündür (bkz. kimlik eşlemesi).

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

Eşleme dönüştürmeleri

Bazı veri biçimi eşlemeleri (Parquet, JSON ve AVRO), basit ve kullanışlı alma zamanı dönüştürmelerini destekler. Senaryonun alma zamanında daha karmaşık işleme gerektirdiği durumlarda, KQL ifadesini kullanarak basit işleme tanımlamaya olanak tanıyan Güncelleştirme ilkesini kullanın.

Yola bağımlı dönüştürme Description Koşullar
PropertyBagArrayToDictionary JSON özellik dizisini (örn. {events:[{"n1":"v1"},{"n2":"v2"}]}) sözlüğe dönüştürür ve geçerli JSON belgesine (örneğin, {"n1":"v1","n2":"v2"}) serileştirir. Yalnızca Path kullanıldığında uygulanabilir
SourceLocation Verileri sağlayan depolama yapıtının adı, dize yazın (örneğin, blobun "BaseUri" alanı).
SourceLineNumber Bu depolama yapıtına göre uzaklık, uzun yazın ('1' ile başlayıp yeni kayıt başına artırma).
DateTimeFromUnixSeconds Unix saatini temsil eden sayıyı (1970-01-01'den itibaren saniye) UTC tarih saat dizesine dönüştürür
DateTimeFromUnixMilliseconds Unix saatini temsil eden sayıyı (1970-01-01'den bu yana milisaniye) UTC tarih saat dizesine dönüştürür
DateTimeFromUnixMicroseconds Unix saatini temsil eden sayıyı (1970-01-01'den itibaren mikrosaniye) UTC tarih saat dizesine dönüştürür
DateTimeFromUnixNanoseconds Unix saatini temsil eden sayıyı (1970-01-01'den beri nanosaniye) UTC tarih saat dizesine dönüştürür

Kimlik eşleme

veya ingestionMappingReference özellikleri belirtilmeden ingestionMapping veri alımı mümkündür. Veriler, tablonun şemasından türetilen bir kimlik veri eşlemesi kullanılarak eşlenir. Tablo şeması aynı kalır. format özelliği belirtilmelidir. (bkz . alma biçimleri).

Biçim türü Biçimlendir Eşleme mantığı
Sınırlayıcıyla ayrılmış veya tek satırlı biçimler gibi tanımlı sütun sırasına sahip tablosal veri biçimleri CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw Tüm tablo sütunları, veri kaynağında göründükleri sırayla ilgili sıralarıyla veri sütunlarına eşlenir. Sütun veri türü tablo şemasından alınır.
Adlandırılmış sütunların veya adlandırılmış alanların yer aldığı kayıtların yer aldığı biçimler JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Tüm tablo sütunları, aynı ada (büyük/küçük harfe duyarlı) sahip veri sütunlarına veya kayıt alanlarına eşlenir. Sütun veri türü tablo şemasından alınır.

Uyarı

Tablo şeması ile sütun veya alan veri türleri, sütun veya alan adları ya da bunların sayısı gibi veri yapısı arasındaki uyuşmazlıklar boş veya yanlış veri alımına neden olabilir.