mv-expand-Operator - Azure Data Explorer & Real-Time Intelligence (2024)

  • Artikel

Erweitert dynamische Arrays oder Eigenschaftenbehälter mit mehreren Werten auf mehrere Datensätze.

mv-expand kann als Gegenteil der Aggregationsoperatoren beschrieben werden, die mehrere Werte in einem einzelnen Array oder Eigenschaftenbehälter des Typs dynamisch packen, z.B. summarize ... make-list() und make-series.Jedes Element im (skalaren) Array oder Eigenschaftenbehälter generiert einen neuen Datensatz in der Ausgabe des Operators. Alle nicht erweiterten Spalten der Eingabe werden in alle Datensätze in der Ausgabe dupliziert.

Syntax

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

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

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

NameTypErforderlichBESCHREIBUNG
ColumnName, ArrayExpressionstring✔️Ein Spaltenverweis oder ein skalarer Ausdruck mit einem Wert vom Typ dynamic , der ein Array oder einen Eigenschaftenbehälter enthält. Die einzelnen Elemente der obersten Ebene des Arrays oder Eigenschaftenbehälters werden auf mehrere Datensätze erweitert.
Wenn ArrayExpression verwendet wird und Name keinem Eingabespaltennamen entspricht, wird der erweiterte Wert auf eine neue Spalte in der Ausgabe erweitert. Andernfalls wird der vorhandene ColumnName-Wert ersetzt.
NamestringEin Name für die neue Spalte.
Typenamestring✔️Gibt den zugrunde liegenden Typ der Elemente des Arrays an, der zum Typ der vom Operator erzeugten mv-expand Spalte wird. Der Vorgang zum Anwenden des Typs ist nur Umwandlung und umfasst keine Analyse oder Typkonvertierung. Arrayelemente, die dem deklarierten Typ nicht entsprechen, werden zu null Werten.
RowLimitintDie maximale Anzahl von Zeilen, die aus jeder ursprünglichen Zeile generiert werden. Der Standardwert ist 2147483647. mvexpand ist eine Legacy- und veraltete Form des Operators mv-expand. Die Legacyversion weist ein Standardzeilenlimit von 128 auf.
IndexColumnNamestringWenn with_itemindex angegeben wird, enthält die Ausgabe eine weitere Spalte namens IndexColumnName , die den Index ab 0 des Elements in der ursprünglichen erweiterten Auflistung enthält.

Gibt zurück

Der Operator gibt für jeden Datensatz in der Eingabe null, einen oder mehrere Datensätze in der Ausgabe zurück, wie auf folgende Weise festgelegt:

  1. Nicht erweiterte Eingabespalten werden in der Ausgabe mit ihrem ursprünglichen Wert angezeigt.Wird ein einzelner Eingabedatensatz auf mehrere Ausgabedatensätze erweitert, wird der Wert in alle Datensätze dupliziert.

  2. Für jeden erweiterten ColumnName - oder ArrayExpression-Wert wird die Anzahl der Ausgabedatensätze für jeden Wert bestimmt, wie unter Erweiterungsmodi erläutert. Für jeden Eingabedatensatz wird die maximale Anzahl von Ausgabedatensätzen berechnet. Alle Arrays oder Eigenschaftenbehälter werden parallel erweitert, sodass fehlende Werte (sofern vorhanden) durch NULL-Werte ersetzt werden. Elemente werden in der Reihenfolge, in der Sie im ursprünglichen Array/in der ursprünglichen Sammlung angezeigt werden, in Zeilen erweitert.

  3. Ist der dynamische Wert NULL, wird ein einzelner Datensatz für diesen Wert erstellt (NULL).Ist der dynamische Wert ein leeres Array oder ein leerer Eigenschaftenbehälter, wird kein Datensatz für diesen Wert erstellt.Andernfalls werden so viele Datensätze erstellt, wie es Elemente im dynamischen Wert gibt.

Die erweiterten Spalten sind vom Typ dynamic, es sei denn, sie werden explizit mit der Klausel to typeof() typisiert.

Erweiterungsmodi

