Blog JSystems - uwalniamy wiedzę!

Szukaj

Microsoft Power BIMicrosoft Power BI

Copilot w Power BI proponuje miarę DAX, która nie pasuje do modelu - jak ją sprawdzić przed użyciem

W skrócie

  • Copilot w Power BI Desktop proponuje miarę DAX, a po wklejeniu pasek formuły zgłasza problem albo miara liczy inaczej, niż zakładałeś.
  • Pisząc DAX, Copilot korzysta z metadanych modelu, czyli nazw tabel, kolumn i miar, więc może nie znać konwencji danych, na przykład zwrotów zapisanych jako kwoty ujemne, i pomylić miarę z kolumną.
  • Dodaj propozycję jako nową miarę, dopasuj odwołania według komunikatu paska formuły i porównaj wynik ze składnikami zapytaniem w widoku zapytania DAX.

Prosisz Copilota w Power BI Desktop o miarę, na przykład sprzedaż netto po zwrotach, i w kilka sekund dostajesz gotowy kod DAX z wyjaśnieniem każdego kroku. Po wklejeniu do modelu pasek formuły pokazuje komunikat albo miara zwraca liczbę, która nie zgadza się z tym, co znasz z raportu. Pokażemy na przykładzie z naszego kursu Power BI, jak sprawdzić propozycję Copilota w trzech miejscach: w pasku formuły, w znaczeniu danych i w widoku zapytania DAX, zanim miara trafi do raportu.

Jak to wygląda w praktyce

W kursie Power BI pracujemy na modelu sieci Nordvella. W polu na dole panelu Copilota wpisaliśmy: Utwórz miarę DAX, która policzy łączną sprzedaż netto: wartość sprzedaży pomniejszoną o zwroty. Wyjaśnij po polsku, jak działa. Copilot dał szkielet z dwiema zmiennymi, SprzedazNetto i ZwrotyNetto, a pod spodem wariant dla modeli, w których zwroty są w tej samej tabeli co sprzedaż i oznacza je flaga CzyZwrot. Po dodaniu propozycji jako nowej miary w tabeli FaktSprzedaz pasek formuły od razu pokazał komunikat przy wyrażeniu SUM ( FaktZwroty[Wartosc zwrotow wg daty zakupu] ).

Druga niezgodność nie daje żadnego komunikatu i dlatego łatwo ją przeoczyć. Zwroty są w modelu kwotami ujemnymi, łącznie -14 022 095,44 zł, więc odjęcie ich od sprzedaży podniosłoby wynik zamiast go obniżyć. Miara wygląda poprawnie, a liczy coś innego. Trzecia dotyczy wariantu z flagą: Copilot porównał FaktSprzedaz[CzyZwrot] = TRUE (), a kolumna ma wartości 0 i 1.

Dlaczego Copilot tak robi

Propozycja miary powstaje z polecenia i z metadanych modelu, czyli nazw tabel, kolumn i miar. Dokumentacja Copilota w widoku zapytania DAX opisuje to wprost: Copilot korzysta z metadanych, w trybie importu może pobrać wartości minimalne i maksymalne jako przykładowe wartości, ale innych danych z tabel nie używa. Nie zna więc konwencji Twojego modelu, na przykład tego, że zwroty zapisano ze znakiem minus. Może też potraktować jak kolumnę nazwę, która w modelu jest miarą, albo dobrać porównanie niepasujące do typu kolumny.

W naszym przykładzie Wartosc zwrotow wg daty zakupu to miara z wcześniejszej lekcji, a funkcja SUM przyjmuje kolumnę, stąd komunikat. Wartość CzyZwrot jest liczbą całkowitą, a DAX nie porównuje liczby całkowitej z wartością logiczną. Poprawna składnia nie gwarantuje też poprawnego znaczenia: miara bez komunikatu może liczyć coś innego niż chciałeś. Dokumentacja zaznacza również, że funkcje DAX dodane niedawno mogą nie być znane Copilotowi.

