Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Potoki wdrażania, Fabric, Copilot i telefon
Miara DAX od Copilota w Power BI - jak sprawdzić ją przed użyciem
Copilot w Power BI podał w kursie miarę DAX sprzedaży netto pomniejszonej o zwroty, a pasek formuły po jej wklejeniu zgłosił, że nie może odnaleźć wskazanej kolumny w tabeli FaktZwroty. Propozycja z wyjaśnieniem każdego kroku wygląda wiarygodnie, ale o tym, czy miara liczy dobrze, decyduje model, a nie opis. Na tej mierze w modelu Nordvelli pokazujemy, co trzeba było dopasować i jakimi zapytaniami DAX potwierdziliśmy liczby. Kontrola zostaje po stronie autora raportu.
W kursie poprosiliśmy Copilota o miarę sprzedaży netto pomniejszonej o zwroty. Propozycja miała dwie zmienne, SprzedazNetto i ZwrotyNetto, a druga sumowała FaktZwroty[Wartosc zwrotow wg daty zakupu]. Po wklejeniu jej jako nowej miary pasek formuły pokazał komunikat „Nie można odnaleźć kolumny „Wartosc zwrotow wg daty zakupu” w tabeli „FaktZwroty” lub nie można jej użyć w tym wyrażeniu.” (w angielskiej wersji: „Column 'Wartosc zwrotow wg daty zakupu' in table 'FaktZwroty' cannot be found or may not be used in this expression.”). Ten sam komunikat zwróciło nasze zapytanie kontrolne na modelu z projektu końcowego kursu.
Wariant dla modeli z flagą zwrotu w tabeli sprzedaży filtrował FaktSprzedaz[CzyZwrot] = TRUE (). W zapytaniu kontrolnym silnik zgłosił błąd przy obliczaniu miary: „Operacje porównania języka DAX nie obsługują porównywania wartości typu Integer z wartościami typu True/False. Rozważ użycie funkcji VALUE lub FORMAT w celu przekonwertowania jednej z tych wartości.” (w angielskiej wersji: „DAX comparison operations do not support comparing values of type Integer with values of type True/False. Consider using the VALUE or FORMAT function to convert one of the values.”). Trzeci przypadek nie daje żadnego komunikatu: miara bez ABS zwróciła 481 797 104,61 zł, więcej niż cała sprzedaż 467 775 009,17 zł, choć zwroty miały ją zmniejszyć.

