Używanie dynamicznych parametrów zapytania języka M z usługą Azure Data Explorer dla usługi Power BI

Azure Data Explorer to szybka i wysoce skalowalna usługa eksploracji danych na potrzeby danych dziennika i telemetrycznych. Power BI to rozwiązanie do analizy biznesowej, które umożliwia wizualizowanie danych i udostępnianie wyników w całej organizacji. Za pomocą dynamicznych parametrów języka M można tworzyć raporty usługi Power BI, które zapewniają osobom przeglądającym możliwość używania filtrów lub fragmentatorów do ustawiania wartości parametrów zapytania KQL.

W tym artykule zaczniesz od nowego projektu usługi Power BI i użyjesz przykładowych danych do utworzenia raportu, który używa fragmentatora do filtrowania danych w dynamicznym zapytaniu języka M połączonym z funkcją KQL.

Wymagania wstępne

Do ukończenia tego artykułu potrzebne są następujące elementy:

Dodawanie połączenia zapytań bezpośrednich z funkcją KQL

Najpierw skonfiguruj łącznik dla usługi Power BI.

  1. W programie Power BI Desktop na karcie Narzędzia główne wybierz pozycję Pobierz dane, a następnie pozycję Więcej.

    Zrzut ekranu menu „Pobierz dane”, pokazujący opcję „Pobierz więcej”.

  2. Wyszukaj pozycję Azure Data Explorer, wybierz pozycję Azure Data Explorer, a następnie Połącz.

    Zrzut ekranu przedstawiający ekran wyszukiwania przedstawiający wybór łącznika.

  3. Na ekranie łącznika wypełnij formularz następującymi informacjami.

    Zrzut ekranu ekranu połączenia, przedstawiający opcje klastra, bazy danych i tabeli.

    Ustawienie Wartość Opis pola
    Klaster https://help.kusto.windows.net Adres URL klastra pomocy. W przypadku innych klastrów adres URL ma postać https://<Nazwa_klastra>.<Region>.kusto.windows.net.
    baza danych Pozostaw puste. Baza danych hostowana w klastrze, z którą nawiązujesz połączenie. Wybierzemy ją w późniejszym kroku.
    Nazwa tabeli Pozostaw puste. Jedna z tabel w bazie danych lub zapytanie, takie jak StormEvents | take 1000. Wybierzemy ją w późniejszym kroku.
    Opcje zaawansowane Pozostaw puste. Opcje zapytań, na przykład rozmiar zestawu wyników.
    Tryb łączności danych DirectQuery Określa, czy usługa Power BI importuje dane, czy łączy się bezpośrednio z zapytaniami dynamicznymi języka M.

    Uwaga

    W trybie importu dane są przenoszone do usługi Power BI. W trybie DirectQuery dane są odpytywane bezpośrednio z klastra.

    Użyj trybu importu , gdy:

    • Zestaw danych jest mały.
    • Nie potrzebujesz danych niemal w czasie rzeczywistym.
    • Twoje dane są już zagregowane lub przeprowadzasz agregację w usłudze Kusto

    Użyj trybu DirectQuery , gdy:

    • Zestaw danych jest bardzo duży.
    • Potrzebujesz danych niemal w czasie rzeczywistym.

    Opcje zaawansowane

    Ustawienie Przykładowa wartość Opis pola
    Ogranicz liczbę rekordów wyników zapytania 300000 Maksymalna liczba rekordów do zwrócenia w wyniku
    Ogranicz rozmiar danych wyników zapytania 4194304 Maksymalny rozmiar danych w bajtach zwracany w wyniku
    Wyłącz obcinanie zestawu wyników true Włączanie/wyłączanie obcinania wyników przy użyciu opcji żądania notruncation
    Dodatkowe instrukcje ustawiające set query_datascope=hotcache Ustawia właściwości żądania na czas trwania zapytania. Właściwości żądania kontrolują sposób wykonywania zapytania i zwracania wyników.
  4. Jeśli jeszcze nie masz połączenia z klastrem pomocy, zaloguj się. Zaloguj się przy użyciu konta organizacyjnego, a następnie wybierz pozycję Połącz.

    Zrzut ekranu przedstawiający ekran uwierzytelniania z opcją logowania.

  5. Na ekranie Nawigator wykonaj następujące czynności:

    1. Rozwiń bazę danych Przykłady.
    2. Wybierz funkcję EventsByStates.
    3. Dla parametru EventTypeParam wprowadź High Wind, a następnie wybierz Zastosuj, aby wyświetlić podgląd danych.
    4. Wybierz Przekształć dane.

    Zrzut ekranu nawigacji przedstawiający wybór funkcji.

    Funkcja zostanie otwarta jako dynamiczne zapytanie języka M w Edytor Power Query, w którym kontynuujemy tworzenie parametru do użycia z dynamicznym zapytaniem języka M.

    Uwaga

    Funkcja EventsByStates to przykładowa funkcja tylko do odczytu, której można użyć do testowania funkcjonalności parametrów zapytania Dynamic M. Definiuje ostateczną wersję, która obsługuje wiele i wybiera wszystkie wartości parametru. Jeśli chcesz przetestować funkcję wyboru pojedynczego we własnym klastrze i stopniowo przetestować funkcjonalność, możesz rozpocząć od następującej definicji pojedynczego wyboru funkcji.

    .create-or-alter function EventsByStates (EventTypeParam:string)
    {
      StormEvents
      | where EventType == EventTypeParam
      | summarize Events=count() by EventType, State
    }
    
  6. W Edytor Power Query wykonaj następujące czynności:

    1. Wybierz pozycję Zarządzaj parametrami>Nowy parametr.

    2. Wypełnij szczegóły następującymi informacjami, a następnie wybierz przycisk OK.

      Ustawienie Sugerowana wartość Opis
      Nazwa/nazwisko Type_Param Nazwa parametru. Zalecamy dodanie sufiksu, takiego jak _Param, który umożliwia łatwe rozpoznawanie i rozróżnianie go od innych parametrów, które można utworzyć.
      Typ Tekst Typ parametru. Typ parametru musi być zgodny z typem zadeklarowany w funkcji KQL. Tekst w usłudze Power BI jest odpowiednikiem ciągu w języku KQL.
      Bieżąca wartość Wysoki wiatr Wartość parametru. Musisz podać wartość domyślną dla tego pola.

    Zrzut ekranu przedstawiający ekran Zarządzanie parametrami przedstawiający tworzenie nowego parametru.

  7. Po powrocie na ekran nawigacji zastąp wartość parametru funkcji M nowym parametrem.

    Zrzut ekranu nawigacji przedstawiający zastąpienie parametru funkcji M.

  8. Opcjonalnie powtórz kroki, aby utworzyć więcej parametrów i zastąpić je w zapytaniu Dynamic M.

  9. Utwórz tabelę z wartościami fragmentatora raportu.

    Uwaga

    W tabeli zostaną wyświetlone typy zdarzeń, według których chcesz filtrować. Możesz zaimportować tabelę lub utworzyć nową tabelę i ręcznie wprowadzić dane.

    1. Na karcie Narzędzia główne wybierz pozycję Ostatnie źródła, a następnie wybierz klaster pomocy.

      Zrzut ekranu ekranu głównego, pokazujący wybór klastra pomocy.

    2. Na ekranie Nawigator rozwiń bazę danych Przykłady , wybierz tabelę StormEvents , a następnie wybierz przycisk OK.

      Zrzut ekranu nawigacji przedstawiający wybór tabeli.

    3. W oknie dialogowym Ustawienia połączenia wybierz pozycję Importuj, a następnie wybierz przycisk OK.

      Zrzut ekranu przedstawiający okno dialogowe Ustawienia połączenia z wyborem opcji importu.

    4. Kliknij prawym przyciskiem myszy kolumnę EventType , a następnie wybierz polecenie Usuń inne kolumny.

    5. Ponownie kliknij prawym przyciskiem myszy kolumnę EventType , a następnie wybierz polecenie Usuń duplikaty.

    6. Opcjonalnie dodaj kolejną kolumnę, aby zdefiniować kolejność sortowania dla wartości fragmentatora.

    7. Zmień nazwę tabeli na SlicerValues.

      Zrzut ekranu przedstawiający tabelę Wartości fragmentatora.

  10. Na karcie Strona główna wybierz Zamknij i zastosuj.

    Uwaga

    Zostanie wyświetlone okno dialogowe z ostrzeżeniem o ryzyku bezpieczeństwa. Kliknij przycisk OK, aby kontynuować. Przyczyną wyświetlenia okna dialogowego jest dodanie drugiego źródła danych w usłudze Power BI. Aby uzyskać więcej informacji, zobacz Poziomy prywatności programu Power BI Desktop. Jednak sposób użycia źródeł danych w tym przykładzie jest całkowicie bezpieczny.

  11. Powiąż kolumnę EventType w tabeli SlicerValues z parametrem .

    1. Wybierz widok Model po lewej stronie.
    2. W tabeli SlicerValues wybierz kolumnę EventType.
    3. W okienku Właściwości rozwiń węzeł Zaawansowane.
    4. W obszarze Powiązanie z parametrem wybierz pozycję Type_Param. Spowoduje to powiązanie kolumny EventType z parametrem.

    Uwaga

    Zostanie wyświetlone okno dialogowe z ostrzeżeniem o ryzyku bezpieczeństwa. Kliknij przycisk Kontynuuj , aby kontynuować. Przyczyną wyświetlenia okna dialogowego jest to, że usługa Power BI wysyła dane z jednego źródła do innego. Aby uzyskać więcej informacji, zobacz Poziomy prywatności programu Power BI Desktop. Jednak sposób użycia parametru w tym przykładzie jest całkowicie bezpieczny.

    Zrzut ekranu przedstawiający widok modelu przedstawiający powiązanie kolumny EventType z parametrem .

