PQ_ Datumsformat
#1
Hallo Gemeinde, 

gibt es einen schlauen Weg ein über CSV importiertes Datum im Format

YYYYMMDDHHMM (also Jahr - Monat - Tag - Stunde - Minute ) 

in PowerQuery  "in einem Rutsch" in ein brauchbares Datum zu wandeln? 

Ich weiss, dass ich mir die Spalte Teilen kann und dann alles "zusammenbasteln" kann. 
Das erscheint mir aber nicht schlau =)

Vielleicht hat ja jemand ne"schlaue" Idee =)

Ich Vermute das die Lösung in "Datentyp erstellen" liegt - aber das versteh ich nicht 

Vielen Dank =)
Jack
Antworten Top
#2
Du könntest eine M-Funktion erstellen
Code:
(input) =>
let
    raw = Text.From(input),
    year = Text.Start(raw, 4),
    month = Text.Middle(raw, 4, 2),
    day = Text.Middle(raw, 6, 2),
    hour = Text.Middle(raw, 8, 2),
    minute = Text.End(raw, 2),
    dateTimeText = year & "-" & month & "-" & day & " " & hour & ":" & minute
in
    DateTime.FromText(dateTimeText)
Ohne Sicherheitsnetz, der Input sollte genauso wie von Dir beschrieben aussehen und ein gültiges Datum und eine gültige Uhrzeit darstellen
Antworten Top
#3
Hi,
der (für mich) einfachste Weg wäre:

  1. Spalte markieren
  2. Menu "Spalte hinzufügen" --> "Spalte aus Beispielen" --> "Aus Auswahl"
  3. In der Eingabemaske zwei/drei Beispiele in der Form "2025-10-21 15:19" oder auch "21.10.2025 15:19" eingeben - natürlich mit Zahlenwerten aus der entsprechenden Zeile deiner Datei (bei mir haben bereits zwei Eingaben gereicht)
  4. OK klicken
  5. bei Bedarf: alte Spalte löschen
  6. neue Spalte umbenennen und Datentyp auf "Datum/Zeit" ändern

Ist zwar im Grunde auch nichts anderes als deine angesprochenen Schritte, aber doch etwas einfacher...
Kann man sicherlich auch noch auf direkterem Weg lösen, aber vermutlich nur durch einen händischen M-Code und nicht mehr durch einfaches zusammenklicken.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 2 Nutzer sagen Danke an HKindler für diesen Beitrag:
  • Jockel, Jack_d
Antworten Top
#4
(21.10.2025, 14:55)Jack_d schrieb: gibt es einen schlauen Weg ein über CSV importiertes Datum im Format
YYYYMMDDHHMM (also Jahr - Monat - Tag - Stunde - Minute ) 
in PowerQuery  "in einem Rutsch" in ein brauchbares Datum zu wandeln? 

let
    Source = Csv.Document(File.Contents("Z:\test.csv"),[Delimiter=",", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    AddedDateTime = Table.AddColumn(#"Promoted Headers", "DateTime", each DateTime.FromText(Text.Insert([DT],8,"T")), type datetime)
in
    AddedDateTime


Angehängte Dateien
.csv   test.csv (Größe: 37 Bytes / Downloads: 6)
[-] Folgende(r) 1 Nutzer sagt Danke an Andreas Killer für diesen Beitrag:
  • Jack_d
Antworten Top
#5
Da ja nur nach dem Datum gefragt wurde, reicht auch:

Table.AddColumn(#"Promoted Headers", "Datum", each Date.From(Text.Start([DT], 8)))
[-] Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:
  • Jack_d
Antworten Top
#6
Vielen Dnak an alle Helfenden 

sind ein paar interessante Ansätze dabei .. Ich hatte mir in der Zwischenzeit mit geholfen 

Code:
Table.AddColumn(Titel_Up, "FormDatum", each DateTime.FromText([Datum"], [Format="yyyyMMddHHmm", Culture="de-DE"]))




Grüße Jack
[-] Folgende(r) 2 Nutzer sagen Danke an Jack_d für diesen Beitrag:
  • HKindler, DeltaX
Antworten Top
#7
Hi,

das ist mit Sicherheit der eleganteste Ansatz. Man sollte doch ab und zu in die Hilfe zu den einzelnen Funktionen schauen. Dass DateTime.FromText optionale Parameter hat, hatte ich irgendwie verdrängt.
Übrigens könnte man hier vermutlich auf den Culture-Parameter verzichten...
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste