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
veConstantValue
birbirini dışlar.- TXT biçiminde, metin tek satır sütunu olarak işlendiğinden yalnızca
Ordinal
0
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:
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
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.