Einführung in Dax
Basierend auf SQLBIs Einführung des DAX -Videokurs.
Berichtsschema

Bericht

Theorie
Die DAX -Sprache
DAX ist eine funktionale Sprache, die Ausführung fließt mit Funktionsaufrufen.
! Die Codeformatierung ist in DAX wichtig, da das Code -Debuggen einfach ist. Zum automatischen Formatieren von DAX -Code kann der Daxformatter verwenden.
Berechnete Spalten
- Spalten mit DAX berechnet.
- Immer für die aktuelle Zeile berechnet.
Maßnahmen
- Geschrieben mit DAX
- Arbeite keine Zeile für Zeile
- Verwenden Sie stattdessen Tabellen und Aggregatoren
- Haben Sie nicht das Konzept der «aktuellen Zeile»
Benennung von Konventionen
- Messungen gehören nicht zu einer Tabelle => den Tabellennamen in Bezug auf die Referenzierungsmaßnahmen vermeiden. Auf diese Weise ist es einfacher, sich in eine andere Tabelle zu bewegen und sich als Maß zu identifizieren.
- Also:
- Berechnete Spalten -> Tabelle [Spalte]
- Maßnahmen -> [Maßnahme]
Maßnahmen gegen berechnete Spalten
- Verwenden Sie eine Spalte, wenn:
- Müssen den Wert schneiden oder filtern
- Verwenden Sie eine Maßnahme, wenn:
- Berechnung von Prozentsätzen oder Verhältnissen
- Komplexen Aggregationen benötigen
- Raum- und CPU -Nutzung:
- Spalten verbrauchen Speicher
- Maßnahmen verbrauchen CPU
Aggregationsfunktionen
- Arbeiten Sie nur an numerischen Spalten.
- Aggregieren Sie nur eine Spalte.
Die «x» Aggregation Funktionen
- Iteratoren: nützlich, um Formeln zu aggregieren
- Iterieren Sie über die Tabelle und bewerten Sie den Ausdruck für jede Zeile
- Empfangen Sie immer zwei Parameter:
- Tisch zu iterieren
- Formel für jede Zeile zu bewerten
- Beispiel:
SUMX (
Sales,
Sales[Price] * Sales[Quantity]
)
Verwenden von Variablen
- Sehr nützlich, um die Wiederholung von Suberxpressionen in Ihrem Code zu vermeiden.
- Beispiel:
Quantity =
VAR TotalQuantity = SUM ( Sales[Quantity] )
RETURN
IF (
TotalQuantity > 1000,
TotalQuantity * 0.95,
TotalQuantity * 1.25
)
Datumsfunktionen
DATE, DATEVALUE, DAY, EDATE,
EOMONTH, HOUR, MINUTE,
MONTH, NOW, SECOND, TIME,
TIMEVALUE, TODAY, WEEKDAY,
WEEKNUM, YEAR, YEARFRAC
Tabellenfunktionen
- Grundfunktionen, die auf vollständigen Tischen funktionieren und dadurch eine Tabelle zurückgeben
FILTER
ALL
VALUES
DISTINCT
RELATEDTABLE
- Ihr Ergebnis wird oft in anderen Funktionen verwendet
- Sie können zusammen kombiniert werden, um komplexe Ausdrücke zu bilden
FILTER
- Fügt eine neue Bedingung hinzu, indem die Anzahl der Zeilen einer Tabelle eingeschränkt wird
- Gibt eine Tabelle zurück, die durch eine «x» -Funktion iteriert werden kann
ALLE
- Gibt alle Zeilen einer Tabelle zurück, während der Filterkontext ignoriert wird
- Gibt eine Tabelle zurück, die durch eine «x» -Funktion iteriert werden kann
- Kann auch mit einer einzelnen Spalte
ALL ( Customers[CustomerName] ) verwendet werden. Das Ergebnis ist eine Tabelle mit einer Spalte
UNTERSCHEIDBAR
- Gibt die unterschiedlichen Werte einer Spalte zurück, nur diejenigen, die im aktuellen Kontext sichtbar sind
NumOfProducts =
COUNTROWS (
DISTINCT ( Product[ProductCode] )
)
Verwandt
- Gibt eine Tabelle mit allen Zeilen zurück, die mit dem aktuellen zusammenhängen.
NumOfProducts = COUNTROWS ( RELATEDTABLE ( Product ) )
Bewertungskontexte
1. Filterkontext
- Definiert durch:
- Zeilenauswahl
- Spaltenauswahl
- Berichtsfilter
- Slicers -Auswahl
- Zeilen außerhalb des Filterkontexts werden für die Berechnung nicht berücksichtigt
- Das automatische definierte durch Pivottable kann auch mit bestimmten Funktionen erstellt werden
2. Zeilenkontext
- Definiert durch:
- Berechnete Spaltendefinition
- Für jede Zeile automatisch definiert
- Zeilen -Iterationsfunktionen
- Sumx, Avhitx…
- Alle «x» -Funktionen und Iteratoren
- Definiert durch die Benutzerformeln
- Für die Bewertung der Spaltenwerte ist es das Konzept der "aktuellen Zeile"
! Der Filterkontext filtert Tabellen. Der Zeilenkontext iteriert die Reihen!
BERECHNEN
- Ersetzt teilweise den Filterkontext
- Bedingungen
- Kann eine ganze Tabelle ersetzen
- Kann eine einzelne Spalte ersetzen
- Berechnen Sie Werke im Filterkontext
- Filter werden im Außenfilterkontext bewertet und dann zusammen kombiniert und schließlich verwendet, um einen neuen Filterkontext zu erstellen, in den DAX den Ausdruck bewertet.
- Synthax:
CALCULATE (
Expression,
Filter1,
…
Filtern
)
1. Filter und Summe befinden sich auf derselben Tabelle. Sie können das gleiche Ergebnis mit Filter erhalten.
NumOfBigSales =
CALCULATE (
SUM ( Sales[SalesAmount] ),
Sales[SalesAmount] > 100
)
2.Clear Filter nur auf einer Spalte. Alle werden mit einer einzelnen Spaltentabelle verwendet.
CALCULATE (
SUMX (
Orders,
Orders[Amount]
),
ALL ( Orders[Channel] )
)
Filter und Beziehungen
-Relationships wirken sich auf den Filterkontext aus
VERWANDT
RELATED ( table[column] )
- Öffnet einen neuen Zeilenkontext in der Zieltabelle
- Befolgung von Beziehungen
- Ermöglicht viele Seite zu einer Seitenfilterung
Verwandt
RELATEDTABLE ( table )
- Filtert die Parametertabelle
- Gibt nur Zeilen zurück, die mit dem aktuellen zusammenhängen
- Es ist der Begleiter der verwandten
Kontextübergang
- Berechnung führt eine andere Aufgabe aus:
- Wenn Sie in einem Zeilenkontext ausgeführt werden
- Es nimmt den Zeilenkontext
- Verwandelt es in einen äquivalenten Filterkontext
- Wendet es auf das Datenmodell an, bevor er seinen Ausdruck berechnet
- Beispiel:
SUM() vs CALCULATE(SUM())
Zeit Intelligenz
- Zeitinformation braucht eine Datumstabelle.
- Datumstischeigenschaften:
- Alle Daten sollten vorhanden sein
- Von 1 ° Januar bis 31 ° von Dezember
- Keine Löcher
- Andernfalls funktioniert die Zeit intelligenz nicht
- Zeit intelligenz deckt:
- Der bisherige Jahresverlauf
- Viertel bis heute
- Gesamtlauf
- Der gleiche Zeitraum im Vorjahr
- Berechnung von Arbeitstagen
- Geschäftsjahr
- usw.
- Aggregationen:
- YTD: Jahr bis heute
- QTD: Viertel bis heute
- MTD: Monat bis heute
KALENDER
- Gibt eine Tabelle mit einer einzelnen Spalte mit dem Namen "Date" zurück, die einen zusammenhängenden Datensatz im angegebenen Bereich enthält, einschließlich.
CALENDAR (
DATE ( YEAR ( MIN ( Sales[Order Date] ) ), 1, 1 ),
DATE ( YEAR ( MIN ( Sales[Order Date] ) ), 12, 31 )
)
Kalendarauto
- Erstellt automatisch eine Kalendertabelle basierend auf dem Datenbankinhalt. Optional können Sie den letzten Monat angeben (nützlich für Geschäftsjahre)
- CalendArauto verwendet alle Daten im Modell, ausgenommen nur berechnete Spalten und Tabellen
Der bisherige Jahresverlauf
DATESYTD und TOTALYTD
SalesAmountYTD =
CALCULATE (
SUM ( Sales[SalesAmount] ),
DATESYTD ( 'Date'[Date] )
)
SalesAmountYTD :=
TOTALYTD (
SUM ( Sales[SalesAmount] ),
'Date'[Date],
"06-30"
)
Der gleiche Zeitraum im letzten Jahr
Sales_SPLY =
CALCULATE (
SUM ( Sales[SalesAmount] ),
SAMEPERIODLASTYEAR ( 'Date'[Date] )
)
Gesamtlauf
- Das Ausführen der Gesamtzahl erfordert einen expliziten Filter.
SalesAmountRT =
CALCULATE (
SUM ( Sales[SalesAmount] ),
FILTER ( ALL ( 'Date' ), 'Date'[Date] <= MAX ( 'Date'[Date] ) )
)