mv-expand işleci
Şunlar için geçerlidir: ✅Microsoft Fabric✅
Çok değerli dinamik dizileri veya özellik torbalarını birden çok kayda genişletir.
mv-expand
,... ve summarize
gibi tek make-list()
türdeki dizi veya özellik paketinde birden çok değer paketleyen toplama işleçlerinin tersi olarak make-series
tanımlanabilir.
(skaler) dizisindeki veya özellik paketindeki her öğe, işlecin çıkışında yeni bir kayıt oluşturur. Girişin genişletilmeyen tüm sütunları çıktıdaki tüm kayıtlara çoğaltılır.
Sözdizimi
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 | Zorunlu | Açıklama |
---|---|---|---|
ColumnName, ArrayExpression | string |
✔️ | Bir sütun başvurusu veya diziyi veya özellik paketini tutan türde dynamic bir değere sahip bir skaler ifade. Dizi veya özellik paketinin tek tek ü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. | |
Tür adı | 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 birden çok 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 torbaları "paralel" olarak genişletilir. Öğeler, özgün dizide/çantada göründükleri sırayla satırlara genişletilir.
Dinamik değer null ise, bu değer (null) için tek bir kayıt oluşturulur. Dinamik değer boş bir dizi veya özellik paketiyse, bu değer için hiçbir kayıt üretilmemiştir. Aksi takdirde, dinamik değerde öğeler olduğu kadar çok kayıt oluşturulur.
Genişletilmiş sütunlar, yan tümcesi kullanılarak dynamic
açıkça yazılmadığı sürece türündedirto typeof()
.
Genişletme modları
İki özellik paketi genişletme modu desteklenir:
-
kind=bag
veyabagexpansion=bag
: Özellik torbaları tek girişli özellik torbalarına genişletilir. Bu mod varsayılan moddur. -
kind=array
veyabagexpansion=array
: Özellik torbaları iki öğeli[
,
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ı toplama işlemi çalıştırmaya da olanak tanır.
Örnekler
Bu makaledeki örneklerde, Örnekleri veritabanındaki
StormEvents
tablosu gibi yardım kümesiiçindeki genel kullanıma açık tablolar kullanılır.
Bu makaledeki örneklerde, Weather analytics
StormEvents
içindeki tablosu gibi genel kullanıma açık tablolar kullanılır.
Bu bölümdeki örneklerde, kullanmaya başlamanıza yardımcı olması için söz diziminin nasıl kullanılacağı gösterilmektedir.
Tek sütun - dizi genişletme
datatable (a: int, b: dynamic)
[
1, dynamic([10, 20]),
2, dynamic(['a', 'b'])
]
| mv-expand b
Çıktı
a | b |
---|---|
1 | 10 |
1 | 20 |
2 | a |
2 | b |
Tek sütunlu - 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
Çıktı
a | b |
---|---|
1 | {"prop1": "a1"} |
1 | {"prop2": "b1"} |
2 | {"prop1": "a2"} |
2 | {"prop2": "b2"} |
Tek sütun - anahtar-değer çiftlerine torba genişletme
Anahtar-değer çiftlerine basit bir çanta 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]
Çıktı
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 ilgili 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
Çıktı
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ü almak istiyorsanız, birbirinin arkası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
Çıktı
a | b | c |
---|---|---|
1 | { "prop1": "a"} | 5 |
1 | { "prop1": "a"} | 6 |
1 | { "prop2": "b"} | 5 |
1 | { "prop2": "b"} | 6 |
Çıkışı dönüştür
Bir 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
Çıktı
ColumnName | ColumnOrdinal | DateType | ColumnType |
---|---|---|---|
a | 0 | System.String | string |
b | 1 | System.Object | dynamic |
c | 2 | System.Int32 | int |
b
Sütunun olarak dynamic
döndürülürken c
olarak döndürülür int
olduğuna dikkat edin.
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
Çıktı
x | Dizin oluşturma |
---|---|
1 | 0 |
2 | 1 |
3 | 2 |
4 | 3 |
İlgili içerik
- 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.
- parse_json işlevi