Qlik Community

QlikView Scripting

Discussion Board for collaboration on QlikView Scripting.

datanibbler
Esteemed Contributor

Performance - COUNT(DISTINCT)_mit_zwei_Set_Ausdr. ersetzen


Hi,

in einem meiner Diagramme (die Anwesenheitsquote) muss ich relativ oft die Pers_Nrn zählen. Aktuell sieht das (sinngemäß) so aus

- Die Tabelle hat einen Datensatz pro MA pro Tag

- Ich zähle also die Pers_Nrn

     - da wo ein binäres Feld für Urlaub den Wert 0 hat

     - und ein zweites binäres Feld für Dienstfrei ebenfalls 0 ist

Diese Zahl kommt wie gesagt ziemlich häufig vor und ich hab so im Kopf, daß die Set_Analyse rel. ressourcenhungrig ist?`

=> Jetzt bin ich auf die idee gekommen, einfach im Skript durchzuzählen und die beiden Set_Ausdrücke einfach durch
      WHErE-Bedingungen nachzustellen, dann hätt ich ein fixes Feld zum Darstellen, das ja auf alle User-Selektionen reagiert.

<=> Damit komm ich nicht so ganz klar:

- Meine aktuell finale Tabelle (auf der also die Darstellung basiert) hat die Felder (u.a.)

     - Pers_Nr

     - Datum

     - Urlaub

     - dienstfrei

     - Werk

     - Ber_Ober

     - Ber_Unter

(das sind zum. die Felder, die für diese Sache relevant wären)

=> Kann mir da jemand mit der Syntax helfen? Ich bräuchte ja einen COUNT(DISTINCT) mit zwei WHERE-Klauseln - also brauch ich ein GROUP_BY. Das geht aber in dieser Tabelle nicht. Ich brauch also noch einen RESIDENT LOAD, oder? Die Pers_Nr muss ich da rauslassen, aber die drei Mapping-Felder (Werk, Ber_Ober, Ber_Unter) müssen rein, oder?

Danke vielmals!

Best regards,

DataNibbler

2 Replies
MVP
MVP

Re: Performance - COUNT(DISTINCT)_mit_zwei_Set_Ausdr. ersetzen

Vielleicht in etwa so:

LOAD

      count(DISTINCT Pers_Nr) as CountFeld,

     Datum,

     Werk,

     Ber_Ober,

     Ber_Unter    

RESIDENT YourTable WHERE Urlaub = 0 and dienstfrei = 0 GROUP BY Datum,Werk,Ber_Ober,Ber_Unter;

Eventuell besser einen Surrogate-Key aus Datum, Werk, Ber_Ober und Ber_Unter erzeugen, um mit der Originaltabelle zu linken.

datanibbler
Esteemed Contributor

Re: Performance - COUNT(DISTINCT)_mit_zwei_Set_Ausdr. ersetzen

Hi swuehl,

genau, so hatte ich es auch schon probiert - aber das hat noch nicht funktioniert: Die Originaltabelle brauch ich doch dann gar nicht mehr, oder? Wenn ich durch diesen RESIDENT LOAD schon eine neue erzeugt hab - dann kann ich die alte DROPpen und die neue einfach umbenennen, um wieder den gleichen Namen zu haben.

=> Jetzt scheint das sogar zu funktionieren. Was so eine halbe Stunde Pause manchmal ausmacht ... vorher hatte ich wohl irgendeinen Wurm drin.

Das wird das ganze schon etwas verschlanken, weil ich diesen COUNT_DISTINCT_mit_zwei_Setausdrücken vormals schon in der Quote je zweimal gebraucht hab, dann bei den historischen Werten 2x2mal und bei der Statusampel, die ich in jeder Darstellung drin hab, noch zweimal.

Danke vielmals!

Gruß,

DataNibbler

Community Browser