Aracılığıyla paylaş


bag_unpack eklentisi

Eklenti, bag_unpack her özellik paketi üst düzey yuvasını sütun olarak değerlendirerek türünde dynamictek bir sütunu açar. Eklenti işleciyle birlikte çağrılır evaluate .

Sözdizimi

T | bag_unpack( evaluate Sütunu [, OutputColumnPrefix ] [, columnsConflict ] [, ignoredProperties ] ) [: OutputSchema]

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Zorunlu Açıklama
T string ✔️ Sütununun paketten çıkarılacağı tablosal giriş.
Sütun dynamic ✔️ Paketten çıkarılmayan T sütunu.
OutputColumnPrefix string Eklenti tarafından üretilen tüm sütunlara eklenecek ortak bir ön ek.
columnsConflict string Sütun çakışma çözümlemesinin yönü. Geçerli değerler:
error - Sorgu hata üretir (varsayılan)
replace_source - Kaynak sütun değiştirildi
keep_source - Kaynak sütun tutulur
ignoredProperties dynamic Göz ardı edilecek isteğe bağlı bir çanta özellikleri kümesi. }
OutputSchema Eklenti çıkışının beklenen sütunları bag_unpack için adlar ve türler. Beklenen şemanın belirtilmesi, önce şemayı keşfetmek için gerçek sorguyu çalıştırmak zorunda kalmadan sorgu yürütmeyi iyileştirir. Söz dizimi bilgileri için bkz . Çıktı şeması söz dizimi.

Çıktı şeması söz dizimi

(ColumnName : ColumnType [, ...])

Giriş tablosunun tüm sütunlarını eklenti çıkışına eklemek için, ilk parametre olarak aşağıdaki gibi bir joker karakter * kullanın:

(* , ColumnName : ColumnType [, ...])

Döndürülenler

Eklenti, bag_unpack tablosal girişi (T) kadar kaydı olan bir tablo döndürür. Tablonun şeması, aşağıdaki değişikliklerle tablosal girişinin şemasıyla aynıdır:

  • Belirtilen giriş sütunu (Sütun) kaldırılır.
  • Şema, T'nin en üst düzey özellik paketi değerlerinde ayrı yuvalar olduğu kadar çok sütunla genişletilir. Her sütunun adı, isteğe bağlı olarak OutputColumnPrefix ön ekine sahip olan her yuvanın adına karşılık gelir. Türü, aynı yuvanın tüm değerleri aynı türe sahipse yuvanın türü veya dynamicdeğer türü farklıysa olur.

Not

OutputSchema belirtilmezse, eklentinin çıkış şeması giriş veri değerlerine göre değişir. Bu nedenle, eklentinin farklı veri girişleri kullanılarak birden çok yürütülmesi farklı çıkış şeması üretebilir.

Not

Eklentinin giriş verileri, çıkış şemasının tablo şeması için tüm kurallara uyması gerekir. Özellikle:

  • Bir çıkış sütun adı, paketlenecek sütun (Sütun) olmadığı sürece tablosal giriş T'deki mevcut sütunla aynı olamaz, çünkü bu aynı ada sahip iki sütun oluşturur.

  • OutputColumnPrefix öneki eklendiğinde tüm yuva adları geçerli varlık adları olmalıdır ve tanımlayıcı adlandırma kurallarına uymalıdır.

Örnekler

Çantayı genişletme

datatable(d:dynamic)
[
    dynamic({"Name": "John", "Age":20}),
    dynamic({"Name": "Dave", "Age":40}),
    dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)

Çıktı

Yaş Veri Akışı Adı
20 John
40 Dave
30 Yasemin

OutputColumnPrefix ile bir çantayı genişletme

Bir torbayı OutputColumnPrefix genişletin ve 'Property_' ön eki ile başlayan sütun adları oluşturmak için seçeneğini kullanın.

datatable(d:dynamic)
[
    dynamic({"Name": "John", "Age":20}),
    dynamic({"Name": "Dave", "Age":40}),
    dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, 'Property_')

Çıktı

Property_Age Property_Name
20 John
40 Dave
30 Yasemin

Çantayı sütunlarla genişletmeConflict

Bir torbayı columnsConflict genişletin ve işleç tarafından bag_unpack() üretilen mevcut sütunlar ve sütunlar arasındaki çakışmaları çözmek için seçeneğini kullanın.

datatable(Name:string, d:dynamic)
[
    'Old_name', dynamic({"Name": "John", "Age":20}),
    'Old_name', dynamic({"Name": "Dave", "Age":40}),
    'Old_name', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='replace_source') // Use new name

Çıktı

Yaş Veri Akışı Adı
20 John
40 Dave
30 Yasemin
datatable(Name:string, d:dynamic)
[
    'Old_name', dynamic({"Name": "John", "Age":20}),
    'Old_name', dynamic({"Name": "Dave", "Age":40}),
    'Old_name', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='keep_source') // Keep old name

Çıktı

Yaş Veri Akışı Adı
20 Old_name
40 Old_name
30 Old_name

IgnoredProperties ile bir torbayı genişletme

Bir çantayı genişletin ve özellik paketindeki ignoredProperties belirli özellikleri yoksaymak için seçeneğini kullanın.

datatable(d:dynamic)
[
    dynamic({"Name": "John", "Age":20, "Address": "Address-1" }),
    dynamic({"Name": "Dave", "Age":40, "Address": "Address-2"}),
    dynamic({"Name": "Jasmine", "Age":30, "Address": "Address-3"}),
]
// Ignore 'Age' and 'Address' properties
| evaluate bag_unpack(d, ignoredProperties=dynamic(['Address', 'Age']))

Çıktı

Veri Akışı Adı
John
Dave
Yasemin

Sorgu tanımlı OutputSchema ile bir torbayı genişletme

Bir torbayı genişletin ve gerçek sorguyu OutputSchema çalıştırmadan önce çeşitli iyileştirmelerin değerlendirilmesine izin vermek için seçeneğini kullanın.

datatable(d:dynamic)
[
    dynamic({"Name": "John", "Age":20}),
    dynamic({"Name": "Dave", "Age":40}),
    dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d) : (Name:string, Age:long)

Çıktı

Veri Akışı Adı Yaş
John 20
Dave 40
Yasemin 30

Bir torbayı genişletin ve gerçek sorguyu OutputSchema çalıştırmadan önce çeşitli iyileştirmelerin değerlendirilmesine izin vermek için seçeneğini kullanın. Giriş tablosunun tüm sütunlarını döndürmek için joker karakter * kullanın.

datatable(d:dynamic, Description: string)
[
    dynamic({"Name": "John", "Age":20}), "Student",
    dynamic({"Name": "Dave", "Age":40}), "Teacher",
    dynamic({"Name": "Jasmine", "Age":30}), "Student",
]
| evaluate bag_unpack(d) : (*, Name:string, Age:long)

Çıktı

Açıklama Ad Yaş
Öğrenci John 20
Öğretmen Dave 40
Öğrenci Yasemin 30