Copilot pisze formułę na podstawie polecenia oraz nazw tabel, kolumn i miar. Według dokumentacji Microsoft do usługi trafiają między innymi polecenie i struktura danych, czyli schemat, a zawartość tabel tylko wtedy, gdy o to poprosisz. Copilot nie widzi więc, że w Nordvelli wszystkie 2714 kwot w kolumnie FaktZwroty[WartoscZwrotu] są ujemne, od -61 811,56 zł do -225,32 zł, razem -14 022 095,44 zł, a odjęcie ujemnej sumy podnosi wynik zamiast go obniżać. Nie wie też, że FaktSprzedaz[CzyZwrot] ma typ liczby całkowitej z wartościami 0 i 1 ani że Wartosc zwrotow wg daty zakupu to miara z lekcji o modelu danych i relacjach, a nie kolumna. Funkcja SUM przyjmuje tylko kolumnę, stąd komunikat o kolumnie, której nie ma. Ten typ błędu opisujemy w poście o kolumnie, której nie można odnaleźć.
Ta miara liczy zwroty według daty zakupu: CALCULATE z USERELATIONSHIP włącza nieaktywną relację FaktZwroty[DataZakupu] z DimKalendarz[DataID]. To też decyzja, którą Copilot podejmuje za Ciebie. W całości obie daty dają te same -14 022 095,44 zł zwrotów, ale w latach już nie: sprzedaż po zwrotach w 2026 to 48 973 405,47 zł według daty zakupu i 48 575 310,24 zł według daty zwrotu. Wariant z flagą odpowiada na inne pytanie: odejmuje wartość sprzedaży oznaczonych wierszy, 11 571 020,19 zł w 2714 wierszach, a nie wartość zwrotów. Daje więc 456 203 988,98 zł zamiast 453 752 913,73 zł. Obie formuły wyglądają rozsądnie, a różnią się o 2 451 075,25 zł.
Zobacz też: Szkolenie Power BI - Desktop, DAX i Online + Copilot
CALCULATE z USERELATIONSHIP, więc zamiast funkcji SUM z nazwą miary wpisujesz samo odwołanie do miary w nawiasach kwadratowych.EVALUATE
SELECTCOLUMNS (
FILTER (
INFO.VIEW.MEASURES (),
[Name] IN { "Wartosc zwrotow wg daty zakupu", "Sprzedaż netto po zwrotach", "Wartość zwrotów" }
),
"M", [Name],
"E", [Expression]
)ABS.EVALUATE
ROW (
"wiersze_FaktZwroty", COUNTROWS ( FaktZwroty ),
"suma_WartoscZwrotu", SUM ( FaktZwroty[WartoscZwrotu] ),
"min", MIN ( FaktZwroty[WartoscZwrotu] ),
"max", MAX ( FaktZwroty[WartoscZwrotu] )
)CzyZwrot ma u nas typ liczby całkowitej i dwie wartości: 0 w 105 961 wierszach i 1 w 2714 wierszach. Warunek = TRUE () zamień na = 1. Sama zmiana typu nie wystarczy, bo ten wariant odejmuje wartość sprzedaży zwróconych pozycji, a nie wartość zwrotów. Wybierz definicję, której potrzebuje odbiorca raportu. Błąd porównania typów opisujemy w poście o porównaniu wartości różnych typów w DAX.EVALUATE
SUMMARIZECOLUMNS (
FaktSprzedaz[CzyZwrot],
"Wiersze", COUNTROWS ( FaktSprzedaz ),
"Wartosc", SUM ( FaktSprzedaz[WartoscNetto] )
)#,0.00 zł. Taką samą formułę ma miara Sprzedaż netto po zwrotach w modelu z projektu końcowego kursu, tylko jej format jest tam bez groszy.Sprzedaż netto po zwrotach =
VAR SprzedazNetto =
SUM ( FaktSprzedaz[WartoscNetto] )
VAR ZwrotyNetto =
ABS ( [Wartosc zwrotow wg daty zakupu] )
RETURN
SprzedazNetto - ZwrotyNettoEVALUATE
ROW (
"Łączna sprzedaż", [Łączna sprzedaż],
"Zwroty wg daty zakupu", [Wartosc zwrotow wg daty zakupu],
"Sprzedaż netto po zwrotach", [Sprzedaż netto po zwrotach]
)EVALUATE
SUMMARIZECOLUMNS (
ROLLUPADDISSUBTOTAL ( DimKalendarz[Rok], "Razem" ),
"Sprzedaz", [Łączna sprzedaż],
"ZwrotyZakup", [Wartosc zwrotow wg daty zakupu],
"Netto", [Sprzedaż netto po zwrotach]
)Miara jest gotowa do użycia, gdy pasek formuły nie pokazuje komunikatu, wynik w całości równa się różnicy składników, suma lat równa się wynikowi bez podziału, a wartość dla wybranego wiersza zgadza się z obliczeniem ręcznym. U nas dla Warszawy 222 818 294,93 zł sprzedaży minus 6 724 354,04 zł zwrotów daje 216 093 940,89 zł. Pomaga też drugie, niezależne obliczenie: w modelu Nordvelli miara Wartość zwrotów liczy ABS ( SUM ( FaktZwroty[WartoscZwrotu] ) ) wprost z kolumny, co przy sumie kolumny -14 022 095,44 zł daje te same 14 022 095,44 zł.
Żeby kolejne propozycje wymagały mniej poprawek, nadawaj kolumnom i miarom nazwy, z których widać, co zawierają, i opisuj w modelu umowy, takie jak ujemny znak zwrotów. Zapytanie kontrolne zostaw w pliku w widoku zapytań w języku DAX, tak jak w kursie, i uruchamiaj je po każdej zmianie miary. Gdy Copilot w ogóle nie odpowiada, przyczyny opisujemy w poście o niedostępnym Copilocie w Power BI.
Zachowanie programu sprawdziliśmy w Power BI Desktop 2.157 (wydanie z sierpnia 2026 r.) z polskim interfejsem, a przykłady na modelu sieci Nordvella z bezpłatnego kursu Power BI. Microsoft wydaje nową wersję Power BI Desktop co miesiąc, więc nazwy przycisków i limity usługi mogą się zmieniać. Aktualne wartości podaje dokumentacja Microsoft Learn.
Wróć do listy: 131 najczęstszych pytań i problemów związanych z Power BI
Komentarze (0)
Brak komentarzy...