wtyczka dax_request

Wtyczka dax_request uruchamia zapytanie języka DAX (Data Analysis Expressions) względem modelu semantycznego Power BI i zwraca wyniki jako tabelę. Przetwórz zwracaną tabelę za pomocą standardowych operatorów języka Kusto Query Language (KQL). Wywołaj wtyczkę za pomocą operatora evaluate.

Wtyczka używa interfejsu API wykonywania zapytań języka DAX Power BI, który zwraca wyniki w formacie Apache Arrow. Wtyczka zachowuje obsługiwane typy kolumn podczas konwertowania odpowiedzi na tabelę KQL.

Prerequisites

  • Model semantyczny musi znajdować się w obszarze roboczym przypisanym do pojemności Fabric lub Power BI Premium.
  • Należy włączyć interfejs API REST wykonywania zapytań zestawu danych, zezwalać na punkty końcowe XMLA i analizować w Excel z ustawieniami dzierżawy modeli lokalnych.
  • Musisz mieć uprawnienia kompilacji i odczytu w modelu semantycznym.
  • Zasady objaśnień klastra muszą zezwalać na dax wywołania do api.powerbi.comelementu . Aby zmienić te zasady, potrzebujesz AllDatabasesAdmin uprawnień lub Ops uprawnień.

Składnia

evaluate dax_request ( ConnectionString,DaxQuery) [:OutputSchema]

Dowiedz się więcej na temat konwencji składni w dokumentacji dotyczącej składni.

Parameters

Name Typ Required Description
ConnectionString (Parametr połączenia) string Yes Adres URL modelu semantycznego, po którym następuje ;Impersonate. Aby uzyskać obsługiwane formaty adresów URL, zobacz Parametry połączenia.
DaxQuery string Yes Zapytanie języka DAX do wykonania względem modelu semantycznego.
OutputSchema - - Nazwy i typy oczekiwanych kolumn wyjściowych. Użyj składni (ColumnName:ColumnType [, ...]).

! [UWAGA] Zalecane jest określenie parametru OutputSchema . Umożliwia to usłudze Kusto określenie kolumn wyjściowych i typów wtyczki bez wysyłania zapytania języka DAX do Power BI podczas odnajdywania schematu. Żądanie Power BI jest zamiast tego odroczone do wykonania zapytania, wraz z resztą zapytania KQL. Wtyczka zwraca błąd, jeśli zwrócony schemat jest niezgodny ze zadeklarowanym schematem.

Parametry połączenia

Connection string składa się z adresu URL modelu semantycznego i ;Impersonate dyrektywy uwierzytelniania. Użyj jednego z następujących formatów:

  • Semantyczny model w obszarze roboczym: https://api.powerbi.com/v1.0/myorg/groups/WorkspaceId/datasets/SemanticModelId;Impersonate

  • Model semantyczny w obszarze Mój obszar roboczy: https://api.powerbi.com/v1.0/myorg/datasets/SemanticModelId;Impersonate

myorg Segment ścieżki to literał. *WorkspaceId* i *SemanticModelId* musi być globalnie unikatowymi identyfikatorami (GUID). Nie dołączaj ciągu zapytania, fragmentu ani ścieżki końcowej po identyfikatorze SemanticModelId.

Uwierzytelnianie i autoryzacja

Wtyczka używa Microsoft Entra uwierzytelniania w imieniu. Aparat uzyskuje token dla żądanego użytkownika i wysyła zapytanie języka DAX w kontekście zabezpieczeń tego użytkownika. Użytkownik musi mieć uprawnienia kompilacji i odczytu w modelu semantycznym. Wszystkie zabezpieczenia na poziomie wiersza lub zabezpieczenia na poziomie obiektu skonfigurowane dla użytkownika mają zastosowanie do zapytania.

Użyj ;Impersonate jako dyrektywy uwierzytelniania. Tożsamość zarządzana, jednostka usługi i uwierzytelnianie klucza aplikacji nie są obsługiwane.

Important

Użyj zaciemnionego literału ciągu dla dowolnego ciągu zawierającego poufne informacje. Zaciemnione wartości nie są wyświetlane w śledzeniu kusto.

Konfigurowanie i wywoływanie zasad

