Laboratorium — Wprowadzenie do języka DAX w programie Power BI Desktop

Ukończone

Uzyskiwanie dostępu do środowiska

Przed rozpoczęciem tego laboratorium (chyba że kontynuujesz poprzednie laboratorium) wybierz pozycję Uruchom laboratorium powyżej.

Użytkownik jest automatycznie zalogowany w środowisku laboratoryjnym jako data-ai\student.

Teraz możesz rozpocząć pracę nad tym laboratorium.

Porada

Aby zadokować środowisko laboratoryjne tak, aby wypełniło okno, wybierz ikonę komputera u góry, a następnie wybierz pozycję Dopasuj okno do maszyny.

Zrzut ekranu przedstawiający laboratorium z wybraną ikoną komputera i wyróżniona opcja Dopasuj okno do maszyny.

W tym laboratorium utworzysz tabele obliczeniowe, kolumny obliczeniowe i proste miary przy użyciu języka DAX (Data Analysis Expressions).

To laboratorium obejmuje następujące zagadnienia:

  • Tworzenie tabel obliczeniowych

  • Tworzenie kolumn obliczeniowych

  • Tworzenie miar

Ćwiczenie 1: Tworzenie tabel obliczeniowych

W tym ćwiczeniu utworzysz dwie tabele obliczeniowe. Pierwszą z nich będzie tabela Salesperson (Sprzedawca), aby umożliwić utworzenie bezpośredniej relacji między nią a tabelą Sales (Sprzedaż). Drugą będzie tabela Date (Data).

Otwórz plik startowy Sales Analysis.pbix, który znajduje się w folderze D:\DA100\Labs\05-create-dax-calculations-in-power-bi-desktop\Starter.

Zadanie 1. Tworzenie tabeli Salesperson (Sprzedawca)

W tym zadaniu utworzysz tabelę Salesperson (Sprzedawca; relacja bezpośrednia z tabelą Sales (Sprzedaż)).

  1. W programie Power BI Desktop w widoku Raport na wstążce Modelowanie w grupie Obliczenia kliknij pozycję Nowa tabela.

    Nowa tabela

  2. Na pasku formuły, który otwiera się bezpośrednio pod wstążką podczas tworzenia lub edytowania obliczeń, wpisz Salesperson =, naciśnij klawisze Shift + Enter, wpisz 'Salesperson (Performance)', a następnie naciśnij klawisz Enter.

    Salesperson =, Shift+Enter, wpisz Salesperson (Performance)

    Dla wygody wszystkie definicje języka DAX w tym laboratorium można skopiować z pliku D:\DA100\Lab06B\Assets\Snippets.txt.

    Tabelę obliczeniową tworzy się, wprowadzając najpierw nazwę tabeli, znak równości (=), a następnie formułę języka DAX zwracającą tabelę. Nazwa tabeli nie może już istnieć w modelu danych.

    Pasek formuły obsługuje wprowadzanie prawidłowej formuły języka DAX. Zapewnia funkcje, takie jak autouzupełnianie, IntelliSense i kodowanie kolorami, dzięki czemu można szybko i dokładnie wprowadzić formułę.

    Ta definicja tabeli tworzy kopię tabeli Salesperson (Performance). Kopiuje tylko dane, jednak właściwości takie jak widoczność, formatowanie itp. nie są kopiowane.

    Porada

    Zachęcamy do wprowadzania „białych znaków” (tj. powrotu karetki i tabulatorów), aby tworzyć formuły w intuicyjnym i łatwym do odczytu formacie — zwłaszcza gdy są długie i złożone. Aby wprowadzić znak powrotu karetki, naciśnij klawisze Shift + Enter. „Biały znak” jest opcjonalny.

  3. W okienku Pola zwróć uwagę, że ikona tabeli zawiera również ikonę kalkulatora (oznacza tabelę obliczeniową).

    ikona tabeli ma kolor niebieski

    Tabele obliczeniowe są definiowane przy użyciu formuły języka DAX, która zwraca tabelę. Ważne jest, aby zrozumieć, że tabele obliczeniowe zwiększają rozmiar modelu danych, ponieważ materializują i przechowują wartości. Są one obliczane ponownie za każdym razem, gdy zależności formuły są odświeżane, na przykład gdy nowe (przyszłe) wartości daty zostaną załadowane do tabel.

    W przeciwieństwie do tabel pochodzących z dodatku Power Query tabele obliczeniowe nie mogą służyć do ładowania danych z zewnętrznych źródeł danych. Mogą jedynie przekształcać dane na podstawie wartości załadowanych do modelu danych.

  4. Przejdź do widoku Model.

  5. Zwróć uwagę, że tabela Salesperson (Sprzedawca) jest dostępna (przyjrzyj się dobrze, może być ukryta w widoku — przewiń w poziomie, aby ją zlokalizować).

  6. Utwórz relację między kolumnami Salesperson | EmployeeKey (Sprzedawca | Klucz pracownika) i Sales | EmployeeKey (Sprzedaż | Klucz pracownika).

  7. Kliknij prawym przyciskiem myszy nieaktywną relację między kolumnami Salesperson (Performance) (Sprzedawca (Wyniki)) i Sales (Sprzedaż), a następnie wybierz pozycję Usuń.

    Usuwanie nieaktywnej relacji

  8. Po wyświetleniu monitu o potwierdzenie usunięcia kliknij przycisk Usuń.

    potwierdzanie usuwania

  9. W tabeli Salesperson (Sprzedawca) wybierz wiele kolumn wymienionych poniżej, a następnie ukryj je:

    • EmployeeID (Identyfikator pracownika)

    • EmployeeKey (Klucz pracownika)

    • UPN (Nazwa UPN)

  10. Na diagramie wybierz tabelę Salesperson (Sprzedawca).

  11. W okienku Properties (Właściwości) w polu Description (Opis) wprowadź: Sprzedawca powiązany ze sprzedażą

    Pamiętaj, że opisy są wyświetlane jako etykietki narzędzi w okienku Pola, gdy użytkownik najedzie kursorem na tabelę lub pole.

  12. Dla tabeli Salesperson (Performance) (Sprzedawca (Wynik)) ustaw następujący opis: Sprzedawca powiązany z regionami.

    Model danych zapewnia teraz dwa rozwiązania alternatywne podczas analizowania sprzedawców. Tabela Salesperson (Sprzedawca) umożliwia analizowanie sprzedaży dokonanej przez sprzedawcę, natomiast tabela Salesperson (Performance) (Sprzedawca (Wyniki)) umożliwia analizowanie sprzedaży dokonanej w regionach sprzedaży przypisanych do sprzedawcy.

