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.
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.
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.
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.
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