Wtyczka wykonuje zewnętrzne wywołanie do Power BI. Ponieważ domyślne zasady objaśnień blokują dax wywołania, administrator klastra musi jawnie zezwolić na Power BI punkt końcowy.

Następujące polecenie scala restrykcyjną dax regułę z istniejącymi zasadami objaśnień klastra:

.alter-merge cluster policy callout @'[{
  "CalloutType": "dax",
  "CalloutUriRegex": "api\\.powerbi\\.com.*",
  "CanCall": true
}]'

Sprawdź zasady:

.show cluster policy callout

Returns

Wtyczka zwraca wynik zapytania języka DAX jako tabelę KQL. Zachowuje obsługiwane typy danych strzałki. Na przykład strzałka int64, , utf8doublei date-time wartości są mapować odpowiednio na wartości Kustolong, real, stringi datetime.

Power BI zwraca nazwy kolumn w nawiasie kwadratowym, takie jak [Category]. W języku KQL odwołaj się do tych nazw przy użyciu ['...'] składni, takiej jak ['[Category]'].

Warning

Wtyczka używa domyślnego limitu wierszy Power BI interfejsu API wykonywania zapytań języka DAX (resultSetRowCountLimit). Jeśli zapytanie języka DAX generuje więcej wierszy niż ten limit, zwracana tabela może być niekompletna bez błędu. Filtruj lub agreguj dane w zapytaniu języka DAX, aby zachować wynik w limicie. Filtrowanie lub agregowanie po nim w języku KQL nie odzyskuje pominiętych wierszy.

Examples

Zwracanie wszystkich wierszy z tabeli

Poniższy przykład wykonuje zapytanie dotyczące Sales tabeli. Zwrócony wynik podlega domyślnemu limitowi wierszy interfejsu API.

evaluate dax_request(
  'https://api.powerbi.com/v1.0/myorg/groups/<workspace-id>/datasets/<semantic-model-id>;Impersonate',
  'EVALUATE Sales')

Przetwarzanie wyników języka DAX za pomocą usługi Kusto

Poniższy przykład wybiera dwie kolumny w języku DAX, podsumowuje wynik w języku KQL i filtruje według kategorii:

evaluate dax_request(
  'https://api.powerbi.com/v1.0/myorg/groups/<workspace-id>/datasets/<semantic-model-id>;Impersonate',
  'EVALUATE SELECTCOLUMNS(Sales, "Category", Sales[Category], "Amount", Sales[Amount])')
| summarize TotalAmount = sum(['[Amount]']) by ['[Category]']
| where ['[Category]'] == 'Electronics'

Wskazówka

Filtruj i agreguj dane w języku DAX, gdy jest to możliwe, aby zmniejszyć ilość danych zwracanych do usługi Kusto.

Określanie schematu wyjściowego

Poniższy przykład deklaruje oczekiwany schemat danych wyjściowych, aby usługa Kusto mogła określić schemat bez kontaktowania się z Power BI podczas analizy zapytań. Zadeklarowany schemat musi być zgodny ze schematem wyników na żywo.

evaluate dax_request(
  'https://api.powerbi.com/v1.0/myorg/groups/<workspace-id>/datasets/<semantic-model-id>;Impersonate',
  'EVALUATE ROW("cnt", COUNTROWS(Sales), "sumAmt", SUM(Sales[Amount]))')
  : (['[cnt]']:long, ['[sumAmt]']:real)

Troubleshooting

Błąd Przyczyna i rozwiązanie
Nieprawidłowa parametry połączenia Upewnij się, że adres URL używa obsługiwanego formatu, identyfikatory obszarów roboczych i semantycznych modeli są prawidłowymi identyfikatorami GUID, a ciąg kończy się ciągiem ;Impersonate.
Objaśnienie nie jest dozwolone Skonfiguruj zasady objaśnienie klastra, aby zezwalać na dax wywołania do api.powerbi.comelementu .
Błąd uwierzytelniania lub autoryzacji Upewnij się, że wymagane ustawienia dzierżawy są włączone i czy żądający użytkownik ma uprawnienie kompilacji i odczytu w modelu semantycznym.
Błąd żądania HTTP Upewnij się, że usługa Power BI dostępności, ułatwień dostępu punktu końcowego i adresu URL modelu semantycznego.