Free Trial

Forum - Deutsch

Suchen Sie nach Antworten, stellen Sie Fragen und teilen Sie Ihr Alteryx-Wissen.
GELÖST

Datenausgabe mit Bedingung

akku
Bolide

Hallo Leute,

 

ich möchte folgenden Workflow bauen und benötige dazu etwas Unterstützung.

 

Ich lese die Daten aus einer csv-Datei ein und ergänze diese um eine Spalte, in der ich das Datum der Dateierzeugung eintragen lasse. Diese Daten sollen dann nach Anpassung der Typen in eine Datenbank geschrieben werden. (ohne die zusätzliche Spalte mit dem Erzeugungsdatum)

Bis hierhin ist es klar.

 

Jetzt möchte zusätzlich folgendes in den Workflow einbauen:

1. es soll eine zweite Datenbanktabelle ausgegeben werden, aber nur dann, wenn der Wochentag in der Spalte „Erzeugungsdatum“ ein Montag ist. 
2. in dieser zweiten Tabelle sollen zwei zusätzliche Spalten gefüllt werden:

  - die Nummer der vorherigen Kalenderwoche des Erzeugungsdatums.

  - das zur ausgegebenen Kalenderwochen zugehörige Jahr

3. Es soll eine dritte Datenbanktabelle ausgegeben werden, aber nur dann, wenn das „Erzeugungsdatum“ an einem Monats-Ersten war.

4. in dieser dritten Tabelle sollen zusätzlich zwei Spalten gefüllt werden:

  - die Nummer des vorherigen Monats

  - das zum ausgegebenen Monat gehörige Jahr

 

Beispiel: Erzeugungsdatum = 04.01.2021

dann soll laut Punkt 2 der Datenexport erfolgen, weil der 04.01.21 ein Montag ist.

Die beiden zusätzlichen Spalten sollen gefüllt sein mit Kalendewoche: 53 und Jahr: 2020

Die dritte Tabelle soll nicht ausgegeben werden, da das Erzeugungsdatum kein Monatserster ist.

 

Beispiel: Erzeugungsdatum = 01.01.2021 

Die zweite Tabelle soll nicht ausgegeben werden, da der 01.01.21 kein Montag ist.

Die dritte Tabelle soll ausgegeben werden, weil Monatserster.

Die beiden zusätzlichen Spalten sollen gefüllt sein mit Monat: 12 und Jahr: 2020

 

Sorry, das war jetzt viel Text, aber ich habe versucht, da das Problem möglichst genau zu beschreiben.

An dieser Stelle schon mal vorab: vielen Dank für die Unterstützung.

 

 

9 ANTWORTEN 9
grossal
15 - Aurora
15 - Aurora

Hi @akku,

 

ich habe da mal etwas gebastelt 🙂

 

grossal_0-1605645134149.png

Den vorderen Teil kannst du ignorieren, ich habe lediglich mal ein paar Beispiele-Zeilen generiert.

 

Nur Montage:

DateTimeFormat([Datum],'%A') == 'Monday'

 

