Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
Controller1
Contributor III
Contributor III

Datum

Hallo Zusammen,

Ich benötige bitte Hilfe bei der Erstellung bzw. Trennung des Datums. 

20220912 so sieht das Datum aus. 

mtu_btag, 
Datum#(mtu_btag, 'JJJMMTT') als Datum_mtu_btag,
Jahr(mtu_btag) als Jahr_mtu_btag,
Monat(mtu_btag) als Monat_mtu_btag,
Tag(mtu_btag) als Tag_mtu_btag,

 

Labels (1)
9 Replies
marcus_sommer

Nicht das deutsche Format-Pattern, sondern das englische muss angewendet werden, also vielleicht so:

load *, month(Datum) as Monat, ...;
load date(date#(mtu_btag, 'YYYYMMDD')) as Datum from X;

- Marcus

Controller1
Contributor III
Contributor III
Author

Hallo Markus,

danke für Deine schnelle Antwort. Wahrscheinlich habe ich mich nicht genau ausgedrückt oder ich habe es nicht genau verstanden?

Aktuell kommt mein Datum (20220912) so aus dem Vorsystem.

Jetzt möchte ich das in Jahr, Monat und Tag trennen damit ich auch alles einzeln abrufen kann.

Kannst Du mir das eventuell sagen? Bisher habe ich es so versucht aber die Felder sind aktuell hier leer.

 

mtu_btag,

Datum#(mtu_btag, 'JJJMMTT') als Datum_mtu_btag,

Datum(mtu_btag,'JJJJMMTT') als Datum_mtu_btag,

Jahr(mtu_btag) als Jahr_mtu_btag,

Monat(mtu_btag) als Monat_mtu_btag,

Tag(mtu_btag) als Tag_mtu_btag,

Datum(mtu_btag,'TT.MM.JJJJ') als Datum,

 

Danke

 

Daniel

marcus_sommer

Mein Vorschlag von oben sollte genau hierfür funktionieren. Falls nicht dann lade das Feld auch mal ohne jegliche Transformation ein sowie zstl. auch mal mit len() und isnum().

- Marcus

Controller1
Contributor III
Contributor III
Author

Das hat jetzt damit geklappt aber den Monat kann ich nicht greifen? Hast Du dafür noch eine Idee?

 

mtu_btag,

    num(Left(mtu_btag,4),'0') as JAHR_mtu_btag,                                         das geht

    num(left(mtu_btag,5-6),'0') as MONAT_mtu_btag,                                 das mag er nicht ☹

    num(right("mtu_btag",2),'0') as TAG_mtu_btag,                                      das geht

marcus_sommer

Um aus der String-Mitte Werte zu extrahieren kann man nicht left/right verwenden, sondern müsste es mit mid() machen, wie vielleicht mid(Feld, 5, 2).

Jedoch ist das nicht erforderlich, wenn man ein Datum hat, denn hierfür gibt es eine Vielzahl an Funktionen, um alle möglichen Perioden-Information abzuleiten, wie etwa: year/month/week/weekday/day(Datum) usw. Davon abgesehen ist es best practice solche Perioden-Informationen nicht in den Fakten zu generieren, sondern über das Datums-Feld einfach einen Master-Kalender zu verlinken.

- Marcus

Controller1
Contributor III
Contributor III
Author

Ich habe es versucht mit Year/month etc aber ich versteh das nicht bzw. bekomme ich das mit dem Datum nicht hier. Meine Felder bei Tag und Monat und Jahr sind immer leer. Komisch

marcus_sommer

Wie sieht denn dieser Script-Teil genau aus?

Controller1
Contributor III
Contributor III
Author

Controller1_1-1664544470651.png

Das ist das Script

marcus_sommer

Dieser Teil sollte funktioniere, wenn die Werte wie für Heute wie folgt aussehen: 20220930

marcus_sommer_0-1664544824685.png


wobei hier dann kein echter Monat entsteht, denn das äußere date() formatiert nur das Datum als Monat, bleibt wertmäßig aber ein Datum. Hier müsste man dann month() nehmen, um einen richtigen Monatswert zu erhalten.

Falls es hier aber nur NULL als Ergebnis gibt, dann ist das Format-Pattern für die Konvertierung von date#() nicht korrekt - das muss 1:1 passen.  Daher auch mein obiger Vorschlag, das Feld ohne jede Transformation sowie zstl. mit len() + isnum() einzuladen, um zu sehen, was wirklich an Rohdaten vorhanden ist. Das was einem in einer Datenbank und/oder Excel angezeigt wird, müssen nicht die gespeicherten Werte sein, sondern sind möglicherweise auch nur Formatierungen.

- Marcus