Zwei Erweiterungsmodi für Eigenschaftenbehälter werden unterstützt:

  • kind=bag oder bagexpansion=bag: Eigenschaftenbehälter werden zu Eigenschaftenbehältern mit einem einzelnen Eintrag erweitert. Dieser Modus ist der Standardmodus.
  • kind=array oder bagexpansion=array: Eigenschaftenbehälter werden zu Arraystrukturen mit den beiden Elementen [Schlüssel,Wert] erweitert und lassen den einheitlichen Zugriff auf Schlüssel und Werte zu. Dieser Modus ermöglicht beispielsweise auch das Ausführen einer distinct-count-Aggregation über Eigenschaftsnamen.

Beispiele

Einzelspalte – Arrayerweiterung

datatable (a: int, b: dynamic)[ 1, dynamic([10, 20]), 2, dynamic(['a', 'b'])]| mv-expand b

Ausgabe

ab
110
120
2a
2b

Einzelspalte – Taschenerweiterung

Eine einfache Erweiterung einer einzelnen Spalte:

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

Ausgabe

ab
1{"prop1": "a1"}
1{"prop2": "b1"}
2{"prop1": "a2"}
2{"prop2": "b2"}

Einzelspalte: Taschenerweiterung auf Schlüssel-Wert-Paare

Eine einfache Taschenerweiterung auf Schlüssel-Wert-Paare:

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]

Ausgabe

abSchlüsselVal
1["prop1","a1"]prop1a1
1["prop2","b1"]prop2b1
2["prop1","a2"]prop1a2
2["prop2","b2"]prop2b2

Zippen zweier Spalten

Wenn Sie zwei Spalten erweitern, werden die entsprechenden Spalten zuerst „gezippt“ und dann erweitert:

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

Ausgabe

abc
1{"prop1":"a"}5
1{"prop2":"b"}4
13

Kartesisches Produkt von zwei Spalten

Wenn Sie ein kartesisches Produkt des Erweiterns von zwei Spalten erhalten möchten, erweitern Sie ein Spalte nach der anderen:

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

Ausgabe

abc
1{ "prop1": "a"}5
1{ "prop1": "a"}6
1{ "prop2": "b"}5
1{ "prop2": "b"}6

Ausgabe konvertieren

Wenn Sie die Ausgabe von mv-expand für einen bestimmten Typ (standardmäßig dynamisch) erzwingen möchten, verwenden Sie 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 

Ausgabe

ColumnNameColumnOrdinalDateTypeColumnType
a0System.Stringstring
b1System.Objectdynamic
c2System.Int32int

Beachten Sie, dass die Spalte b als dynamic zurückgegeben wird, während c als intzurückgegeben wird.

Verwenden von with_itemindex

Erweitern eines Arrays mit with_itemindex:

range x from 1 to 4 step 1| summarize x = make_list(x)| mv-expand with_itemindex=Index x

Ausgabe

xIndex
10
21
32
43

Verwandte Inhalte

  • Weitere Beispiele finden Sie unter Diagrammanzahl von Liveaktivitäten im Zeitverlauf.
  • mv-apply-Operator
  • Das Gegenteil des mv-expand-Operators finden Sie unter summarize make_list().
  • Informationen zum Erweitern dynamischer JSON-Objekte in Spalten mithilfe von Eigenschaftenbehälterschlüsseln finden Sie unter bag_unpack() -Plug-In.
mv-expand-Operator - Azure Data Explorer & Real-Time Intelligence (2024)

References

Top Articles
Latest Posts
Article information

Author: Msgr. Benton Quitzon

Last Updated:

Views: 6136

Rating: 4.2 / 5 (63 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Msgr. Benton Quitzon

Birthday: 2001-08-13

Address: 96487 Kris Cliff, Teresiafurt, WI 95201

Phone: +9418513585781

Job: Senior Designer

Hobby: Calligraphy, Rowing, Vacation, Geocaching, Web surfing, Electronics, Electronics

Introduction: My name is Msgr. Benton Quitzon, I am a comfortable, charming, thankful, happy, adventurous, handsome, precious person who loves writing and wants to share my knowledge and understanding with you.