Mit %A werden dir die Wochentagsnamen (auf englisch) zurückgegeben, dadurch kannst du einfach auf Montage filtern. Um das Jahr und die Wochennummer der vorherigen Woche zu bekommen, müssen wir erst einmal auf die vorherige Woche springen. Da wir nur noch Montage haben, müssen wir nur noch einen Tag zurück, dies können wir mit DateTimeAdd([Datum,-1,"days") erreichen. Der Rest ist dann nur noch Formatieren mit %W für die Wochennummer und %Y für das Jahr.

 

grossal_1-1605645341241.png

 

 

 

Nur Monatserste:

 

ToDate(DateTimeTrim([Datum],'firstofmonth')) == [Datum]

 

Mit der Funktion "DateTimeTrim([Datum],'firstofmonth') bekommen wir den ersten eines Monats zum angegebenen Datum - jedoch im DateTime-Format, daher müssen wir dies danach wieder mit 'ToDate()' in ein Datum ohne Zeit verwandeln. 

 

Danach haben wir das gleiche Spiel wie oben. Wir geben mit DateTimeAdd([Datum],-1,'days') in den vorherigen Monat und holen uns dann mit %m und %Y die gewünschten Informationen.

 

grossal_2-1605645520616.png

 

 

 

Ich hänge dir den ganzen Workflow auch nochmal zum besseren nachvollziehen an. Lass mich wissen ob ich es richtig verstanden habe und dir helfen konnte.

 

 

Viele Grüße

Alex

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

akku
Bolide

Hallo Alex,

 

das schaut schon mal richtig gut aus.

Bei dem Zweig für Monate klappt es auch wie erwartet und ich würde vermuten, dass es auch mit jedem Datum richtig berechnet wird.

Beim Zweig mit den Wochen wird allerdings bei Input 04.01.21 Woche „00“ errechnet. Es müsste aber Woche „53“ sein. Irgendwie kennt alteryx die ISO Woche nicht.

 

Noch die Frage, da ich noch keine Erfahrung mit Datenbanken habe:

Wenn durch den Filter keine Daten als Ergebnis errechnet werden, wird dann die Datenbank auch nicht geschrieben? Das heißt, ich kann jeweils nach dem Formeltool direkt das „output data“ einfügen?

 

Danke und Gruß

Matthias

grossal
15 - Aurora
15 - Aurora

Hi Matthias,

 

das Thema mit der ISO-Wochennummer kommt leider immer wieder auf und ist noch nicht behoben. Es gibt jede eine Idee die du mit einem "Like" versehen kannst, so dass Alteryx das Thema ggf. doch noch angeht.

 

https://community.alteryx.com/t5/Alteryx-Designer-Ideas/Use-the-ISO-week-date-system/idi-p/350966

 

Die Community hat mittlerweile aber auch einen Workaround, dieser ist zwar nicht schön, aber soll wohl alles abdecken:

 

ToNumber(PadLeft(ToString(FLOOR(DateTimeDiff(DateTimeAdd([Date],4-Switch(DateTimeFormat([Date],"%a"),7,"Mon",1,"Tue",2,"Wed",3,"Thu",4,"Fri",5,"Sat",6),"days"),DateTimeParse(ToString(ToNumber(DateTimeFormat(DateTimeAdd([Date],4-Switch(DateTimeFormat([Date],"%a"),7,"Mon",1,"Tue",2,"Wed",3,"Thu",4,"Fri",5,"Sat",6),"days"),"%Y")))+'-01-01',"%Y-%m-%d"),"days")/7)+1),2,"0"))

 

Am besten vor dem Einfügen erstmal kurz im Notepad drüber gehen und alle [Date] gegen [Datum] austauschen lassen, dann sollte es klappen.

 

Wenn du keine Zeilen hast, dürfte auch nichts in die Datenbank geschrieben werden, daher kannst du nach die Formel auch das Output-Tool anfügen.

 

 

Viele Grüße

Alex 

akku
Bolide

Hallo Alex,

 

vielen Dank für die Hilfe zu später Stunde.

 

Ich habe die Formel nun mal in einem neuen Workflow verwendet und bekomme den Fehler:

The field "" is not vontained in the record. (Expression #1)

 

Das muss ich mir aber morgen nochmal genauer ansehen, vielleicht finde ich ja die Ursache. Und dann muss ich auch schauen, wo genau in meinem workflow ich das dann einfügen muss.

akku
Bolide

oh Mann, es ist schon spät.

Ich hatte vergessen, eine neu Spalte anzugeben in der Formel...

 

grossal
15 - Aurora
15 - Aurora

Das kenne ich nur zu gut. Meist ist das ein gutes Zeichen für eine Pause oder bei der Uhrzeit auch mal für den Feierabend 😉

 

Magst du einen meiner Posts als Lösung markieren oder gibt es noch offene Punkte?

 

 

 

StephV
Alteryx Alumni (Retired)

Hallo @akku

 

vielen Dank für Ihre Frage! War diese Antwort von @grossal für Sie hilfreich? Wenn Ihnen die Antwort geholfen hat, können Sie diese als „Lösung akzeptieren“. Sie wird sicherlich auch anderen Benutzern helfen!

 

Danke und einen schönen Tag,

Steph Vitale-Havreng
grossal
15 - Aurora
15 - Aurora

Hi @akku,

 

ich glaube du hast dich hier verklickt und ausversehen die Erinnerung von Steph als Lösung markiert 😀

 

Grüße

Alex

StephV
Alteryx Alumni (Retired)

Hallo @akku,

 

es freut mich zu sehen, dass die deutsche Community Ihnen helfen konnte.

 

Vielen Dank, dass Sie die Antwort von @grossal als Lösung akzeptiert haben.

 

Einen schönen Tag,

Steph Vitale-Havreng
Beschriftungen