Azure Data Explorer (Kusto)
Zusammenfassung
Element | Beschreibung |
---|---|
Freigabestatus | Allgemeine Verfügbarkeit |
Produkte | Excel Power BI (Semantikmodelle) Power BI (Dataflows) Fabric (Dataflow Gen2) Power Apps (Dataflows) Dynamics 365 Customer Insights |
Unterstützte Authentifizierungstypen | Organisationskonto |
Funktionsreferenz-Dokumentation | — |
Hinweis
Einige Funktionen können in einem Produkt vorhanden sein, in anderen jedoch nicht, was an den Bereitstellungsplänen und hostspezifischen Funktionen liegt.
Voraussetzungen
Ein Azure-Abonnement. Navigieren Sie zu Kostenlose Azure-Testversion.
Ein Organisations-E-Mail-Konto, das Mitglied der Microsoft Entra-ID ist. In diesem Artikel wird dieses Konto verwendet, um eine Verbindung mit den Azure Data Explorer-Hilfeclusterbeispielen herzustellen.
Unterstützte Funktionen
- Importieren
- DirectQuery (semantische Power BI-Modelle)
- Erweiterte Optionen
- Datensatzanzahl für Abfrageergebnisse einschränken
- Die Größe von Abfrageergebnisdaten in Byte beschränken
- Abschneiden von Resultsets deaktivieren
- Zusätzliche SET-Anweisungen
Herstellen einer Verbindung mit Azure Data Explorer über Power Query Desktop
So stellen Sie eine Verbindung mit Azure Data Explorer über Power Query Desktop her:
Wählen Sie in der Benutzeroberfläche zum Abrufen von Daten Azure Data Explorer (Kusto) aus. Die Benutzeroberfläche zum Abrufen von Daten in Power Query Desktop ist je nach App unterschiedlich. Weitere Informationen zur Benutzeroberfläche zum Abrufen von Daten in Power Query Desktop für Ihre App finden Sie unter Wo man Daten abruft.
Geben Sie in Azure Data Explorer (Kusto) den Namen Ihres Azure Data Explorer-Clusters an. Verwenden Sie für dieses Beispiel
https://help.kusto.windows.net
, um auf den Beispielhilfecluster zuzugreifen. Für andere Cluster hat die URL das Format https://<Clustername>.<Region>.kusto.windows.net.Sie können auch eine Datenbank auswählen, die auf dem Cluster gehostet wird, mit dem Sie eine Verbindung herstellen, und eine der Tabellen in der Datenbank oder eine ähnliche Abfrage wie
StormEvents | take 1000
.Wenn Sie eine der erweiterten Optionen verwenden möchten, wählen Sie die Option aus und geben Sie die Daten ein, die Sie für diese Option verwenden möchten. Weitere Informationen: Herstellen einer Verbindung mithilfe der erweiterten Optionen
Hinweis
Möglicherweise müssen Sie nach unten scrollen, um alle erweiterten Optionen und die Datenkonnektivitätsauswahl anzuzeigen.
Wählen Sie entweder den Datenkonnektivitätsmodus Import oder DirectQuery aus (nur Power BI Desktop). Weitere Informationen: Verwendung des Import- oder DirectQuery-Modus
Klicken Sie auf OK , um fortzufahren.
Falls Sie noch keine Verbindung mit dem Cluster hergestellt haben, wählen Sie Anmelden aus. Melden Sie sich mit einem Organisationskonto an, und wählen Sie dann Verbinden aus.
Wählen Sie im Navigator die gewünschten Datenbankinformationen aus und anschließend Laden, um die Daten zu laden, oder Daten transformieren, um die Daten im Power Query-Editor weiter zu transformieren. In diesem Beispiel wurde StormEvents in der Beispieldatenbank ausgewählt.
Herstellen einer Verbindung mit Azure Data Explorer über Power Query Online
So stellen Sie eine Verbindung mit Azure Data Explorer über Power Query Online her:
Wählen Sie in der Benutzeroberfläche zum Abrufen von Daten die Option Azure Data Explorer (Kusto) aus. In verschiedenen Apps gibt es unterschiedliche Wege, um zur Benutzeroberfläche zum Abrufen von Daten in Power Query Online zu gelangen. Weitere Informationen dazu, wie Sie aus Ihrer App zur Benutzeroberfläche zum Abrufen von Daten in Power Query Online gelangen, finden Sie unter Wo man Daten abruft.
Geben Sie unter Mit Datenquelle verbinden den Namen Ihres Azure Data Explorer-Clusters an. Verwenden Sie für dieses Beispiel
https://help.kusto.windows.net
, um auf den Beispielhilfecluster zuzugreifen. Für andere Cluster hat die URL das Format https://<Clustername>.<Region>.kusto.windows.net.Sie können auch eine Datenbank auswählen, die auf dem Cluster gehostet wird, mit dem Sie eine Verbindung herstellen, und eine der Tabellen in der Datenbank oder eine ähnliche Abfrage wie
StormEvents | take 1000
.Wenn Sie eine der erweiterten Optionen verwenden möchten, wählen Sie die Option aus und geben Sie die Daten ein, die Sie für diese Option verwenden möchten. Weitere Informationen: Herstellen einer Verbindung mithilfe der erweiterten Optionen
Wählen Sie bei Bedarf das lokale Datengateway unter Datengateway aus.
Falls Sie noch keine Verbindung mit dem Cluster hergestellt haben, wählen Sie Anmelden aus. Melden Sie sich mit einem Unternehmenskonto an.
Nachdem Sie sich erfolgreich angemeldet haben, wählen Sie Weiter aus.
Wählen Sie auf der Seite Daten auswählen die gewünschten Datenbankinformationen aus und anschließend Daten transformieren oder Weiter, um die Daten im Power Query-Editor weiter zu transformieren. In diesem Beispiel wurde StormEvents in der Beispieldatenbank ausgewählt.
Verbinden mithilfe erweiterter Optionen
Sowohl Power Query Desktop als auch Power Query Online bieten eine Reihe von erweiterten Optionen, die Sie bei Bedarf zu Ihrer Abfrage hinzufügen können.
In der folgenden Tabelle sind alle erweiterten Optionen aufgeführt, die Sie in Power Query Desktop und Power Query Online einstellen können.
Erweiterte Option | Beschreibung |
---|---|
Datensatzanzahl für Abfrageergebnisse einschränken | Maximale Anzahl der im Ergebnis zurückzugebender Datensätze. |
Die Größe von Abfrageergebnisdaten in Byte beschränken | Maximale Datengröße in Bytes, die im Ergebnis zurückgegeben werden soll. |
Abschneiden von Resultsets deaktivieren | Aktivieren oder deaktivieren Sie die Ergebniskürzung, indem Sie die Anforderungsoption notruncation verwenden. |
Zusätzliche SET-Anweisungen | Legt Abfrageoptionen für die Dauer der Abfrage fest. Mit Abfrageoptionen wird gesteuert, wie eine Abfrage ausgeführt wird und wie Ergebnisse zurückgegeben werden. Mehrere SET-Anweisungen können durch Semikolons getrennt werden. |
Informationen zu zusätzlichen erweiterten Optionen, die auf der Power Query-Benutzeroberfläche nicht verfügbar sind, finden Sie unter Konfigurieren von Optionen für den Azure Data Explorer-Connector in M-Abfragen.
Verwendung des Import- oder DirectQuery-Modus
Im Import-Modus werden Daten nach Power BI verschoben. Im DirectQuery-Modus werden Daten direkt aus Ihrem Cluster abgefragt.
Verwenden Sie den Import-Modus in folgenden Fällen:
- Ihr Dataset ist klein.
- Sie benötigen keine Fast-Echtzeitdaten.
- Ihre Daten sind bereits aggregiert, oder Sie führen die Aggregation in Kusto aus.
Verwenden Sie den DirectQuery-Modus in folgenden Fällen:
- Ihr Dataset ist sehr umfangreich.
- Sie benötigen Fast-Echtzeitdaten.
Weitere Informationen zur Verwendung von DirectQuery finden Sie unter Informationen zur Verwendung von DirectQuery in Power BI.
Tipps zur Datenabfrage mit dem Azure Data Explorer-Connector
Die folgenden Abschnitte enthalten Tipps und Tricks zur Verwendung der Kusto-Abfragesprache mit Power Query.
Komplexe Abfragen in Power BI
Komplexe Abfragen lassen sich einfacher in Kusto als in Power Query ausdrücken. Sie sollten als Kusto-Funktionen implementiert und in Power BI aufgerufen werden. Diese Methode ist erforderlich, wenn Sie DirectQuery mit let
-Anweisungen in der Kusto-Abfrage verwenden. Da Power BI zwei Abfragen miteinander verknüpft und let
-Anweisungen nicht mit dem join
-Operator verwendet werden können, treten möglicherweise Syntaxfehler auf. Daher sollten Sie jeden Teil der Verknüpfung als Kusto-Funktion speichern und zulassen, dass diese beiden Funktionen von Power BI verknüpft werden.
Simulieren eines relativen DateTime-Operators
Power Query enthält keinen relativen DateTime-Operator wie ago()
.
Verwenden Sie zum Simulieren von ago()
eine Kombination aus den Power Query M-Funktionen DateTime.FixedLocalNow und #duration.
Verwenden Sie anstelle dieser Abfrage, die den ago()
-Operator enthält:
StormEvents | where StartTime > (now()-5d)
StormEvents | where StartTime > ago(5d)
Die folgende äquivalente Abfrage:
let
Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", []),
#"Filtered Rows" = Table.SelectRows(Source, each [StartTime] > (DateTime.FixedLocalNow()-#duration(5,0,0,0)))
in
#"Filtered Rows"
Konfigurieren von Optionen für den Azure Data Explorer-Connector in einer M-Abfrage
Sie können die Optionen des Azure Data Explorer-Connectors über den erweiterten Power Query-Editor in der Abfragesprache M konfigurieren. Mithilfe dieser Optionen können Sie die generierte Abfrage steuern, die an Ihren Azure Data Explorer-Cluster gesendet wird.
let
Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [<options>])
in
Source
Sie können eine der folgenden Optionen in der M-Abfrage verwenden:
Option | Beispiel | Beschreibung |
---|---|---|
MaxRows | [MaxRows=300000] |
Fügt die Set-Anweisung truncationmaxrecords zur Abfrage hinzu. Überschreibt die standardmäßige maximale Anzahl von Datensätzen, die eine Abfrage an den Aufrufer zurückgeben kann (Kürzung). |
MaxSize | [MaxSize=4194304] |
Fügt die Set-Anweisung truncationmaxsize zur Abfrage hinzu. Überschreibt die standardmäßige maximale Datengröße, die eine Abfrage an den Aufrufer zurückgeben darf (Kürzung). |
NoTruncate | [NoTruncate=true] |
Fügt die Set-Anweisung notruncation zur Abfrage hinzu. Dadurch kann die Kürzung der an den Aufrufer zurückgegebenen Abfrageergebnisse unterdrückt werden. |
AdditionalSetStatements | [AdditionalSetStatements="set query_datascope=hotcache"] |
Fügt der Abfrage die bereitgestellten Set-Anweisungen hinzu. Diese Anweisungen werden zum Festlegen von Abfrageoptionen für die Dauer der Abfrage verwendet. Mit Abfrageoptionen wird gesteuert, wie eine Abfrage ausgeführt wird und wie Ergebnisse zurückgegeben werden. |
CaseInsensitive | [CaseInsensitive=true] |
Diese Option bewirkt, dass der Connector Abfragen generiert, bei denen die Groß-/Kleinschreibung nicht beachtet wird. Abfragen verwenden beim Vergleichen von Werten den Operator =~ anstelle des Operators == . |
ForceUseContains | [ForceUseContains=true] |
Diese Option bewirkt, dass der Connector bei der Verwendung von Textfeldern Abfragen generiert, die contains anstelle des Standardwerts has verwenden. has ist zwar viel leistungsfähiger, damit werden aber keine Teilzeichenfolgen behandelt. Weitere Informationen zu den Unterschieden zwischen den beiden Operatoren finden Sie unter Zeichenfolgenoperatoren. |
Timeout | [Timeout=#duration(0,10,0,0)] |
Dient zum Festlegen des Client- und Servertimeouts der Abfrage auf die angegebene Dauer. |
ClientRequestIdPrefix | [ClientRequestIdPrefix="MyReport"] |
Konfiguriert ein ClientRequestId-Präfix für alle vom Connector gesendeten Abfragen. Dadurch können die Abfragen im Cluster als aus einem bestimmten Bericht und/oder einer bestimmten Datenquelle stammend identifiziert werden. |
Hinweis
Sie können mehrere Optionen miteinander kombinieren, um das erforderliche Verhalten zu erzielen: [NoTruncate=true, CaseInsensitive=true]
Erreichen der Kusto-Abfragegrenzwerte
Kusto-Abfragen geben standardmäßig bis zu 500.000 Zeilen oder 64 MB zurück, wie unter Abfragegrenzwerte beschrieben. Sie können diese Standardwerte außer Kraft setzen, indem Sie im Verbindungsfenster von Azure Data Explorer (Kusto) die Option Erweiterte Optionen verwenden:
Durch diese Optionen werden mit Ihrer Abfrage SET-Anweisungen ausgegeben, um die standardmäßigen Abfragegrenzwerte zu ändern:
- Datensatzanzahl für Abfrageergebnisse einschränken generiert
set truncationmaxrecords
. - Datengröße in Bytes für Abfrageergebnisse einschränken generiert
set truncationmaxsize
. - Abschneiden von Resultsets deaktivieren generiert
set notruncation
.
Groß- und Kleinschreibung
Der Connector generiert standardmäßig Abfragen, die beim Vergleichen von Zeichenfolgenwerten den Operator ==
verwenden, bei dem die Groß-/Kleinschreibung beachtet werden muss. Wird bei den Daten die Groß-/Kleinschreibung nicht beachtet, ist dies nicht das gewünschte Verhalten. Verwenden Sie die Connectoroption CaseInsensitive
, um die generierte Abfrage zu ändern:
let
Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [CaseInsensitive=true]),
#"Filtered Rows" = Table.SelectRows(Source, each [State] == "aLaBama")
in
#"Filtered Rows"
Verwenden von Abfrageparametern
Mit Abfrageparametern können Sie die Abfrage dynamisch ändern.
Verwenden eines Abfrageparameters in den Abfrageschritten
Abfrageparameter können in beliebigen Abfrageschritten verwendet werden, vorausgesetzt, sie werden unterstützt. Filtern Sie die Ergebnisse z. B. basierend auf dem Wert eines Parameters. Wählen Sie in diesem Beispiel das Dropdownmenü auf der rechten Seite der Spalte State
im Power Query-Editor aus, wählen Sie Textfilter>gleich aus und dann unter Zeilen mit „Status“ beibehalten die Option ALABAMA.
Bereitstellen von Parametern für eine Azure Data Explorer-Funktion
Kusto-Funktionen sind eine hervorragende Möglichkeit, komplexe Kusto Query Language (KQL)-Abfragen zu verwalten. Es wird die Verwendung von Funktionen empfohlen, anstelle des Einbettens von KQL in Power Query. Der Hauptvorteil der Verwendung von Funktionen besteht darin, dass die Logik einmal in einer Umgebung verwaltet wird, die einfach zu erstellen und zu testen ist.
Funktionen können auch Parameter empfangen und so Power BI-Benutzers viel Flexibilität verleihen. Power BI bietet viele Möglichkeiten zum Segmentieren der Daten. Aber alle Filter und Slicer werden nach dem ursprünglichen KQL hinzugefügt, und in vielen Fällen sollten Sie die Filterung in einem frühen Stadium der Abfrage verwenden. Die Verwendung von Funktionen und dynamischen Parametern ist eine sehr effektive Möglichkeit, die endgültige Abfrage anzupassen.
Erstellen einer Funktion
Sie können die folgende Funktion in jedem Azure Data Explorer-Cluster erstellen, auf den Sie Zugriff haben, einschließlich eines kostenlosen Clusters. Die Funktion gibt die Tabelle SalesTable
aus dem Hilfecluster zurück, gefiltert nach Verkaufstransaktionen, die größer oder kleiner als eine vom Berichtsbenutzer bereitgestellte Zahl sind.
.create-or-alter function LargeOrSmallSales(Cutoff:long,Op:string=">")
{
cluster("help").database("ContosoSales").SalesTable
| where (Op==">" and SalesAmount >= Cutoff) or (Op=="<" and SalesAmount <= Cutoff)
}
Nachdem Sie die Funktion erstellt haben, können Sie sie testen mithilfe von:
LargeOrSmallSales(2000,">")
| summarize Sales=tolong(sum(SalesAmount)) by Country
Sie können sie auch folgendermaßen testen:
LargeOrSmallSales(20,"<")
| summarize Sales=tolong(sum(SalesAmount)) by Country
Verwenden der Funktion in Power BI
Stellen Sie eine Verbindung mit dem Cluster her, in dem Sie die Funktion erstellt haben.
Wählen Sie im Power Query-Navigator die Funktion aus der Liste der Objekte aus. Der Verbinder analysiert die Parameter und stellt sie über den Daten auf der rechten Seite des Navigators dar.
Fügen Sie den Parametern Werte hinzu, und wählen Sie dann Übernehmen aus.
Wählen Sie nach dem Anzeigen der Vorschau die Option Daten transformieren aus.
Erstellen Sie im Power Query-Editor zwei Parameter, einen für den Grenzwert und einen für den Operator.
Gehen Sie zurück zur
LargeOrSmallSales
-Abfrage, und ersetzen Sie die Werte durch die Abfrageparameter in der Bearbeitungsleiste.Erstellen Sie im Editor zwei statische Tabellen (Daten eingeben), um Optionen für die beiden Parameter bereitzustellen. Für den Grenzwert können Sie eine Tabelle mit Werten wie 10, 50, 100, 200, 500, 1000, 2000 erstellen. Für
Op
eine Tabelle mit zwei Textwerten,<
und>
.Die beiden Spalten in den Tabellen müssen mithilfe der Auswahl An Parameter binden an die Abfrageparameter gebunden werden.
Der endgültige Bericht enthält Slicer für die beiden statischen Tabellen und alle visuellen Elemente aus dem Zusammenfassungsumsatz.
Die Basistabelle wird zuerst gefiltert und dann aggregiert.
Verwenden eines Abfrageparameters in den Verbindungsdetails
Verwenden Sie einen Abfrageparameter, um Informationen in der Abfrage zu filtern und die Abfrageleistung zu optimieren.
Im erweiterten Editor:
Suchen Sie den folgenden Abschnitt in der Abfrage:
Source = AzureDataExplorer.Contents("<Cluster>", "<Database>", "<Query>", [])
Zum Beispiel:
Source = AzureDataExplorer.Contents("Help", "Samples", "StormEvents | where State == 'ALABAMA' | take 100", [])
Fügen Sie einen Abfrageparameter in die KQL-Abfrage (Kusto Query Language) ein.
Wenn Sie eine KQL-Abfrage direkt in das Verbindungsdialogfeld einfügen, ist die Abfrage Teil des Quellschritts in Power Query. Sie können Parameter als Teil der Abfrage mithilfe des erweiterten Editors oder beim Bearbeiten der Quellausweisung in der Bearbeitungsleiste einbetten. Eine Beispielabfrage könnte
StormEvents | where State == ' " & State & " ' | take 100
sein.State
ist ein Parameter und während der Laufzeit lautet die Abfrage wie folgt:StormEvents | where State == 'ALABAMA' | take 100
Wenn die Abfrage Anführungszeichen enthält, codieren Sie sie ordnungsgemäß. Beispielsweise in der folgenden Abfrage in KQL:
"StormEvents | where State == "ALABAMA" | take 100"
im Erweiterten Editor mit zwei Anführungszeichen wie folgt angezeigt:
"StormEvents | where State == ""ALABAMA"" | take 100"
Wenn Sie einen Parameter verwenden, wie z. B.
State
, sollte er durch die folgende Abfrage ersetzt werden, die drei Anführungszeichen enthält:"StormEvents | where State == """ & State & """ | take 100"
Verwenden von Value.NativeQuery für Azure Data Explorer-Features
Wenn Sie ein Azure Data Explorer-Feature nutzen möchten, das in Power Query nicht unterstützt wird, verwenden Sie die Methode Value.NativeQuery in Power Query. Mit dieser Methode wird ein Fragment der Kusto-Abfragesprache in die generierte Abfrage eingefügt, und Sie haben mit dieser Methode außerdem mehr Kontrolle über die ausgeführte Abfrage.
Im folgenden Beispiel wird die Verwendung der percentiles
-Funktion in Azure Data Explorer veranschaulicht:
let
StormEvents = AzureDataExplorer.Contents(DefaultCluster, DefaultDatabase){[Name = DefaultTable]}[Data],
Percentiles = Value.NativeQuery(StormEvents, "| summarize percentiles(DamageProperty, 50, 90, 95) by State")
in
Percentiles
Verwenden Sie keinen Power BI-Datenaktualisierungsplaner, um Steuerungsbefehle für Kusto auszugeben
Power BI enthält einen Datenaktualisierungsplaner, der regelmäßig Abfragen für eine Datenquelle ausgeben kann. Dieser Mechanismus sollte nicht verwendet werden, um Steuerungsbefehle für Kusto zu planen, da Power BI voraussetzt, dass alle Abfragen schreibgeschützt sind.