Zadanie 2. Tworzenie tabeli Date (Data)

W tym zadaniu utworzysz tabelę Date (Data).

  1. Przejdź do widoku Dane.

    przechodzenie do widoku Dane

  2. Na karcie wstążki Narzędzia główne w grupie Obliczenia kliknij pozycję Nowa tabela.

    Nowa tabela

  3. Na pasku formuły wprowadź następujące polecenie, a następnie naciśnij klawisz Enter:

    Date =  
    ‎CALENDARAUTO(6)
    

    wprowadzanie formuły

    Funkcja CALENDARAUTO() zwraca tabelę z jedną kolumną zawierającą wartości daty. Automatyczne zachowanie skanuje wszystkie kolumny dat modelu danych, aby określić najwcześniejszą i najpóźniejszą wartość daty przechowywaną w modelu danych. Następnie tworzy jeden wiersz dla każdej daty z tego zakresu, rozszerzając zakres w dowolnym kierunku, aby zapewnić pełne lata przechowywania danych.

    Ta funkcja może przyjąć jeden opcjonalny argument, którym jest numer ostatniego miesiąca w roku. W przypadku pominięcia tej wartość przyjmowana jest wartość 12, co oznacza, że grudzień jest ostatnim miesiącem roku. W tym przypadku wprowadzono wartość 6, co oznacza, że czerwiec jest ostatnim miesiącem roku.

  4. Zwróć uwagę na kolumnę wartości dat.

    Jeśli kolumna nie jest wyświetlana, w okienku Fields (Pola) wybierz inną tabelę, a następnie wybierz tabelę Date (Data).

    wybieranie tabeli Date (Data)

    Wyświetlane daty są sformatowane przy użyciu ustawień regionalnych Stanów Zjednoczonych (tj. mm/dd/rrrr).

  5. W lewym dolnym rogu na pasku stanu sprawdź statystyki tabeli i upewnij się, że wygenerowano 1826 wierszy danych, co reprezentuje pięć pełnych lat danych.

    1826 wierszy

Zadanie 3: Tworzenie kolumn obliczeniowych

