Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Komunikaty błędów DAX
Miary nie da się wstawić do fragmentatora ani osi - kolumna obliczeniowa czy parametr pól
Problem z miarą w fragmentatorze Power BI ma autor raportu, który zbudował miarę z kategorią, na przykład segment sklepu według sprzedaży, i chce dać odbiorcy fragmentator albo oś wykresu z tymi segmentami. Ten sam kłopot ma ktoś, kto chce, żeby odbiorca sam wybierał, czy wykres pokazuje sprzedaż, czy marżę. Pokazujemy, dlaczego miara nie trafia w te miejsca i trzy rozwiązania sprawdzone na modelu Nordvelli.
Miary nie da się użyć jako pola fragmentatora ani jako kategorii na osi X wykresu kolumnowego. Według dokumentacji Microsoft fragmentator działa z danymi tekstowymi, liczbowymi i datami, a dla każdego jego stylu dokumentacja podaje obsługiwane typy kolumn. Parametr pól z kolumnami wstawia się w miejsca osi, a parametr z miarami w miejsca wartości. Miara z tekstowym wynikiem nadal działa w tabeli albo w karcie, tylko nie filtruje.
W modelu Nordvelli jest miara Segment Sklepu: IF([Łączna sprzedaż] > 5000000, "Duży", IF([Łączna sprzedaż] > 2000000, "Średni", "Mały")). W tabeli sklepów daje wynik w każdym wierszu, u nas „Duży” dla wszystkich 15 sklepów, bo każdy sprzedał w całym okresie danych, od stycznia 2022 do maja 2026, ponad 12 mln zł. Fragmentatora „Segment” z tej miary nie zbudujesz.
Fragmentator pokazuje listę wartości kolumny i po kliknięciu nakłada filtr na tę kolumnę. Oś kategorii grupuje wiersze według wartości kolumny. Kolumna obliczeniowa liczy się raz, przy odświeżeniu, dla każdego wiersza i zapisuje wynik w modelu, więc lista jej wartości istnieje. Miara nie ma zapisanych wartości: liczy się dopiero w kontekście filtra, czyli w zestawie warunków ze strony, wiersza wykresu i fragmentatorów. Ta sama miara daje inny wynik dla 2025 roku, a inny dla całego okresu, więc nie da się z niej zrobić stałej listy do klikania. Różnicę między miarą a kolumną omawiamy w lekcji o podstawach DAX.
Parametr pól obchodzi to ograniczenie inaczej: tworzy małą tabelę, w której każdy wiersz to nazwa pozycji, odwołanie NAMEOF do miary albo kolumny i numer kolejności. Fragmentator pracuje na kolumnie tej tabeli, a wykres podmienia pokazywane pole.
Zobacz też: Szkolenie Zaawansowany DAX w Power BI
Miara wyboru ma trzy wiersze z kolejnością 0, 1 i 2. Pole tej tabeli przeciągnij do obszaru Oś Y. Parametr z kolumnami, u nas Wymiar analizy z polami Miasto, Kategoria i KanalSprzedazy, wstawiasz na Oś X.Miara wyboru = {
("Łączna sprzedaż", NAMEOF('FaktSprzedaz'[Łączna sprzedaż]), 0),
("Marża po rabacie", NAMEOF('FaktSprzedaz'[Marża po rabacie]), 1),
("Liczba transakcji", NAMEOF('FaktSprzedaz'[Liczba transakcji]), 2)
}Sprzedaż sklepu, czyli sprzedaży z całego okresu danych. Na Nordvelli dała 1 sklep Bardzo duży, 4 Duże, 6 Średnich i 4 Małe. Tę kolumnę wstawisz do fragmentatora i na oś.Klasa sklepu =
SWITCH(
TRUE(),
DimSklepy[Sprzedaż sklepu] >= 100000000, "Bardzo duży",
DimSklepy[Sprzedaż sklepu] >= 30000000, "Duży",
DimSklepy[Sprzedaż sklepu] >= 18000000, "Średni",
"Mały"
)FaktSprzedaz dwie miary: liczbę sklepów w klasie i ich sprzedaż. Tabela zostaje bez relacji z resztą modelu, tak samo jak tabela parametru co-jeśli, bo miary same czytają jej progi. Kolumnę Progi[Klasa] wstawiasz do fragmentatora albo na oś, a miary do wartości.Progi = DATATABLE(
"Klasa", STRING, "Od", DOUBLE, "Do", DOUBLE,
{
{"Mały", 0, 18000000},
{"Średni", 18000000, 30000000},
{"Duży", 30000000, 100000000},
{"Bardzo duży", 100000000, 1000000000000}
}
)
Sklepy w klasie =
VAR Od = MIN(Progi[Od])
VAR Do = MAX(Progi[Do])
RETURN
COUNTROWS(
FILTER(
VALUES(DimSklepy[Nazwa]),
VAR s = [Łączna sprzedaż]
RETURN s >= Od && s < Do
)
)
Sprzedaż w klasie =
VAR Od = MIN(Progi[Od])
VAR Do = MAX(Progi[Do])
RETURN
SUMX(
FILTER(
VALUES(DimSklepy[Nazwa]),
VAR s = [Łączna sprzedaż]
RETURN s >= Od && s < Do
),
[Łączna sprzedaż]
)Sprzedaż w klasie dał dla całego okresu 135 119 628,01 zł, a dla 2025 pustą wartość, bo w 2025 żaden sklep nie mieścił się między 18 a 30 mln zł. Klasa Mały w 2025 to 88 748 313,18 zł. Do analizy jednego roku dobierz progi do tego okresu. Gdy miara ma czytać jedną wybraną klasę, pilnuj pustego wyboru, o czym piszemy w poście o SELECTEDVALUE przy kilku zaznaczeniach we fragmentatorze.
Suma sprzedaży po klasach musi dać sprzedaż całej sieci. Na Nordvelli kolumna Klasa sklepu dała 141 772 848,59 zł dla klasy Bardzo duży, 129 398 412,54 zł dla Dużych, 135 119 628,01 zł dla Średnich i 61 484 120,03 zł dla Małych, razem 467 775 009,17 zł, czyli tyle, ile [Łączna sprzedaż]. Ta sama kontrola po klasach z tabeli progów wyszła identycznie. Z filtrem na 2025 rok tabela progów dała 88 748 313,18 zł dla 14 Małych sklepów i 37 985 957,29 zł dla jednego Dużego, razem 126 734 270,47 zł, czyli sprzedaż całego 2025 roku.
Decyzję podejmuj od razu przy projekcie strony: wybór miary to parametr pól, stała kategoria to kolumna, kategoria zależna od okresu to tabela progów z miarą. Według dokumentacji Microsoft kolumny obliczeniowe mogą spowalniać odświeżanie, bo ich wartości liczą się w jego trakcie, więc nie mnóż ich bez potrzeby. Więcej piszemy w poście o kolumnach obliczeniowych, które spowalniają odświeżanie.
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...