mv-expand işleci
Çok değerli dinamik dizileri veya özellik torbalarını birden çok kayda genişletir.
mv-expand
birden çok değeri tek bir dinamik türü belirlenmiş dizide veya özellik paketinde (... ve make-series
gibi) paketleyen toplama işleçlerinin tersi olarak summarize
tanımlanabilir. make-list()
(skaler) dizi veya özellik paketindeki her öğe, işlecin çıkışında yeni bir kayıt oluşturur. Girişin genişletilmeyen tüm sütunları çıkıştaki tüm kayıtlara çoğaltılır.
Syntax
T|mv-expand
[kind=
(bag
| array
)] [with_itemindex=
IndexColumnName] ColumnName [to typeof(
Typename)
] [,
ColumnName ...] [limit
Rowlimit]
T|mv-expand
[kind=
(bag
array
| )] [Name=
] ArrayExpression [to typeof(
Typename)
] [,
[Name=
] ArrayExpression [to typeof(
Typename)
] ...] [limit
Rowlimit]
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Gerekli | Açıklama |
---|---|---|---|
ColumnName, ArrayExpression | string |
✔️ | Bir sütun başvurusu veya diziyi veya özellik çantasını tutan türde dynamic bir değere sahip skaler ifade. Dizi veya özellik çantasının tek tek en üst düzey öğeleri birden çok kayda genişletir.ArrayExpression kullanıldığında ve Ad herhangi bir giriş sütunu adına eşit olmadığında, genişletilmiş değer çıktıda yeni bir sütuna genişletilir. Aksi takdirde, mevcut ColumnName değiştirilir. |
Ad | string |
Yeni sütun için bir ad. | |
Typename | string |
✔️ | Dizi öğelerinin temel türünü gösterir ve bu, işleç tarafından mv-expand üretilen sütunun türü olur. Tür uygulama işlemi yalnızca atamadır ve ayrıştırma veya tür dönüştürme içermez. Bildirilen türle uyumlu olmayan dizi öğeleri değerlere dönüşür null . |
RowLimit | int |
Her özgün satırdan oluşturulan en fazla satır sayısı. Varsayılan değer 2147483647’dir. mvexpand işlecinin mv-expand eski ve eski bir biçimidir. Eski sürümde varsayılan satır sınırı 128'dir. |
|
IndexColumnName | string |
belirtilirse with_itemindex çıkış, özgün genişletilmiş koleksiyondaki öğenin 0'ında başlayan dizini içeren IndexColumnName adlı başka bir sütun içerir. |
Döndürülenler
Girişteki her kayıt için işleç, aşağıdaki şekilde belirlendiği gibi çıkışta sıfır, bir veya daha fazla kayıt döndürür:
Genişletilmeyen giriş sütunları çıkışta özgün değerleriyle birlikte görünür. Tek bir giriş kaydı birden çok çıkış kaydına genişletilirse, değer tüm kayıtlara çoğaltılır.
Genişletilen her ColumnName veya ArrayExpression için, genişletme modlarında açıklandığı gibi her değer için çıkış kayıtlarının 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 paketleri "paralel" olarak genişletilir. Öğeler, özgün dizide/torbada göründükleri sırayla satırlara genişletilir.
Dinamik değer null ise, bu değer için tek bir kayıt oluşturulur (null). Dinamik değer boş bir dizi veya özellik paketiyse, bu değer için hiçbir kayıt üretilmemiştir. Aksi takdirde, dinamik değerdeki öğeler kadar çok kayıt oluşturulur.
Genişletilmiş sütunlar, yan tümcesi kullanılarak to typeof()
açıkça yazılmadıkça türündedirdynamic
.
Genişletme modları
İki özellik paketi genişletme modu desteklenir:
kind=bag
veyabagexpansion=bag
: Özellik çantaları tek girişli özellik torbalarına genişletilir. Bu mod varsayılan moddur.kind=array
veyabagexpansion=array
: Özellik paketleri iki öğeli[
anahtar,
değeri]
dizi yapılarına genişletilir ve anahtarlara ve değerlere tekdüzen erişim sağlar. Bu mod, örneğin özellik adları üzerinde ayrı sayı toplaması çalıştırmaya da olanak tanır.
Örnekler
Tek sütun - dizi genişletme
datatable (a: int, b: dynamic)
[
1, dynamic([10, 20]),
2, dynamic(['a', 'b'])
]
| mv-expand b
Çıkış
a | b |
---|---|
1 | 10 |
1 | 20 |
2 | a |
2 | b |
Tek sütun - torba genişletme
Tek bir sütunun basit genişletmesi:
datatable (a: int, b: dynamic)
[
1, dynamic({"prop1": "a1", "prop2": "b1"}),
2, dynamic({"prop1": "a2", "prop2": "b2"})
]
| mv-expand b
Çıkış
a | b |
---|---|
1 | {"prop1": "a1"} |
1 | {"prop2": "b1"} |
2 | {"prop1": "a2"} |
2 | {"prop2": "b2"} |
Tek sütun - anahtar-değer çiftlerine paket genişletme
Anahtar-değer çiftlerine basit bir paket genişletmesi:
datatable (a: int, b: dynamic)
[
1, dynamic({"prop1": "a1", "prop2": "b1"}),
2, dynamic({"prop1": "a2", "prop2": "b2"})
]
| mv-expand kind=array b
| extend key = b[0], val=b[1]
Çıkış
a | b | anahtar | Val |
---|---|---|---|
1 | ["prop1","a1"] | prop1 | a1 |
1 | ["prop2","b1"] | prop2 | b1 |
2 | ["prop1","a2"] | prop1 | a2 |
2 | ["prop2","b2"] | prop2 | B2 |
sıkıştırılmış iki sütun
İki sütunun genişletilmesi önce geçerli sütunları 'sıkıştıracak' ve sonra da genişletecektir:
datatable (a: int, b: dynamic, c: dynamic)[
1, dynamic({"prop1": "a", "prop2": "b"}), dynamic([5, 4, 3])
]
| mv-expand b, c
Çıkış
a | b | c |
---|---|---|
1 | {"prop1":"a"} | 5 |
1 | {"prop2":"b"} | 4 |
1 | 3 |
İki sütunun kartezyen ürünü
İki sütunu genişleten bir Kartezyen ürünü elde etmek istiyorsanız, birini ardı ardına genişletin:
datatable (a: int, b: dynamic, c: dynamic)
[
1, dynamic({"prop1": "a", "prop2": "b"}), dynamic([5, 6])
]
| mv-expand b
| mv-expand c
Çıkış
a | b | c |
---|---|---|
1 | { "prop1": "a"} | 5 |
1 | { "prop1": "a"} | 6 |
1 | { "prop2": "b"} | 5 |
1 | { "prop2": "b"} | 6 |
Çıkışı dönüştür
Mv-expand'in çı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
Çıkış
ColumnName | ColumnOrdinal | Datetype | ColumnType |
---|---|---|---|
a | 0 | System | string |
b | 1 | System.Object | dynamic |
c | 2 | System.Int32 | int |
Sütunun olarak dynamic
döndürülürken c
olarak döndürülürint
.b
with_itemindex kullanma
ile with_itemindex
bir dizinin genişletilmesi:
range x from 1 to 4 step 1
| summarize x = make_list(x)
| mv-expand with_itemindex=Index x
Çıkış
x | Dizin oluşturma |
---|---|
1 | 0 |
2 | 1 |
3 | 2 |
4 | 3 |
İlgili içerik
- Daha fazla örnek için bkz. Zaman içindeki canlı etkinliklerin grafik sayısı.
- mv-apply işleci.
- mv-expand işlecinin tersi için bkz. summarize make_list().
- Özellik paketi anahtarlarını kullanarak dinamik JSON nesnelerini sütunlara genişletmek için bkz. bag_unpack() eklentisi.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin