Hinzufügen von Semestern zu einem Kalender in Power BI

Teilen auf Facebook
Teilen auf twittern
Teilen auf verlinktin
Teilen auf Telegramm
Teilen auf WhatsApp

Inhalt

Ich habe in der Vergangenheit Power BI-Training an verschiedenen Universitäten unterrichtet 6 Monate und einige der Teilnehmer haben mir die gleiche Frage gestellt. „Wie fügt man einem Kalender am besten Semester hinzu, um die Studierendendaten semesterweise analysieren zu können?? Es gibt mehrere Möglichkeiten, dieses Problem zu lösen. In diesem Artikel möchte ich mit Ihnen einen Weg teilen, um es zu lösen mit DAX in Power BI. Ich werde die Datenbank verwenden AbenteuerWorks zur Demonstration. Um die Demo realistischer zu halten, Ich werde einige der Tabellen umbenennen (Ich werde die Daten nicht ändern).

  • Die Clients-Tabelle wird Studenten heißen
  • Die Verkaufstabelle heißt Anmeldungen nach Thema.
  • Die Territory-Tabelle heißt Campus

Kein perfekter Austausch von einem, aber ich denke es wird den zweck erfüllen. Ich werde die tatsächlichen Daten nicht ändern, aber ich werde die daten wie oben beschrieben verwenden. Ich weiß, dass die Immatrikulationsdaten von Studenten davon abweichen, aber ich habe diese Daten nicht zur Verfügung; dieser Proxy sollte den Sinn des Artikels gut genug veranschaulichen.

Der Abschlussbericht sieht so aus.

addsemtocal-1-25715934

Wie es bei mir üblich ist, unten zeige ich dir, wie es Schritt für Schritt geht. Die Technik, die ich verwenden werde, ist im Wesentlichen Im DAX klingelt die ich in einem früheren Blogbeitrag behandelt habe.

Beispieldaten

um anzufangen, Ich habe eine Stammdatentabelle mit Beginn und Ende des Semesters erstellt; Ich habe diese Tabelle SemesterDates genannt. Ich bin davon ausgegangen, dass es geben wird 2 Semester im Jahr. Natürlich, einige Universitäten haben sogar 3 Ö 4 Semester im Jahr; Das Prinzip ist das gleiche. Ich habe die beiden Semester eines Jahres als S1 und S2 bezeichnet. Ich habe auch eine YYYYSS-Spalte hinzugefügt, um eine einzigartige Semester- und Jahresspalte zu erstellen. Schließlich, Ich habe eine Semester-ID-Spalte hinzugefügt, um das Schreiben der DAX-Formeln zu erleichtern. Beachten Sie, dass diese letzte Spalte eine ganze Zahl ist, die jedes Semester eindeutig identifiziert und um erhöht wird 1 für jedes vergangene Semester.

addsemtocal-2-1214290

Dies ist eine einfache Tabelle, die jeder in Excel erstellen kann. Einmal erstellt, dies wird zur Stammtabelle, die jedes Jahr einfach gepflegt werden kann, wenn die neuen Semesterdaten veröffentlicht werden.

Laden der Semesterdatentabelle in das Power BI-Datenmodell

Ich habe die Tabelle SemesterDates in die AdventureWorks Power BI-Arbeitsmappe geladen. In diesem Fall, Ich werde die Tabelle mit keiner anderen Tabelle im Datenmodell verbinden. Der Zweck von Beziehungen in Power BI ist die Verbreitung filtert eine Tabelle zum anderen; ich brauche das nicht, Daher, keine Beziehungen. Ich habe mich auch entschieden, die Tabelle auszublenden, damit sie nicht in der Berichtsansicht angezeigt wird. Dies liegt daran, dass ich es nur verwenden werde, um die erforderlichen DAX-Formeln zu schreiben (berechnete Spalten) für Berichtszwecke erforderlich. Dies ist meine Beziehungsansicht des Datenmodells.

addsemtocal-3-1-7207415

Berechnete Spalten zur Kalendertabelle hinzufügen

das empfehle ich immer, im Zweifelsfall, Kennzahlen und nicht berechnete Spalten hinzufügen. Aber es gibt immer Ausnahmen von dieser Regel, wie ich in meinem Blogartikel erklärt habe. In diesem Fall, wir fügen die berechneten Spalten zu einer Nachschlagetabelle hinzu (Kalender) um es zu verbessern und Das Nachschlagetabellen sie sind normalerweise kleiner (weniger Reihen) Ja, Daher, der Einfluss der Größe der berechneten Spalten ist nicht so schlimm. Was ist mehr, Ich möchte das Ergebnis verwenden, um meine Daten zu teilen, und eine Maßnahme kann das nicht tun; Ich brauche eine Spalte.

Ich habe drei berechnete Spalten hinzugefügt YYYYSS, Semester Ja SemesterID unter Verwendung der folgenden DAX-Formeln, die unten gezeigt werden. Ich habe die VAR-Syntax verwendet, damit die Formeln leicht zu verstehen sind. Diese Formeln sind im Wesentlichen die Banding-Technik in DAX.