Wizualizacja danych w raporcie

Teraz, gdy już masz dane w programie Power BI Desktop, na ich podstawie możesz tworzyć raporty. Utworzysz prosty raport z tabelą z podsumowaniem zdarzeń według stanu i fragmentatorem, aby filtrować tabelę według typu zdarzenia.

  1. Wybierz widok Raport po lewej stronie.

  2. Dodaj tabelę do raportu.

    1. W okienku Wizualizacje wybierz pozycję Tabela. Pusta tabela jest dodawana do kanwy raportu.
    2. W okienku Pola rozwiń EventsByStates i wybierz State oraz Events. Masz teraz tabelę przedstawiającą podsumowanie zdarzeń według stanu.
  3. Dodaj fragmentator do raportu.

    1. W okienku Wizualizacja wybierz pozycję Fragmentator. Pusty fragmentator zostaje dodany do kanwy raportu.
    2. W panelu Pola rozwiń SlicerValues i wybierz EventType. Masz teraz fragmentator danych pokazujący typy zdarzeń.

    Zrzut ekranu przedstawiający widok raportu z tabelą i powiązanym fragmentatorem.

    Raport jest teraz gotowy do wyświetlenia. Zwróć uwagę, że podczas wybierania wartości typu zdarzenia we fragmentatorze tabela oparta na zapytaniu M jest filtrowana według typu zdarzenia powiązanego z parametrem zapytania M.

  4. Zapisz raport.

