mv-expand işleci

Çok değerli dinamik dizileri veya özellik torbalarını birden çok kayıtta genişleten.

mv-expandbirden çok değeri tek bir dinamik türünde diziye veya özellik paketine paketleten ... ve gibi toplama işleçlerinin tersi olarak summarize açıklanmıştır. make-list()make-series (skaler) dizideki veya özellik çantasında yer alan her öğe, işlecinin çıkışında yeni bir kayıt oluşturur. Genişletilen girişin tüm sütunları, çıkışta yer alan tüm kayıtlara çoğaltılacaktır.

Syntax

T| mv-expand [bagexpansion=(bagarray | )] [with_itemindex=IndexColumnName] ColumnName [to typeof(Typename)] [,ColumnName ...] [limitRowlimit]

T| mv-expand [bagexpansion=(bag | array)] NameArrayExpression= [to typeof(Typename)] [, [Name=] ArrayExpression [to typeof(Typename)] ...] [limitRowlimit]

Bağımsız değişkenler

  • ColumnName, ArrayExpression: Dizi veya özellik çantası tutan türünde bir değere sahip bir sütun başvurusu veya skaler dynamicifade. Dizi veya özellik çantasının tek tek üst düzey öğeleri birden çok kayıt içine genişletilir.
    ArrayExpression kullanılır ve Ad herhangi bir giriş sütunu adına eşit değildir, genişletilmiş değer çıkışta yeni bir sütuna genişletilir. Aksi takdirde, mevcut ColumnName değiştirilir.

  • Adı: Yeni sütun için bir ad.

  • Typename: Dizi öğelerinin temel alınan türünü gösterir; bu, işleç tarafından üretilen sütunun türü olur mv-expand . Türü uygulama işlemi yalnızca tür dönüştürme işlemidir ve ayrıştırmayı veya tür dönüştürmeyi içermez. Bildirilen türle uyumlu olmayan dizi öğeleri değer olur null .

  • RowLimit: Her özgün satırdan oluşturulan maksimum satır sayısı. Varsayılan değer 2147483647’dir.

    Not

    mvexpand , işlecinin eski ve eski bir biçimidir mv-expand. Eski sürümün varsayılan satır sınırı 128'tir.

  • IndexColumnName: Belirtilirse with_itemindex , çıkışta özgün genişletilmiş koleksiyondaki öğenin dizinini (0'dan başlayarak) içeren başka bir sütun ( IndexColumnName adlı) yer akar.

Döndürülenler

Girişte yer alan her kayıt için işleç, çıkışta aşağıdaki şekilde belirlenen sıfır, bir veya daha fazla kayıt döndürür:

  1. Genişletilen giriş sütunları çıkışta özgün değerleriyle birlikte görüntülenir. Tek bir giriş kaydı birden çok çıkış kaydına genişletilirse, değer tüm kayıtlara yineler.

  2. Genişletilen her ColumnNameveya ArrayExpression için, aşağıda açıklanan şekilde her bir değer için çıkış kaydı sayısı belirlenir. Her giriş kaydı için en fazla çıkış kaydı sayısı hesaplanır. Eksik değerlerin (varsa) null değerlerle değiştirilmesi için tüm diziler veya özellik torbaları "paralel" olarak genişletilir. Öğeler, özgün dizide/pakette görünme sırasına göre satırlara genişletilir.

  3. Dinamik değer null ise, bu değer (null) için tek bir kayıt üretir. Dinamik değer boş bir dizi veya özellik çantası ise, bu değer için kayıt üretilmz. Aksi takdirde, dinamik değerde öğeler olduğu kadar çok kayıt üretilsin.

Genişletilmiş sütunlar, yan tümcesi dynamickullanılarak açıkça yazıldıkları sürece türündedir to typeof() .

Genişletme modları

İki özellik paketi genişletme modu de desteklemektedir:

  • bagexpansion=bag veya kind=bag: Özellik torbaları tek girişli özellik torbalarına genişletilir. Bu mod varsayılan moddur.
  • bagexpansion=arrayveya kind=array: Özellik torbaları iki öğeli anahtardeğer,][ dizisi yapılarına genişletilir ve anahtarlara ve değerlere tekdüz erişim sağlar. Bu mod, örneğin özellik adları üzerinde ayrı sayım toplaması çalıştırmaya da olanak sağlar.

Örnekler

Tek Sütun

Tek bir sütunun basit bir genişletmesi:

datatable (a:int, b:dynamic)[1,dynamic({"prop1":"a", "prop2":"b"})]
| mv-expand b 
a b
1 {"prop1":"a"}
1 {"prop2":"b"}

İki sütunu sıkıştırdı

İki sütunun genişletilmesi, önce ilgili sütunların 'zip' olarak genişletilmesi ve ardından bunları genişletmesi gerekir:

datatable (a:int, b:dynamic, c:dynamic)[1,dynamic({"prop1":"a", "prop2":"b"}), dynamic([5, 4, 3])]
| mv-expand b, c
a b c
1 {"prop1":"a"} 5
1 {"prop2":"b"} 4
1 3

İki sütunun kartesyen ürünü

İki sütunu genişletmenin Kartesyen bir ürününü almak için, bir tane daha genişletin:

datatable (a:int, b:dynamic, c:dynamic)
  [
  1,
  dynamic({"prop1":"a", "prop2":"b"}),
  dynamic([5, 6])
  ]
| mv-expand b
| mv-expand c
a b c
1 { "prop1": "a"} 5
1 { "prop1": "a"} 6
1 { "prop2": "b"} 5
1 { "prop2": "b"} 6

Çıktıyı dönüştürme

Bir mv-expand'ın çıkışını belirli bir türe zorlamak için (varsayılan dinamiktir) kullanın to typeof:

datatable (a:string, b:dynamic, c:dynamic)["Constant", dynamic([1,2,3,4]), dynamic([6,7,8,9])]
| mv-expand b, c to typeof(int)
| getschema 
ColumnName ColumnOrdinal Datetype ColumnType
a 0 System string
b 1 System.Object dynamic
c 2 System.Int32 int

olarak döndürülürken b sütun olarak dynamic döndürüldüc.int

With_itemindex

ile bir dizinin genişletilmesi with_itemindex:

range x from 1 to 4 step 1
| summarize x = make_list(x)
| mv-expand with_itemindex=Index x
x Dizin oluşturma
1 0
2 1
3 2
4 3

Ayrıca bkz.