YYYYSS = VAR CurrentDate="Kalender"[Datum]
         VAR-Ergebnis = BERECHNEN(AUSGEWÄHLTER WERT(SemesterTermine[YYYYSS]), 
                                Aktuelles Datum >=Semesterdaten[Ab Datum], 
                                Aktuelles Datum <=Semesterdaten[Miteinander ausgehen]
                      )
         RÜCKGABE WENN(Ergebnis = BLANK(), "Ferien", Ergebnis)
Semester = WAS Aktuelles Datum ="Kalender"[Datum]
           VAR-Ergebnis = BERECHNEN(AUSGEWÄHLTER WERT(SemesterTermine[Semester]), 
                                  Aktuelles Datum >=Semesterdaten[Ab Datum], 
                                  Aktuelles Datum <=Semesterdaten[Miteinander ausgehen]
                        )
           RÜCKGABE WENN(Ergebnis = BLANK(), "Ferien", Ergebnis)
Semester-ID = VAR CurrentDate ="Kalender"[Datum]
              VAR-Ergebnis = BERECHNEN(AUSGEWÄHLTER WERT(SemesterTermine[Semester-ID]),
                                     Aktuelles Datum >=Semesterdaten[Ab Datum],
                                     Aktuelles Datum <=Semesterdaten[Miteinander ausgehen]
                           )
              RÜCKGABE WENN(Ergebnis = BLANK(), 0, Ergebnis)

Der Trick mit den obigen Formeln besteht darin, Folgendes zu tun: (unter Berücksichtigung, dass es sich um eine berechnete Spalte handelt)

  • Nehmen Sie das Datum für jede Zeile in der Kalendertabelle auf (die Formel läuft eine Zeile nach der anderen, nämlich, hat einen Zeilenkontext)
  • Schieben Sie einen Filter auf die Semestertabelle, sodass die Semestertabelle nach Anwendung des Filters eine einzelne Zeile anzeigt.
    • Die einzige Zeile muss die Zeile am oder nach dem Startdatum sein, und auch am oder vor dem Enddatum.
  • Sobald die Semestertabelle nur eine Zeile hat (nachdem Filter angewendet wurden), Extrahieren Sie den eindeutigen Wert aus einer der anderen Spalten in der Semestertabelle und speichern Sie ihn in meiner neuen berechneten Spalte.

Es funktioniert, weil sich die Datumsbereiche in der Semestertabelle gegenseitig ausschließen (Es gibt keine überlappenden Datumszeiträume, in denen ein bestimmtes Datum in . liegt 2 Semester).

Definieren von Maßnahmen, um Datenstatistiken zu informieren

Jetzt sind wir bereit, die notwendigen Maßnahmen zu definieren, um die Erkenntnisse aus den Daten zu informieren. Und wie es üblich ist, Zuerst habe ich dem Bericht ein Tabellenvisual mit dem Feld 'Kalender' hinzugefügt[YYYYSS] und fügen Sie dann jede Kennzahl hinzu, um sicherzustellen, dass meine DAX-Formeln korrekt sind.

Die erste Messung, die ich geschrieben habe, ist das Zählen der Schülerzahl. Erinnern, Ich verwende hier tatsächlich AdventureWorks, also kein perfekter Ersatz für tatsächliche Inschriften. Ich verwende das Kaufdatum von AdventureWorks als Stellvertreter für ein Transaktionsdatum während eines Semesters. Aber trotzdem, Das Prinzip ist das gleiche.

Gesamtzahl der Studierenden in diesem Semester = DISTINCTCOUNT(Einschreibungen[Schülerschlüssel])

Als nächstes definiere ich das Maß, um die Anzahl der Studierenden im vorherigen Semester zu zählen.

Gesamtzahl der Schüler. Semester = VAR AktuellesSemester = AUSGEWÄHLTER WERT('Kalender'[Semester-ID])
                 VAR PrevSemester = CurrentSemester - 1
                 VAR-Ergebnis = BERECHNEN([Gesamtzahl der Studierenden in diesem Semester], 
                                         ALLE('Kalender'), 
                                         'Kalender'[Semester-ID] = VorigesSemester)
                 RÜCKGABE Ergebnis

Wir können Chg vs. Vorsemester wie folgt definieren.

Änderung vs. Zurück. Semester = VAR AktuellesSemester = AUSGEWÄHLTER WERT('Kalender'[Semester-ID])
         VAR PrevSemester = CurrentSemester - 1
         VAR-Ergebnis = IF(VorigesSemester <> 0, 
                         [Gesamtzahl der Studierenden in diesem Semester] - [Gesamtzahl der Schüler. Semester]
                      )
         RÜCKGABE Ergebnis

Endlich haben wir den gewünschten Bericht bekommen.

addsemtocal-1-1-6656891

Hier ist die Beispielarbeitsmappe, die ich in diesem Blogbeitrag verwendet habe.

Ein letztes Wort

Wie ich eingangs erwähnt habe, Es gibt mehr als einen Weg, dieses Problem zu lösen, einschließlich der Verwendung von Power-Abfrage statt DAX. Die Kehrseite der Verwendung von DAX (diese Methode) ist, dass Sie die berechneten Spalten in jede neue Arbeitsmappe schreiben müssen, die Sie erstellen. Ungeachtet, ist eine einfache und nützliche Möglichkeit, das Problem zu lösen.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.