Akceptowanie wielu wartości parametrów

Jeśli chcesz filtrować wiele wartości parametrów we fragmentatorze, możesz to osiągnąć, dostosowując właściwości kolumny EventType i modyfikując funkcję KQL w następujący sposób:

  1. Dostosuj właściwości kolumny EventType w tabeli SlicerValues .

    1. Wybierz widok Model po lewej stronie.
    2. W tabeli SlicerValues wybierz kolumnę EventType.
    3. W okienku Właściwości rozwiń pozycję Zaawansowane i włącz ustawienie Wybór wielokrotny.

    Zrzut ekranu przedstawiający widok modelu, pokazujący ustawienie wielokrotnego wyboru.

  2. Zmodyfikuj funkcję KQL, ustawiając typ parametru na dynamiczny i zmieniając where warunek, aby sprawdzić listę wartości parametrów.

    .create-or-alter function EventsByStates (EventTypeParam:dynamic)
    {
      StormEvents
      | where EventType in (EventTypeParam)
      | summarize Events=count() by EventType, State
    }
    

Możesz teraz wrócić do raportu i wybrać kilka typów zdarzeń we fragmentatorze.

Akceptowanie wszystkich wartości parametrów

Jeśli chcesz filtrować wszystkie wartości parametrów we fragmentatorze, możesz to osiągnąć, dostosowując właściwości kolumny EventType , modyfikując funkcję KQL i aktualizując kontrolkę fragmentatora w następujący sposób:

  1. Dostosuj właściwości kolumny EventType w tabeli SlicerValues .

    1. Wybierz widok Model po lewej stronie.
    2. W tabeli SlicerValues wybierz kolumnę EventType.
    3. W okienku Właściwości rozwiń pozycję Zaawansowane i włącz ustawienie Wybierz wszystko .
    4. Opcjonalnie zmień ustawienie Wybierz wszystkie wartości . W tym przykładzie użyjesz wartości domyślnej SelectAll.

    Zrzut ekranu widoku Model View, przedstawiający ustawienie „Zaznacz wszystko”.

  2. Zaktualizuj kontrolkę fragmentatora, aby wyświetlić opcję Zaznacz wszystko .

    1. Wybierz widok Raport po lewej stronie.
    2. Wybierz fragmentator EventType.
    3. W okienku Wizualizacje wybierz pozycję Format, rozwiń pozycję Kontrolki zaznaczenia i włącz ustawienie Pokaż element „Zaznacz wszystko”. Fragmentator typu zdarzenia pokazuje opcję zaznacz wszystkie w górnej części listy.
  3. Zmodyfikuj funkcję KQL, ustawiając typ parametru na dynamiczny i zmieniając where warunek, aby sprawdzić wartość SelectAll lub listę wartości parametrów.

    .create-or-alter function EventsByStates (EventTypeParam:dynamic)
    {
      StormEvents
      | where ("__SelectAll__" in (EventTypeParam)) or (EventType in (EventTypeParam))
      | summarize Events=count() by EventType, State
    }
    

Teraz możesz wrócić do raportu i wybrać wszystkie typy zdarzeń we fragmentatorze.

Zrzut ekranu przedstawiający widok raportu, pokazujący fragmentator z opcją „Zaznacz wszystko”.

Rozważania i ograniczenia

Podczas korzystania z dynamicznych parametrów zapytania języka M należy wziąć pod uwagę pewne zagadnienia i ograniczenia:

  • Pojedynczy parametr nie może być powiązany z wieloma polami ani odwrotnie.
  • Następujące typy parametrów nie są obsługiwane:
    • Dowolne
    • Czas trwania
    • Prawda/fałsz
    • Plik binarny
  • Następujące filtry nie są obsługiwane:
    • Fragmentator czasu względnego lub filtr
    • Data relatywna
    • Fragmentator hierarchii
    • Filtr uwzględniający wiele pól
    • Wyklucz filtr / Bez filtrów
    • Krzyżowe podświetlanie
    • Filtr przechodzenia do szczegółów
    • Filtr drążenia krzyżowego
    • Filtr Top N

Czyszczenie zasobów

Jeśli nie potrzebujesz już raportu utworzonego na potrzeby tego artykułu, usuń plik programu Power BI Desktop (pbix).