W tym zadaniu dodasz kolejne kolumny umożliwiające filtrowanie i grupowanie według różnych przedziałów czasu. Utworzysz również kolumnę obliczeniową, która będzie kontrolować kolejność sortowania innych kolumn.

  1. Na wstążce kontekstowej Narzędzia tabel w grupie Obliczenia kliknij pozycję Nowa kolumna.

    Nowa kolumna

  2. Na pasku formuły wprowadź następujące polecenie, a następnie naciśnij klawisz Enter:

    Year =
    
    "FY" & YEAR('Date'[Date]) + IF(MONTH('Date'[Date]) > 6, 1)
    

    Kolumnę obliczeniową tworzy się, wprowadzając najpierw nazwę kolumny, znak równości (=), a następnie formułę języka DAX zwracającą pojedynczą wartość wyniku. Nazwa kolumny nie może już istnieć w tabeli.

    Formuła używa wartości roku daty, ale dodaje ją do wartości roku, gdy miesiąc następuje po czerwcu. W ten sposób są obliczane lata obrachunkowe w firmie Adventure Works.

  3. Upewnij się, że nowa kolumna została dodana.

    upewnianie się, że nowa kolumna została dodana

  4. Przy użyciu definicji z pliku fragmentów kodu utwórz następujące dwie kolumny obliczeniowe dla tabeli Date (Data):

    • Quarter (Kwartał)
    • Month (Miesiąc)

    kolumny Quarter (Kwartał) i Month (Miesiąc)

  5. Aby sprawdzić poprawność obliczeń, przełącz się do widoku Raport.

  6. Aby utworzyć nową stronę raportu, w lewym dolnym rogu kliknij ikonę znaku plus.

    tworzenie nowej strony raportu

  7. Aby dodać wizualizację macierzy do nowej strony raportu, w okienku Visualizations (Wizualizacje) wybierz typ wizualizacji macierzy.

    Porada

    Możesz umieścić kursor na każdej ikonie, aby odsłonić etykietkę narzędzia opisującą typ wizualizacji.

    etykietka narzędzia z opisem

  8. W okienku Fields (Pola) z tabeli Date (Data) przeciągnij pole Year (Rok) do obszaru Rows (Pola).

    przeciąganie roku do wierszy

  9. Przeciągnij pole Month (Miesiąc) do obszaru Rows (Wiersze) bezpośrednio poniżej pola Year (Rok).

    przeciąganie miesięcy do wierszy

  10. Obok wizualizacji macierz kliknij ikonę dwukierunkowej strzałki z rozwidleniem, co spowoduje rozwinięcie wszystkich lat na poniższym poziomie.

    klikanie dwukierunkowej strzałki z rozwidleniem

  11. Zwróć uwagę, że lata są rozwijane do miesięcy, a miesiące są sortowane alfabetycznie zamiast chronologicznie.

    miesiące sortowane alfabetycznie

    Domyślnie wartości tekstowe są sortowane alfabetycznie, liczby są sortowane od najmniejszych do największych, a daty są sortowane od najwcześniejszych do najpóźniejszych.

  12. Aby dostosować kolejność sortowania pola Month (Miesiąc), przejdź do widoku Dane.

  13. Dodaj kolumnę MonthKey (Klucz miesiąca) do tabeli Date (Data).

    MonthKey =
    
    (YEAR('Date'[Date]) * 100) + MONTH('Date'[Date])
    
    This formula computes a numeric value for each year/month combination.
    
    
  14. In Data view, verify that the new column contains numeric values (e.g. 201707 for July 2017, etc.).

    column contains numeric values

  15. In the Fields pane, ensure that the Month field is selected (when selected, it will have a dark gray background).

  16. On the Column Tools contextual ribbon, from inside the Sort group, click Sort by Column, and then select MonthKey.

    select MonthKey

  17. In the matrix visual, notice that the months are now chronologically sorted.

    months chronologically sorted

Task 4: Complete the Date table

In this task, you will complete the design of the Date table by hiding a column and creating a hierarchy. You will then create relationships to the Sales and Targets tables.

  1. Switch to Model view.

  2. In the Date table, hide the MonthKey column.

  3. In the Date table, create a hierarchy named Fiscal, with the following three levels:

    • Year
    • Quarter
    • Month

    year, quarter, month levels

  4. Create the follow two model relationships:

    • Date | Date to Sales | OrderDate
    • Date | Date to Targets | TargetMonth
  5. Hide the following two columns:

    • Sales | OrderDate
    • Targets | TargetMonth

Task 5: Mark the Date table

In this task, you will mark the Date table as a date table.

  1. Switch to Report view.

  2. In the Fields pane, select the Date table (not field).

  3. On the Table Tools contextual ribbon, from inside the Calendars group, click Mark as Date Table, and then select Mark as Date Table.

    select Mark as Data Table

  4. In the Mark as Date Table window, in the Date Column dropdown list, select Date.

    select Date

  5. Click OK.

    Click OK

  6. Save the Power BI Desktop file.

    Power BI Desktop now understands that this table defines date (time). This is important when relying on time intelligence calculations. You will work with time intelligence calculations in Lab 06B.

    Uwaga

    This design approach for a date table is suitable when you don’t have a date table in your data source. If you have access to a data warehouse, it would be appropriate to load date data from its date dimension table rather than “redefining” date logic in your data model.

Exercise 2: Create Measures

In this exercise, you will create and format several measures.

Task 1: Create simple measures

In this task, you will create simple measures. Simple measures aggregate a single column or table.

  1. In Report view, on Page 2, in the Fields pane, drag the Sales | Unit Price field into the Values section in matrix visual.

    drag Sales | Unit Price to matrix visual

    Recall that in Lab 05A, you set the Unit Price column to summarize by Average. The result you see in the matrix visual is the monthly average unit price.

  2. In the visual fields pane (located beneath the Visualizations pane), in the Values well, notice that Unit Price is listed.

    Unit Price is listed

  3. Click the down-arrow for Unit Price, and then notice the available menu options.

    available menu options

    Visible numeric columns allow report authors to decide at report design time how a column will summarize (or not). This can result in inappropriate reporting. Some data modelers do not like leaving things to chance, however, and choose to hide these columns and instead expose aggregation logic defined by measures. This is the approach you will now take in this lab.

  4. To create a measure, in the Fields pane, right-click the Sales table, and then select New Measure.

    New Measure

  5. In the formula bar, add the following measure definition:

    Avg Price = AVERAGE(Sales[Unit Price])
    
  6. Dodaj miarę Avg Price (Średnia cena) do sekcji Values (Wartości) w wizualizacji macierzy.

  7. Zwróć uwagę, że daje to ten sam wynik, co w kolumnie Unit Price (Cena jednostkowa), ale z innym formatowaniem.

  8. W obszarze Values (Wartości) otwórz menu kontekstowe dla pola Avg Price (Średnia cena) i zwróć uwagę, że nie można zmienić techniki agregacji.

    nie można zmienić techniki agregacji

  9. Przy użyciu definicji z pliku fragmentów kodu utwórz następujących pięć miar dla tabeli Sales (Sprzedaż):

    • Median Price (Mediana ceny)
    • Min Price (Minimalna cena)
    • Max Price (Maksymalna cena)
    • Orders (Zamówienia)
    • Order Lines (Wiersze zamówień)

    Funkcja DISTINCTCOUNT() użyta w mierze Orders (Zamówienia) będzie liczyć zamówienia tylko raz (ignorując duplikaty). Funkcja COUNTROWS() użyta w mierze Order Lines (Wiersze zamówień) wykonuje obliczenia na tabeli. W tym przypadku liczba zamówień jest obliczana przez liczenie odrębnych wartości kolumn SalesOrderNumber (Numer zamówienia sprzedaży), podczas gdy liczba wierszy zamówień jest po prostu liczbą wierszy w tabeli (każdy wiersz jest wierszem zamówienia).

  10. Przejdź do widoku Model, a następnie wybierz jednocześnie cztery miary ceny: Avg Price (Średnia cena), Max Price (Maksymalna cena), Median Price (Mediana ceny) i Min Price (Minimalna cena).

  11. Dla wielu wybranych miar skonfiguruj następujące wymagania:

    • Ustaw format na dwa miejsca dziesiętne.
    • Przypisz je do folderu wyświetlania o nazwie Pricing (Cennik).

    Folder Pricing (Cennik)

  12. Ukryj kolumnę Unit Price (Cena jednostkowa).

    Kolumna Unit Price (Cena jednostkowa) jest teraz niedostępna dla autorów raportów. Muszą oni używać miary dodanej do modelu. Takie podejście do projektowania gwarantuje, że autorzy raportów nie będą w niewłaściwy sposób agregować cen, na przykład przez sumowanie ich.

  13. Wybierz miary Orders (Zamówienia) i Order Lines (Wiersze zamówień) i skonfiguruj następujące wymagania:

    • Ustawianie formatu z zastosowaniem separatora tysięcy
    • Przypisz je do folderu wyświetlania o nazwie Counts (Liczniki).

    Folder Counts (Liczniki)

  14. W widoku Raport w obszarze Values (Wartości) w wizualizacji macierzy kliknij znak X w polu Unit Price (Cena jednostkowa), aby go usunąć.

    usuwanie pola Unit Price (Cena jednostkowa)

  15. Zwiększ rozmiar wizualizacji macierzy, aby wypełnić szerokość i wysokość strony.

  16. Dodaj następujących pięć miar do wizualizacji macierzy:

    • Median Price (Mediana ceny)
    • Min Price (Minimalna cena)
    • Max Price (Maksymalna cena)
    • Orders (Zamówienia)
    • Order Lines (Wiersze zamówień)
  17. Upewnij się, że wyniki wyglądają prawidłowo i są poprawnie sformatowane.

    weryfikowanie wyników

