Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
GK1
Contributor II
Contributor II

IF THEN ELSE

Guten Tag,

ich habe ein Problem im Qlikview Script.

Ich lade mir aus einer Datenquelle ein Feld Anzahl, in dem Feld befinden sich Zeiten.
Ich möchte prüfen ob die Zeiten gleich oder kleiner 8 Stunden sind, wenn ja soll der Wert als Arbeit_Normal ausgegeben werden. Wenn der Wert größer als 8 Stunden ist, soll die Zeit minus 8 Stunden als Arbeit_Zuschläge ausgegeben werden.

Anzahl                                                        AS Arbeit,
if(Anzahl >= '8', Anzahl - '8')              AS Arbeit_Zuschläge,
if(Anzahl <= '8', Anzahl)                       As Arbeit_Normal

Mit der oben gezeigten Lösung wird mir bei Arbeit und Arbeit_Normal der gleiche Wert ausgegeben. Bei Arbeit_Zuschläge bekomme ich nur eine Null ausgegeben.

Denke ich mache nur einen kleinen Fehler, hoffe ihr könnt mir helfen.

Gerd

19 Replies
GK1
Contributor II
Contributor II
Author

Es handelt sich hier um monatliche Downloads aus unserem SAP System heraus.
Die ich dann in Qlikview zusammenfahre für die weitere Verwendung.
[O:\20_Berichtswesen\20_12_Istarbeit\20_12_01_Zeiten\20*_V1_Zeiten.xlsx]
(ooxml, embedded labels, table is Istarbeit);
gf
Creator III
Creator III

Hallo,

Ich habe für dich ein kleines Test Programm zusammen gebastelt, vielleicht kannst etwas für dein Beispiel anwenden.

mfg

 

GK1
Contributor II
Contributor II
Author

Super das hat mir weitergehlofen, die Berechnung findet jetzt korrekt statt.
Ich bekomme nur einen $Syn Fehler angezeigt.
Muss ich diesen auflösen, oder kann ich den Fehler einfach ignorieren?

Daten << Istarbeit 2.585 Lines fetched
Daten2 << Daten 807 Lines fetched
$Syn 1 = Personalnummer+Datum
gf
Creator III
Creator III

$Syn1 steht für einen synthetischen Key, also bedeutet nicht, dass es sich hierbei um einen Fehler handelt. Kurz gesagt, kannst du ignorieren.
Sollte es dich jedoch interessieren, dann könntest du dich hier etwas einlesen.
https://help.qlik.com/de-DE/qlikview/November2018/Subsystems/Client/Content/QV_QlikView/Scripting/sy...

https://community.qlik.com/t5/New-to-QlikView/What-is-synthetic-keys-How-it-can-be-avoided/td-p/2818...

lg und viel Erfolg weiterhin!
gf
Creator III
Creator III

Noch eine kurze Anmerkung. Solltest du so vorgegangen sein wie in meinem Beispiel, vergiss nicht den Table OriginalData zu droppen. So vermeidest du auf synthetische Keys und benötigt weniger Speicher.

test3drop.PNG

GK1
Contributor II
Contributor II
Author

ok, das mit Drop Table hat auch gut funktioniert.
Ich bin nur noch auf ein weiteres Thema gestoßen.
Wenn ich mir die Daten pro Tag anzeige im Layout passt alles super.
Wenn ich aber eine Summierung je Monat im Layout mit anzeigen lassen möchte, passt die Berechnung nicht mehr.
Kann ich das direkt im Script abfangen, oder muss ich das im Layout machen.
Hast du Erfahrung wo und wie ich das am besten machen kann?
gf
Creator III
Creator III

Könntest du diese Problem bitte etwas näher erläutern? Ein paar Screenshots wären sehr hilfreich.
Oder deine Expression Formeln. Arbeitest du mit Pivot Table?

mfg
GK1
Contributor II
Contributor II
Author

Im Script habe ich aus dem Datum noch einer weitere Dimension aufgebaut IstarbeitPeriode (JJJJ/MM).
Diese wollte ich verwenden um die Daten nicht Tagesweise sondern Monatsweise darzustellen.
Im Screen 2 die Tabelle Tagesweise dargestellt, einfach mit den Dimensionen Personalnummer und Datum, dort bekomme ich alles korrekt angezeigt.

Im Screen 5 habe ich dann die Dimension Datum durch die IstarbeitPeriode ausgetauscht. Danach werden die Werte nicht mehr korrekt dargestellt.

Wie kann ich mir die Werte im Layout korrekt nach Monate darstellen lassen?

Hätte ich die Logik die ich im Script eingebaut habe auch einfach im Layout in einem Diagramm einbauen gekonnt?

sum(Anzahl) AS Arbeit,
if(sum(Anzahl) >= '8', Sum(Anzahl) - '8') AS Arbeit_Zuschläge,
if(sum(Anzahl) <= '8', sum(Anzahl), '8') AS Arbeit_Normal,

Viele Grüße

gf
Creator III
Creator III

Guten Morgen,
Entschuldige bitte die späte Rückmeldung.
Versuch es bei deinen Formel mit SUM(Arbeit), SUM(Arbeit_Normal) und SUM(Arbeit_Zuschläge).
Dann sollte es funktionieren.

lg
GK1
Contributor II
Contributor II
Author

Hallo,

ich möchte mich nochmals für deine Unterstützung bedanken.
Jetzt hat alles funktioniert wie es sollte.

Viele Grüße