Set Analysis Einführung – Operatoren Plus und Minus

Fangen wir mit den Operatoren + und – an:

Gehen wir von einen der ersten behandelten Ausdrücke aus:

sum({  $ < Jahr={2017} > } Umsatz) 

lieferte uns nur die Werte aus dem entsprechendem Jahr. Wenn Sie nun einen der Operatoren + oder – wählen fügen Sie das entsprechende Jahr der Auswahl immer hinzu oder entfernen es wieder.

sum({  $ < Jahr={2017} > } Umsatz) 

Wenn Sie das Jahr 2017 auswählen erhalten Sie für diesen Ausdruck 0, wenn alle Jahre ausgewählt sind ist das Jahr 2017 nicht enthalten. 

sum({  $ < Jahr+={2017} > } Umsatz) 

Hier Wiederrum spielt es keine Rolle ob 2017 ausgewählt ist oder nicht, es ist immer in der Summe des Umsatzes enthalten.

Sie wollen alle Kunden selektieren die mit A anfangen aber Arnold ausschließen:

sum({  $ < Kunde={„A*“} – {‚Arnold‘} > } Umsatz) 

Sie wollen alle Kunden selektieren die mit A anfangen und auch den Kunden Donald

sum({  $ < Kunde={„A*“} + {‚Donald‘} > } Umsatz) 

Set Analysis Einführung – Identifier

sum(Umsatz) 

zeigt den Umsatz abhängig von den Filtern an, Standard Verhalten.

Was ist Set Anlysis?

Mit Set Analysis können Sie der obigen Formel einen Filter mitgeben, so das dieser gesetzt ist,  ohne das man diesen an der Oberfläche selektiert.

Sie wollen z.B in einer Kennzahl eine feste Region anzeigen oder das aktuelle Jahr mit dem Vorjahr berechnen.

Wie ist Set Analysis aufgebaut?

wir gehen erneut von unserer Grundformel sum(Umsatz) aus. Um Set Analysis einzuleiten müssen Sie diese Grundformel wie folgt erweitern:
sum({  Identifier  } Umsatz).

Als Identifier haben Sie folgende Möglichkeiten:

1 = Filter ignorieren

sum({  1  } Umsatz)
Wenn Sie  1 als Identifier wählen ist, erhalten Sie unabhängig von den Filtern, immer den gesamten Umsatz über alle Werte. Sie erhalten das gleiche Ergebnis wenn Sie statt den Ausdruck {1} das Schlüsselwort ALL nutzen sum(ALL Umsatz).

$ = weitere Filter zulassen

sum({  $  } Umsatz)
Wenn Sie nur  $ als Identifier wählen ist die Erweiterung erst mal wirkungslos weil er das gleiche Ergebnis wie sum(Umsatz) liefert.

Filter (Modifier)

bleiben wir nun bei diesem Ausdruck sum({  $  } Umsatz)  um diesen Ausdruck nun sinnvoll zu gestalten müssen wir mindestens einen Filter mitgeben. Diese geschieht wie folgt
sum({  $ <Filter={Filterwert}>  } Umsatz).

weiterlesen

Alle Filter mit zwei Filterboxen

Formel für den ersten Filter: $Field

Formel für den zweiten Filter: =’$(=only($Field))‘

Formel für das Label: =only($Field)

Sie können sich im Script auch eine kleine Helfertabelle anlegen um nur bestimmte Dimensionen anzuzeigen:

Load * Inline [
MeineDimensionen
Dim1
Dim2
//usw
];

Die Formel würden dann so aussehen:

Formel für den ersten Filter: MeineDimensionen

Formel für den zweiten Filter: =’$(=only(MeineDimensionen))‘

Formel für das Label: =only(MeineDimensionen)

 

Excel Datein laden HowTo 1

BeispielTabelle.xls:

A B C
Item A Value 1 10
Item A Value 2 20
Item B Value 3 30
Item C Value 4 40

Problem

Sie wollen nur die Zeilen laden in denen in Spalte A „ItemA“ und „ItemC“ vorkommt.

Lösung

