Dela via


Azure Data Explorer (Kusto)

Sammanfattning

Objekt beskrivning
Versionstillstånd Allmän tillgänglighet
Produkter Excel
Power BI (semantiska modeller)
Power BI (dataflöden)
Infrastrukturresurser (Dataflöde Gen2)
Power Apps (dataflöden)
Dynamics 365 Customer Insights
Autentiseringstyper som stöds Organisationskonto
Dokumentation om funktionsreferens

Kommentar

Vissa funktioner kan finnas i en produkt, men inte andra på grund av distributionsscheman och värdspecifika funktioner.

Förutsättningar

Funktioner som stöds

  • Importera
  • DirectQuery (Power BI-semantiska modeller)
  • Avancerade alternativ
    • Begränsa postnummer för frågeresultat
    • Begränsa datastorleken för frågeresultat i byte
    • Inaktivera trunkering av resultatuppsättningar
    • Ytterligare uppsättningsinstruktioner

Anslut till Azure Data Explorer från Power Query Desktop

Så här ansluter du till Azure Data Explorer från Power Query Desktop:

  1. Välj Azure Data Explorer (Kusto) i hämta dataupplevelsen. Hämta dataupplevelsen i Power Query Desktop varierar mellan appar. Mer information om Power Query Desktop för att hämta data för din app finns i Var du hämtar data.

  2. I Azure Data Explorer (Kusto) anger du namnet på ditt Azure Data Explorer-kluster. I det här exemplet använder du https://help.kusto.windows.net för att komma åt exempelhjälpklustret. För andra kluster är URL:en i formuläret https://< ClusterName.<>Region.kusto.windows.net>.

    Du kan också välja en databas som finns i klustret som du ansluter till och en av tabellerna i databasen eller en fråga som StormEvents | take 1000.

  3. Om du vill använda förhandsalternativ väljer du alternativet och anger de data som ska användas med det alternativet. Mer information: Anslut med hjälp av avancerade alternativ

    Kommentar

    Du kan behöva rulla ned för att visa alla avancerade alternativ och valet av dataanslutning.

  4. Välj antingen dataanslutningsläget Importera eller DirectQuery (endast Power BI Desktop). Mer information: När du ska använda import- eller direktfrågeläge

  5. Välj OK för att gå vidare.

    Skärmbild av dialogrutan Azure Data Explorer (Kusto) med URL:en för klustret angiven.

  6. Om du inte redan har en anslutning till klustret väljer du Logga in. Logga in med ett organisationskonto och välj sedan Anslut.

    Skärmbild av dialogrutan logga in för Azure Data Explorer med organisationskontot redo att loggas in.

  7. I Navigatör väljer du den databasinformation du vill ha och väljer sedan Läs in för att läsa in data eller Transformera data för att fortsätta transformera data i Power Query-redigeraren. I det här exemplet valdes StormEvents i exempeldatabasen.

    Skärmbild av navigatorn som är öppen och innehåller data från StormEvents i exempeldatabasen.

Anslut till Azure Data Explorer från Power Query Online

Så här ansluter du till Azure Data Explorer från Power Query Online:

  1. Välj alternativet Azure Data Explorer (Kusto) i hämta dataupplevelsen. Olika appar har olika sätt att komma till Power Query Online för att hämta data. Mer information om hur du kommer till Power Query Online för att hämta data från din app finns i Var du kan hämta data.

    Skärmbild av fönstret hämta data med Azure Data Explorer framhävt.

  2. I Anslut till datakällan anger du namnet på ditt Azure Data Explorer-kluster. I det här exemplet använder du https://help.kusto.windows.net för att komma åt exempelhjälpklustret. För andra kluster är URL:en i formuläret https://< ClusterName.<>Region.kusto.windows.net>.

    Du kan också välja en databas som finns i klustret som du ansluter till och en av tabellerna i databasen eller en fråga som StormEvents | take 1000.

    Skärmbild av sidan Välj datakälla för Azure Data Explorer (Kusto) med URL:en för klustret angiven.

  3. Om du vill använda förhandsalternativ väljer du alternativet och anger de data som ska användas med det alternativet. Mer information: Anslut med hjälp av avancerade alternativ

  4. Om det behövs väljer du den lokala datagatewayen i Datagateway.

  5. Om du inte redan har en anslutning till klustret väljer du Logga in. Logga in med ett organisationskonto.

  6. När du har loggat in väljer du Nästa.

  7. På sidan Välj data väljer du den databasinformation du vill ha och väljer sedan Transformera data eller Nästa för att fortsätta transformera data i Power Query-redigeraren. I det här exemplet valdes StormEvents i exempeldatabasen.

    Skärmbild av sidan Välj data som innehåller data från StormEvents i exempeldatabasen.

Anslut med hjälp av avancerade alternativ

Både Power Query Desktop och Power Query Online innehåller en uppsättning avancerade alternativ som du kan lägga till i din fråga om det behövs.

I följande tabell visas alla avancerade alternativ som du kan ange i Power Query Desktop och Power Query Online.

Avancerat alternativ beskrivning
Begränsa postnummer för frågeresultat Det maximala antalet poster som ska returneras i resultatet.
Begränsa datastorleken för frågeresultat i byte Den maximala datastorleken i byte som returneras i resultatet.
Inaktivera trunkering av resultatuppsättningar Aktivera eller inaktivera resultattrunkering med hjälp av begärandealternativet notruncation .
Ytterligare uppsättningsinstruktioner Anger frågealternativ för frågans varaktighet. Frågealternativ styr hur en fråga körs och returnerar resultat. Flera set-instruktioner kan avgränsas med semikolon.

Information om ytterligare avancerade alternativ som inte är tillgängliga i Power Query-användargränssnittet finns i Konfigurera anslutningsalternativ för Azure Data Explorer i en M-fråga.

När du ska använda import- eller direktfrågeläge

I importläge flyttas data till Power BI. I DirectQuery-läge efterfrågas data direkt från klustret.

Använd importläge när:

  • Datamängden är liten.
  • Du behöver inte data i nära realtid.
  • Dina data är redan aggregerade eller så utför du aggregering i Kusto.

Använd DirectQuery-läge när:

  • Datamängden är mycket stor.
  • Du behöver nästan realtidsdata.

Mer information om hur du använder DirectQuery finns i Om att använda DirectQuery i Power BI.

Tips om hur du använder Azure Data Explorer-anslutningsappen för att fråga efter data

Följande avsnitt innehåller tips och knep för att använda Kusto-frågespråk med Power Query.

Komplexa frågor i Power BI

Komplexa frågor uttrycks enklare i Kusto än i Power Query. De bör implementeras som Kusto-funktioner och anropas i Power BI. Den här metoden krävs när du använder DirectQuery med let -instruktioner i Kusto-frågan. Eftersom Power BI ansluter två frågor och let instruktioner inte kan användas med operatorn join kan syntaxfel uppstå. Spara därför varje del av kopplingen som en Kusto-funktion och låt Power BI koppla ihop dessa två funktioner.

Simulera en relativ datum-tid-operator

Power Query innehåller inte en relativ datum-tid-operator, till exempel ago(). Om du vill simulera ago()använder du en kombination av funktionerna DateTime.FixedLocalNow och #duration Power Query M.

I stället för den här frågan med operatorn ago() :

    StormEvents | where StartTime > (now()-5d)
    StormEvents | where StartTime > ago(5d)

Använd följande motsvarande fråga:

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", []),
    #"Filtered Rows" = Table.SelectRows(Source, each [StartTime] > (DateTime.FixedLocalNow()-#duration(5,0,0,0)))
in
    #"Filtered Rows"

Konfigurera anslutningsalternativ för Azure Data Explorer i en M-fråga

Du kan konfigurera alternativen för Azure Data Explorer-anslutningsappen från power query-redigeraren på M-frågespråket. Med de här alternativen kan du styra den genererade fråga som skickas till ditt Azure Data Explorer-kluster.

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [<options>])
in
    Source

Du kan använda något av följande alternativ i M-frågan:

Alternativ Exempel beskrivning
MaxRows [MaxRows=300000] Lägger till set-instruktionen truncationmaxrecords i din fråga. Åsidosätter det maximala standardantal poster som en fråga kan returnera till anroparen (trunkering).
Max. storlek [MaxSize=4194304] Lägger till set-instruktionen truncationmaxsize i din fråga. Åsidosätter den maximala standarddatastorlek som en fråga får återgå till anroparen (trunkering).
NoTruncate [NoTruncate=true] Lägger till set-instruktionen notruncation i din fråga. Gör det möjligt att förhindra trunkering av frågeresultatet som returneras till anroparen.
AdditionalSetStatements [AdditionalSetStatements="set query_datascope=hotcache"] Lägger till de angivna uppsättningsinstruktionerna i din fråga. Dessa instruktioner används för att ange frågealternativ under frågans varaktighet. Frågealternativ styr hur en fråga körs och returnerar resultat.
CaseInsensitive [CaseInsensitive=true] Gör att anslutningsappen genererar frågor som är skiftlägesokänsliga – frågor använder operatorn =~ i stället för operatorn == när värden jämförs.
ForceUseContains [ForceUseContains=true] Gör att anslutningsappen genererar frågor som används contains i stället för standard has när du arbetar med textfält. Även om has det är mycket mer högpresterande hanterar det inte understrängar. Mer information om skillnaden mellan de två operatorerna finns i strängoperatorer.
Timeout [Timeout=#duration(0,10,0,0)] Konfigurerar både klientens och serverns tidsgräns för frågan till den angivna varaktigheten.
ClientRequestIdPrefix [ClientRequestIdPrefix="MyReport"] Konfigurerar prefixet ClientRequestId för alla frågor som skickas av anslutningsappen. Detta gör att frågorna kan identifieras i klustret som kommer från en specifik rapport och/eller datakälla.

Kommentar

Du kan kombinera flera alternativ för att uppnå det beteende som krävs: [NoTruncate=true, CaseInsensitive=true]

Nå Kusto-frågegränser

Kusto-frågor returnerar som standard upp till 500 000 rader eller 64 MB enligt beskrivningen i frågegränser. Du kan åsidosätta dessa standardvärden med hjälp av avancerade alternativ i Anslutningsfönstret i Azure Data Explorer (Kusto ):

avancerade alternativ.

De här alternativen utfärdar uppsättningsuttryck med din fråga för att ändra standardfrågegränserna:

  • Begränsa postnumret för frågeresultat genererar en set truncationmaxrecords
  • Begränsa frågeresultatdatastorleken i Bytes genererar en set truncationmaxsize
  • Inaktivera trunkering av resultatuppsättningar genererar en set notruncation

Skiftlägeskänslig

Som standard genererar anslutningsappen frågor som använder skiftlägeskänsliga == operatorn vid jämförelse av strängvärden. Om data är skiftlägesokänsliga är detta inte det önskade beteendet. Om du vill ändra den genererade frågan använder du anslutningsalternativet CaseInsensitive :

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [CaseInsensitive=true]),
    #"Filtered Rows" = Table.SelectRows(Source, each [State] == "aLaBama")
in
    #"Filtered Rows"

Använda frågeparametrar

Du kan använda frågeparametrar för att ändra frågan dynamiskt.

Använda en frågeparameter i frågestegen

Du kan använda en frågeparameter i alla frågesteg som stöder den. Filtrera till exempel resultatet baserat på värdet för en parameter. I det här exemplet väljer du den nedrullningsbara menyn till höger State i kolumnen i Power Query-redigeraren, väljer Textfilter>är lika med och väljer sedan ALABAMA under Behåll rader där "State".

Filtrera resultat med hjälp av en parameter.

Ange parametrar för en Azure Data Explorer-funktion

Kusto-funktioner är ett bra sätt att underhålla komplexa Kusto-frågespråk frågor (KQL). Vi rekommenderar att du använder funktioner i stället för att bädda in KQL i Power Query. Den största fördelen med att använda funktionen är att logiken underhålls en gång i en miljö som är enkel att skapa och testa.

Funktioner kan också ta emot parametrar och därför lägga till stor flexibilitet för Power BI-användaren. Power BI har många sätt att dela upp data. Men alla filter och utsnitt läggs till efter den ursprungliga KQL och i många fall vill du använda filtrering i ett tidigt skede av frågan. Att använda funktioner och dynamiska parametrar är ett mycket effektivt sätt att anpassa den slutliga frågan.

Skapa en funktion

Du kan skapa följande funktion i alla Azure Data Explorer-kluster som du har åtkomst till, inklusive ett kostnadsfritt kluster. Funktionen returnerar tabellen SalesTable från hjälpklustret, filtrerad för försäljningstransaktioner som är större än eller mindre än ett tal som tillhandahålls av rapportanvändaren.

.create-or-alter  function LargeOrSmallSales(Cutoff:long,Op:string=">")
{
    cluster("help").database("ContosoSales").SalesTable
    | where  (Op==">" and SalesAmount >= Cutoff) or (Op=="<"  and SalesAmount <= Cutoff)
}

När du har skapat funktionen kan du testa den med hjälp av:

LargeOrSmallSales(2000,">")
| summarize Sales=tolong(sum(SalesAmount)) by Country

Du kan också testa den med hjälp av:

LargeOrSmallSales(20,"<")
| summarize Sales=tolong(sum(SalesAmount)) by Country
Använda funktionen i Power BI
  1. Anslut till klustret där du skapade funktionen.

  2. I Power Query-navigatören väljer du funktionen i listan med objekt. Anslutningsappen analyserar parametrarna och visar dem ovanför data på höger sida av navigatören.

    Skärmbild med parametrarna Cutoff och Op som visas ovanför data i navigatören.

  3. Lägg till värden i parametrarna och välj sedan Använd.

  4. När förhandsgranskningen visas väljer du Transformera data.

  5. Väl i Power Query-redigeraren skapar du två parametrar, en för gränsvärdet och en för operatorn.

  6. Gå tillbaka till LargeOrSmallSales frågan och ersätt värdena med frågeparametrarna i formelfältet.

    Skärmbild med funktionen LargeOrSmallSales med betoning på parametrarna Cutoff_Param och Op_Param i formelfältet.

  7. Från redigeraren skapar du två statiska tabeller (Ange data) för att ange alternativ för de två parametrarna. För cutoff kan du skapa en tabell med värden som 10, 50, 100, 200, 500, 1000, 2000. För , Open tabell med två textvärden < och >.

  8. De två kolumnerna i tabellerna måste bindas till frågeparametrarna med hjälp av valet Bind till parameter .

    Skärmbild där Op är bundet till parametern Op_Param.

Slutrapporten innehåller utsnitt för de två statiska tabellerna och eventuella visuella objekt från sammanfattningsförsäljningen.

Skärmbild i Power BI med alternativen Cutoff och Op som visas bredvid tabellen.

Bastabellen filtreras först och aggregeras sedan.

Använda en frågeparameter i anslutningsinformationen

Använd en frågeparameter för att filtrera information i frågan och optimera frågeprestanda.

I Avancerad redigerare:

  1. Hitta följande avsnitt i frågan:

    Källa = AzureDataExplorer.Contents("<Cluster>", "<Database>", "<Query>", [])

    Till exempel:

    Source = AzureDataExplorer.Contents("Help", "Samples", "StormEvents | where State == 'ALABAMA' | take 100", [])
    
  2. Infoga en frågeparameter i frågan Kusto-frågespråk (KQL).

    Om du klistrar in en KQL-fråga direkt i anslutningsdialogrutan är frågan en del av källsteget i Power Query. Du kan bädda in parametrar som en del av frågan med hjälp av den avancerade redigeraren eller när du redigerar källutsatsen i formelfältet. En exempelfråga kan vara StormEvents | where State == ' " & State & " ' | take 100. State är en parameter och under körningstiden blir frågan:

    StormEvents | where State == 'ALABAMA' | take 100

  3. Om frågan innehåller citattecken kodar du dem korrekt. Till exempel följande fråga i KQL:

    "StormEvents | where State == "ALABAMA" | take 100"
    

    visas i Avancerad redigerare enligt följande med två citattecken:

     "StormEvents | where State == ""ALABAMA"" | take 100"
    

    Om du använder en parameter, till exempel State, bör den ersättas med följande fråga, som innehåller tre citattecken:

    "StormEvents | where State == """ & State & """ | take 100"
    

Använda Value.NativeQuery för Azure Data Explorer-funktioner

Om du vill använda en Azure Data Explorer-funktion som inte stöds i Power Query använder du metoden Value.NativeQuery i Power Query M. Den här metoden infogar ett Kusto-frågespråk fragment i den genererade frågan och kan också användas för att ge dig mer kontroll över den körda frågan.

I följande exempel visas hur du percentiles använder funktionen i Azure Data Explorer:

let
    StormEvents = AzureDataExplorer.Contents(DefaultCluster, DefaultDatabase){[Name = DefaultTable]}[Data],
    Percentiles = Value.NativeQuery(StormEvents, "| summarize percentiles(DamageProperty, 50, 90, 95) by State")
in
    Percentiles

Använd inte Power BI-datauppdateringsschemaläggaren för att utfärda kontrollkommandon till Kusto

Power BI innehåller en datauppdateringsschemaläggare som regelbundet kan utfärda frågor mot en datakälla. Den här mekanismen bör inte användas för att schemalägga kontrollkommandon till Kusto eftersom Power BI förutsätter att alla frågor är skrivskyddade.