Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hallo zusammen,
ich hoffe, Sie können mir einige Tipps für mein aktuelles Anliegen geben:
In unserer Datenbank existiert eine umfangreiche Tabelle mit Reklamationen, jede davon verfügt über eine eindeutige Reklamationsnummer. Jede Reklamation ist zudem durch separate Spalten für das Anlegedatum und das Abschlussdatum gekennzeichnet (Angelegt am und Beendet am). Die Historie der Reklamationen zeigt, dass einige im laufenden Monat abgeschlossen wurden, während andere erst in den folgenden Monaten oder sogar erst nach zwei oder mehr Monaten ihre Bearbeitung abgeschlossen haben. Ferner gibt es auch Reklamationen, die bis heute noch offen sind (weitere Informationen finden Sie im beigefügten Anhang).
Meine Aufgabe bzw. mein Ziel besteht darin, in der Qlik-App eine Tabelle und ein Diagramm zu erstellen, welche die offenen Reklamationen für jeden Monat von 2018 bis heute anzeigen. Dabei soll die relative Anzahl der Reklamationen dargestellt werden, wie im Anhang visualisiert. Ein Beispiel für das gewünschte Ergebnis entnehmen Sie bitte ebenfalls dem Anhang.
Über Ihre Unterstützung freue ich mich sehr und stehe für weitere Rückfragen gerne zur Verfügung.
------------------------ EN-----------------------
Hello everyone,
I hope you can provide me with some tips for my current issue:
In our database, there is an extensive table of complaints, each with a unique complaint number. Each complaint is also characterized by separate columns for the creation date and the completion date (Created on and Completed on). The history of complaints reveals that some were concluded in the current month, while others were completed in the following months or even after two or more months. Additionally, there are complaints that remain open until today (further information can be found in the attached appendix).
My task or goal is to create a table and a chart in the Qlik app displaying the open complaints for each month from 2018 until today. The relative number of complaints should be represented, as visualized in the attachment. Please refer to the attachment for an example of the desired outcome.
I am looking forward to your support and am available for any further questions.
Best regards
Um Von-Bis-Datenbereiche in Cluster (hier Datumswerte mit Monat + Jahr als Cluster - gilt aber prinzipiell für all numerischen Bereiche) abzubilden, ist es erforderlich, die Datenbereiche auf die jeweils erforderliche Granularität in dedizierte Einzelwerte aufzulösen. Bedeutet im ersten Schritt immer, über eine Schleifen-Logik entsprechende Datensätze zu erstellen. Dies könnte direkt in der Ausgangstabelle gemacht werden oder in einer zusätzlichen assoziierten Tabelle und/oder auch mit Zwischen-Schritten und zurück-joinen.
Klingt komplizierter als es ist - hier ist die Grund-Logik sehr anschaulich erklärt: IntervalMatch - Qlik Community - 1464547. Bei den noch offenen Reklamationen sollte übrigens ein End-Wert, wie today() oder monthend/yearend(today()) gesetzt werden.
Hinsichtlich der gezeigten Beispiele sieht es danach aus, dass Gantt-Charts verwendet werden sollen. Hier mal als Start-Punkt: Recipe for a Gantt chart - Qlik Community - 1469842 - es gibt hier aber noch diverse weitere Umsetzungsbeispiele.
try something like this:
FOR i = vL.MinDate TO vL.MaxDate
statisticsTable:
LOAD
$(i) as your_master_date
Count(Distinct If(len(CloseDate) = 0 and If(Month(CreateDate) = Month(Today()) and Year(CreateDate) = Year(Today()),1,0)) AND isComplaint=1 , ComplaintID)) as statisticsTable.OpenWithinOneMonth
, Count(Distinct If(len(CloseDate) = 0 and If(Month(CreateDate) < Month(Today()) and Year(CreateDate) <= Year(Today()),1,0)) AND isComplaint=1 , ComplaintID)) as statisticsTable.OpenMoreThanOneMonth
, Department as statisticsTable.Department
Resident Complaints
Group by Department;
NEXT
then you can connect dates to month from your master calendar
Thank you for the intriguing suggestion!
However, I have a question. Is "isComplaint" a flag? Where does it come from?
Thank you very much for the great idea! I will research it and try to implement it.
yes, it's just an example for a flag or you can put any other condition.
Hallo Markus,
mit IntervalMatch habe ich es gemacht, wie das Prozess in IntervalMatch – Qlik Community – 1464547 beschrieben ist. Und kommt etwas in Frage.
Jetzt zählt Qlik erste zwei Zahlen richtig aber dann unrelevante Daten. Woran könnte es liegen?
Script:
REKL:
Load
REKLAMATION.REK_ANGELEGT_AM as REK_Datum,
REKLAMATION.REK_VORGANG_NR as REK_VORGANG_NR
resident REKLAMATION;
Intervals:
load
REKLAMATION.REK_ANGELEGT_AM as Intervals_REK_ANGELEGT_AM,
if(isNull(REKLAMATION.REK_BEENDET_AM), today(), REKLAMATION.REK_BEENDET_AM) as Intervals_REK_BEENDET_AM
Resident REKLAMATION;
BridgeTable:
IntervalMatch (temp_REK_Datum)
Load
Intervals_REK_ANGELEGT_AM,
Intervals_REK_BEENDET_AM
Resident Intervals;
Ergebnistabelle sehen Sie bitte im Anhang.
Was da jetzt nicht ganz passt, ist schwierig zu sagen, denn das Skript + Datenmodell ist nur teilweise sichtbar und das Dataset nicht bekannt. Auffällig ist jedenfalls, dass es den synthetischen Schlüssel in 3 Tabellen gibt und nicht in zwei Tabellen und die tmp-Tabelle wohl noch gelöscht werden müsste.
Insgesamt sind synthetische Schlüssel ein sehr kontroverses Thema, wobei ich sie als grundsätzlich invalide ansehe, auch wenn sie in spezifischen Szenarien durchaus funktionieren können, wie in dem Post von HIC beschrieben. Die kleinste Abweichung im Datenmodell und/oder Besonderheiten im Dataset können zu unerwarteten Ergebnissen führen.
Ich persönlich nutze nie einen Intervalmatch, da es mir zu kompliziert und unflexibel ist - ich verweise aber gern auf das Posting, da hier die Logik und Hintergründe der Bereichsauflösung schön erklärt werden und der Intervalmatch ein natives Load-Features ist, das prinzipiell schon funktioniert.
Für mich besser passend ist es, die entsprechende Bereichsauflösung mit einem internen while-loop zu lösen, wie:
t: load Key, date(VON + iterno() - 1) as Datum, iterno() as IterNo
from X while VON + iterno() - 1 <= BIS;
was in der Form u.a. dazu führt, dass die VON-BIS Informationen anschließend gar nicht als Felder vorliegen und sie sind ja auch für keinerlei Auswertungszwecke nützlich, maximal um sie als Begleit-Information irgendwo mit anzuzeigen. Vergleichsweise häufig behalte ich auch diese aufgelösten Tabellen nicht, sondern joine/mappe die relevante Zuordnung zur Fakten-Tabelle. Hier gibt es aber kein prinzipielles falsch/richtig, sondern es kommt darauf an, welche Informationen man wo benötigt.
Davon abgesehen, nutze mal kein Chart mit Formeln, um die Ergebnisse zu prüfen, sondern eine Tabellen-Box mit allen relevanten Feldern - und einer eineindeutigen ID. Sofern es keine solche ID gibt, kann man diese auch mit recno(), rowno() und/oder iterno() generieren. Hierüber kann man dann exakt tracken, welche Daten von woher kommen und ob es etwaige Duplikationen gibt und wie diese Daten zueinander assoziiert sind - also wie gewünscht miteinander matchen oder auch nicht und NULL ergeben.
Thank you very much for the explanation and idea.