Nutzung eines Where Statements welches auch beim laden von Excel Dateien genutzt werden kann.

Load A,B,C From BeispielTabelle.xls 
Where A = 'ItemA' or A = 'ItemC';

Ergebnis

A B C
Item A Value 1 10
Item A Value 2 20
Item C Value 4 40

 

weiterlesen

Formelsammelung mit einer Excel Datei

Um eine Formelsammlung sinnvoll zu nutzen empfehle ich folgenden Weg:

Aufbau der Excel Datei:

Name Value Desc usedTable
sumLineSalesAmount sum(LineSalesAmount) Summe der Umsätze Facts
sumLineCosts sum(LineCostOfGoods) Summe der Kosten Facts
sumCataloguePrice sum(CataloguePrice) Summe der  Products

 

Die Formelsammlung würde ich zu einem gesamten Datenmodell erstellen, die letzte Spalte in der oberen Zeile kann dann genutzt werden um nur für die im Projekt benutzen Tabellen die Formeln zu generieren.
Sprich die letzte Zeile wird dann nicht geladen und dient nur der Einschränkung.

Zum Einschränken nutze ich in der Regel ein Where usedTable =’Facts‘ or  usedTable = ‚Products‘  etc.

Die restlichen Felder würde ich alle laden, so können Sie diese als Tabelle in QlikView angezeigt werden, so sind diese direkt auch Dokumentiert und für jeden Benutzer schnell einsehbar.

Um die Daten aus der geladen Tabelle zu generieren  benötigen Sie dann folgendes Script:

 

Variables: 
LOAD 
  Name, 
  Value,
  Desc
FROM
[$(Path)Expressions.xls]
(biff, embedded labels, table is Sheet1$);
; 
FOR i=0 TO NoOfRows('Variables') 
  LET vVar = Peek('Name', $(i), 'Variables'); 
  LET vVal = Peek('Value', $(i), 'Variables'); 
  LET '$(vVar)' = '$(vVal)'; 
NEXT

Dieses Script sollten Sie dann auslagern und immer wieder per include im Script einbinden, oder Sie nutzen den Weg über eine QVD.

siehe auch:

Variablen von einer Datei in die andere verschieben:

1. Projektordner erstellen:

create Prj Folder

Legen Sie dazu einfach einen Ordner an der wie Ihre Datei heißt und fügen Sie dem Namen „-prj“ an, siehe Beispiel:

2. Variablen auslesen und in eine qvd speichern:

VariableNames:
LOAD Name AS VariableName
FROM [MeineApplikation-prj\AllProperties.xml] 
(XmlSimple, Table is [AllProperties/VariableProperties/VariableProperties]);
FOR i=0 TO NoOfRows('VariableNames')
  LET varName = Peek('VariableName', $(i), 'VariableNames');
  LET varValue = $(varName);
  Variables:
  LOAD 
   '$(varName)' AS VariableName,
   '$(varValue)' AS VariableValue
  AutoGenerate 1;
  NEXT
STORE Variables INTO Variables.qvd (QVD);
DROP Tables VariableNames, Variables;

3. Variablen aus qvd auslesen

Variables: 
LOAD 
  VariableName, 
  VariableValue 
FROM Variables.qvd (qvd); 
FOR i=0 TO NoOfRows('Variables') 
  LET vVar = Peek('VariableName', $(i), 'Variables'); 
  LET vVal = Peek('VariableValue', $(i), 'Variables'); 
  LET '$(vVar)' = '$(vVal)'; 
NEXT

Wie QlikView das Script liest

QlikView liest das Load Skript innerhalb eines Registerblattes von Oben nach unten ein und die Registerblätter von links nach rechts.

Nachdem das Skript eingelesen wurde, wird dies allerdings nicht, in der exakten Lesereihenfolge ausgeführt. Innerhalb einzelner Blöcke wird hier das Script von unten nach oben verarbeitet.

Ein Block endet immer nach dem jeweiligen FROM oder RESIDENT Befehl.

Hier einige kleine Beispiele wie QlikView das Script abarbeitet:

  weiterlesen