Business Central DateFormula mit Power Query vom MS SQL Server auslesen

Vor Kurzem fragte mich ein Kunde, wie man mit Power BI den Wert einer DateFormula Spalte vom MS SQL Server auslesen kann, denn in Power Query würden nur die Zahlenwerte angezeigt, aber nicht die zugehörige Zeiteinheit. In diesem Blogbeitrag möchte ich dir zeigen, wie du die DateFormula sichtbar machen kannst.

Als Ausgangspunkt nehmen wir die Business Central Tabelle “Zahlungsbedingungen” (Payment Terms) in der die verschiedenen Zahlungsbedingungen definiert sind.

Business Central Zahlungsbedingungen

Wie wir sehen, sind in Power Query in der Spalte “Fälligkeitsformel” (Due Date Calculation) nur die Zahlenwerte sichtbar, aber nicht die zugehörigen Zeiteinheiten.

Tabelle Zahlungsbedingungen in Power Query (SQL)

Filtern wir in der Spalte auf einen Wert, können wir in der Bearbeitungsleiste erkennen, dass in der Spalte mehr als nur der Zahlenwert vorhanden ist, sondern auch ein nicht sichtbares Steuerzeichen.

Sonderzeichen durch Filter

Dies ist schon das ganze Geheimnis, denn Business Central speichert nicht das alphanumerische Zeichen, sondern eine binären Wert, der diese Zeiteinheit repräsentiert.

Die Werte werden wie folgt vergeben.
#(0001) = C = Current
#(0002) = D = Day
#(0003) = WD = Week Day
#(0004) = W = Week
#(0005) = M = Month
#(0006) = Q = Quarter
#(0007) = Y = Year

Mit “Werte ersetzen”, können die Steuerzeichen durch die entsprechenden alphanumerischen Zeichen ersetzt werden. Dabei ist zu beachten, dass das Steuerzeichen über die Bearbeitungsleiste eingegeben wird, da über den Dialog Sonderzeichen maskiert werden.

Wert ersetzen

Hier der M-Code aus meinem Beispiel.

let
    Quelle = Sql.Database("localhost", "BC"),
    #"dbo_CRONUS DE$Payment Terms" = Quelle{[Schema="dbo",Item="CRONUS DE$Payment Terms$437dbf0e-84ff-417a-965d-ed2bb9650972"]}[Data],
    #"Wert ersetzen - Current" = Table.ReplaceValue(#"dbo_CRONUS DE$Payment Terms","#(0001)","C",Replacer.ReplaceText,{"Due Date Calculation"}),
    #"Wert ersetzen - Day" = Table.ReplaceValue(#"Wert ersetzen - Current","#(0002)","D",Replacer.ReplaceText,{"Due Date Calculation"}),
    #"Wert ersetzen - Week Day" = Table.ReplaceValue(#"Wert ersetzen - Day","#(0003)","WD",Replacer.ReplaceText,{"Due Date Calculation"}),
    #"Wert ersetzen - Week" = Table.ReplaceValue(#"Wert ersetzen - Week Day","#(0004)","W",Replacer.ReplaceText,{"Due Date Calculation"}),
    #"Wert ersetzen - Month" = Table.ReplaceValue(#"Wert ersetzen - Week","#(0005)","M",Replacer.ReplaceText,{"Due Date Calculation"}),
    #"Wert ersetzen - Quartal" = Table.ReplaceValue(#"Wert ersetzen - Month","#(0006)","Q",Replacer.ReplaceText,{"Due Date Calculation"}),
    #"Wert ersetzen - Year" = Table.ReplaceValue(#"Wert ersetzen - Quartal","#(0007)","Y",Replacer.ReplaceText,{"Due Date Calculation"})
in
    #"Wert ersetzen - Year"

Ich hoffe, der Beitrag hilft dir weiter.
Bis zum nächsten Mal.
Dein Marcus

Veröffentlicht von

Marcus Wegener

Marcus Wegener ist Anwendungsentwickler für Business Intelligence und erstellt Lösungen, mit denen sich große Datenmengen schnell analysieren lassen. Kunden nutzen seine Lösungen, um die Vergangenheit zu analysieren, die Gegenwart zu steuern und die Zukunft zu planen, um damit mehr Erfolg zu generieren. Dabei ist seine einzigartige Kombination aus Wissen und Auffassungsgabe ein Garant für ihren Erfolg.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.