Zadanie 2. Tworzenie dodatkowych miar

W tym zadaniu utworzysz dodatkowe miary z wykorzystaniem bardziej złożonych wyrażeń.

  1. W widoku Raport wybierz stronę 1.

    wybieranie strony 1

  2. Zapoznaj się z wizualizacją tabeli, zwracając uwagę na sumę w kolumnie Target (Cel).

    suma w kolumnie Target (Cel)

    Sumowanie wartości celu ze sobą nie ma sensu, ponieważ cele sprzedawców są ustawiane dla każdego sprzedawcy w oparciu o przypisane regiony sprzedaży. Wartość celu powinna być wyświetlana tylko wtedy, gdy filtrowany jest pojedynczy sprzedawca. Teraz zaimplementujesz miarę w tym celu.

  3. W wizualizacji tabeli usuń pole Target (Cel).

    usuwanie pola Target (Cel)

  4. Zmień nazwę kolumny Targets | Target (Cele | Cel) na Targets | TargetAmount (Cele | Kwota celu).

    Porada

    Istnieje kilka sposobów zmiany nazwy kolumny w widoku Raport: W okienku Fields (Pola) możesz kliknąć prawym przyciskiem myszy kolumnę, a następnie wybrać polecenie Zmień nazwę, kliknąć dwukrotnie kolumnę lub nacisnąć klawisz F2.

    Zamierzasz utworzyć miarę o nazwie Target (Cel). Kolumna i miara o tej samej nazwie nie może istnieć w tej samej tabeli.

  5. Utwórz następującą miarę dla tabeli Targets (Cele):

    Target =
    
    IF(
    
    HASONEVALUE('Salesperson (Performance)'[Salesperson]),
    
    SUM(Targets[TargetAmount])
    
    )
    

    Funkcja HASONEVALUE() sprawdza, czy filtrowana jest pojedyncza wartość w kolumnie Salesperson (Sprzedawca). W przypadku wartości true wyrażenie zwraca sumę kwot celu (tylko dla tego sprzedawcy). W przypadku wartości false, zwracana jest PUSTA wartość.

  6. Dla miary Target (Cel) ustaw format bez miejsc dziesiętnych.

    Porada

    W tym celu możesz użyć wstążki kontekstowej Narzędzia miar.

  7. Ukryj kolumnę TargetAmount (Kwota celu).

  8. Dodaj miarę Target (Cel) do wizualizacji tabeli.

  9. Zauważ, że wartość sumy w kolumnie Target (Cel) jest teraz PUSTA.

    Suma w kolumnie Target (Cel) jest pusta

  10. Przy użyciu definicji z pliku fragmentów kodu utwórz następujące dwie miary dla tabeli Targets (Cele):

    • Variance (Wariancja)
    • Variance Margin (Margines wariancji)
  11. Dla miary Variance (Wariancja) ustaw format bez miejsc dziesiętnych.

  12. Dla miary Variance Margin (Margines wariancji) ustaw format z dwoma miejscami dziesiętnymi.

  13. Dodaj miary Variance (Wariancja) i Variance Margin (Margines wariancji) do wizualizacji tabeli.

  14. Zwiększ szerokość wizualizacji tabeli, aby wyświetlić wszystkie wartości.

    wszystkie wartości są wyświetlane

    Mimo że wydaje się, że wszyscy sprzedawcy nie osiągają celu, należy pamiętać, że miary nie są jeszcze filtrowane według określonego przedziału czasu. Raporty wyników sprzedaży, które można filtrować według okresu wybranego przez użytkownika utworzysz w laboratorium 07A.

  15. W prawym górnym rogu okienka Pola zwiń i rozwiń okienko.

    rozwijanie okienka Pola

    Zwinięcie i ponowne otwarcie okienka powoduje zresetowanie zawartości.

  16. Zwróć uwagę, że tabela Targets (Cele) jest teraz wyświetlana u góry listy.

    Tabela Targets (Cele) wyświetlana u góry listy

    Tabele zawierające tylko widoczne miary są automatycznie wyświetlane u góry listy.

Zakończenie

W tym zadaniu ukończysz laboratorium.

  1. Zapisz plik programu Power BI Desktop.

  2. Pozostaw program Power BI Desktop otwarty.

W następnym laboratorium ulepszysz model danych o bardziej zaawansowane obliczenia przy użyciu języka DAX.