Jak to rozwiązać krok po kroku

  1. Podaj Copilotowi kontekst modelu. Do polecenia dopisz nazwy, których ma użyć, i konwencje danych, na przykład: Użyj tabeli FaktSprzedaz i istniejącej miary [Wartosc zwrotow wg daty zakupu]. Zwroty są zapisane jako kwoty ujemne. Copilot korzysta z metadanych, więc opisowe nazwy i informacje w poleceniu poprawiają propozycję.
  2. Dodaj propozycję jako nową miarę, nie podmieniaj istniejącej. Kliknij tabelę w panelu Dane, na wstążce wybierz Nowa miara i wklej kod. Pasek formuły od razu pokaże komunikat, jeśli odwołanie nie pasuje do modelu.
  3. Sprawdź, czy odwołania wskazują kolumny, czy miary. Gdy w SUM ( ... ) trafiła nazwa miary, zastąp całe wyrażenie samym odwołaniem do miary, w naszym przypadku [Wartosc zwrotow wg daty zakupu].
  4. Sprawdź znaczenie danych. Przy kwotach ujemnych użyj wartości bezwzględnej, czyli ABS ( [Wartosc zwrotow wg daty zakupu] ). Przy fladze 0 i 1 porównuj z liczbą: FaktSprzedaz[CzyZwrot] = 1 zamiast = TRUE ().
  5. Zapisz poprawioną miarę. U nas ma postać Sprzedaż netto po zwrotach = VAR SprzedazNetto = SUM ( FaktSprzedaz[WartoscNetto] ) VAR ZwrotyNetto = ABS ( [Wartosc zwrotow wg daty zakupu] ) RETURN SprzedazNetto - ZwrotyNetto. Pasek formuły nie pokazuje już komunikatu. Ustaw format liczby, na przykład #,0.00 zł.
  6. Policz miarę obok jej składników. Przejdź do widoku zapytania DAX (czwarty widok po lewej stronie Power BI Desktop), otwórz nową kartę zapytania i uruchom przyciskiem Uruchom albo klawiszem F5: EVALUATE ROW ( "Łączna sprzedaż", [Łączna sprzedaż], "Zwroty wg daty zakupu", [Wartosc zwrotow wg daty zakupu], "Sprzedaż netto po zwrotach", [Sprzedaż netto po zwrotach] ).

Jak sprawdzić, że zadziałało

Zapytanie zwraca jeden wiersz z trzema liczbami i od razu widać, czy się bilansują. W naszym modelu łączna sprzedaż to 467 775 009,17 zł, zwroty to -14 022 095,44 zł, a nowa miara daje 453 752 913,73 zł, czyli dokładnie sprzedaż pomniejszoną o kwotę zwrotów. Gdyby miara pokazała 481 797 104,61 zł, czyli więcej niż sama sprzedaż, oznaczałoby to odjęcie liczby ujemnej. Drugi sygnał to brak komunikatu w pasku formuły po zapisaniu miary. Jeśli nie rozumiesz którejś części kodu, zaznacz zapytanie w widoku zapytania DAX, otwórz Copilota przyciskiem Copilot albo skrótem Ctrl+I i kliknij Wyjaśnij to zapytanie, a opis porównaj z tym, co miara ma liczyć. Dopiero miara, która przeszła oba sprawdzenia, trafia do wizualizacji.

Powiązane problemy

Wróć do listy: 213 najczęstszych pytań i problemów związanych z Microsoft 365 Copilot

Najczęściej zadawane pytania

Dlaczego miara DAX od Copilota pokazuje komunikat w pasku formuły?
Copilot zna nazwy tabel, kolumn i miar, ale nie zawsze trafia w ich rolę. W naszym przykładzie użył funkcji SUM na nazwie, która w modelu jest miarą, a SUM przyjmuje kolumnę. Zastąpienie wyrażenia samym odwołaniem do miary usuwa komunikat.
Czy miara od Copilota bez komunikatu o błędzie liczy poprawnie?
Niekoniecznie. Poprawna składnia nie gwarantuje poprawnego znaczenia. Gdy zwroty są zapisane jako kwoty ujemne, odjęcie ich od sprzedaży podnosi wynik. Dlatego każdą miarę porównujesz z jej składnikami zapytaniem EVALUATE ROW w widoku zapytania DAX.
Jak sprawdzić miarę DAX od Copilota przed dodaniem jej do raportu?
Dodaj propozycję jako nową miarę, popraw odwołania według paska formuły, a potem w widoku zapytania DAX uruchom zapytanie zwracające w jednym wierszu miarę i jej składniki. Wynik musi zgadzać się z prostą arytmetyką na tych składnikach.
Czy Copilot piszący DAX widzi dane w moich tabelach?
Według dokumentacji Copilota w widoku zapytania DAX korzysta on z metadanych modelu, czyli tabel, kolumn i miar, a z samych danych najwyżej z wartości minimalnych i maksymalnych w trybie importu. Dlatego konwencje, takie jak ujemne kwoty zwrotów, podawaj w poleceniu.
Co zrobić, gdy nie rozumiem kodu DAX od Copilota?
Zaznacz zapytanie w widoku zapytania DAX, otwórz Copilota skrótem Ctrl+I i kliknij Wyjaśnij to zapytanie. Copilot opisze, co robi każda część. Porównaj ten opis z tym, co miara ma liczyć, a liczby sprawdź zapytaniem obok składników. Pamiętaj, że nowsze funkcje DAX mogą być Copilotowi nieznane.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...