Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hallo,
ich habe in einer Pivottabelle mehrere Formeln berechnet. Eine dieser Formeln ist nur ein Zwischenschritt, der nicht angezeigt werden soll. Andere Formeln beziehen sich aber auf die nicht anzuzeigende Formel. Ist so etwas möglich?
Wenn ich den Haken bei "Aktivieren" rausnehme, dann können die Folgeformeln nicht mehr auf die deaktivierte Formel zugreifen.Hintergrund: Die Zwischenformel ist sehr lang. Daher möchte ich Sie in den Folgeformeln nicht jedesmal wieder aufschreiben. Falls später Korrekturen nötig sind, müsste ich in vielen Formeln die Korrektur vornehmen.
Schöne Grüße
Simone
Hallo Simone,
hast du versucht, die Formel / Spalte durch eine Variable zu ersetzen? Also den Teil, der von den Folgeformeln wieder verwendet wird, als Variable in Variable Overview definieren und von den anderen Formeln aus benutzen.
Hallo swuehl,
ich habe es probiert. Aber es funktioniert gleube ich nicht. Wenn ich es richtig sehe, ist die Variable ein fester Wert. Meine Zwischenformel ist aber abhängig von den Selektionen in Listboxen:
sum({<Kennzahl={'Zugänge'}>} Plan_AJ) - if(GetSelectedCount(GEBIET)>1,' ', IF(GETSelectedCount(GEBIET)=1, sum({<Kennzahl={'Zugänge'}>} Prognosewert),if(GetSelectedCount(REGION)>1,' ', IF(GetSelectedCount(REGION)=1, sum({<Kennzahl={'Zugänge'}>} Prognosewert),sum({<Kennzahl={'Zugänge'}, GST={'999999'}>} Prognosewert)))))
Hallo Simone,
eine Variable hat nicht einen festen Wert (würde sie sonst Variable heissen )
Sie berücksichtigt auch die aktuellen Seletionen.
Es gibt aber wie für Variablen, die du im Script durch LET oder SET erzeugst, einen wichtigen Unterschied:
Einmal speichert die Variable nur den ausgewerteten Ausdruck, den du bei der Variablendefinition angegeben hast,
(bei Definition im Variablen Overview Editor wird dieser Wert aber immer upgedatet, wenn sich z.B: die Selektion ändert), einmal speichert die Variable nur den Text der Variablendefinition.
Siehe hierzu auch:
http://www.qlikfix.com/2011/06/08/not-all-variables-are-created-equal/
Ich nehme mal an, dass deine Zwischenformel nicht nur von Seletionen abhängt, sondern auch pro Dimensionswert ein unterschiedliches Ergebnis liefert.
Du kannst hier also nicht mit einer Variable arbeiten, die nur den bereits im globalen Kontext ausgewerteten Wert speichert, sondern du willst hier eigentlich den Text der Formel als Shortcut in anderen Formeln wiederverwenden richtig?
Also musst du wahrscheinlich in Variable Overview eine Variable vZwischenFormel anlegen (Definition ohne Gleichheitszeichen):
sum({<Kennzahl={'Zugänge'}>} Plan_AJ) - if(GetSelectedCount(GEBIET)>1,' ', IF(GETSelectedCount(GEBIET)=1, sum({<Kennzahl={'Zugänge'}>} Prognosewert),if(GetSelectedCount(REGION)>1,' ', IF(GetSelectedCount(REGION)=1, sum({<Kennzahl={'Zugänge'}>} Prognosewert),sum({<Kennzahl={'Zugänge'}, GST={'999999'}>} Prognosewert)))))
und dann kannst du in deinen anderen Formeln anstelle des Formeltexts
$(vZwischenFormel)
angeben. Dass sollte es etwas leichter zu lesen und zu pflegen machen.
Gruß,
Stefan
http://www.qlikfix.com/2011/06/08/not-all-variables-are-created-equal/
Thank you for sharing this swuehl. It will prove valuable in many cases!
Hallo swuehl,
ich habe mehrere Zeilen die so berechnet werden sollen. Reicht da eine Variable ? Also für jede Zeile neu gerechnet ?
Viele Grüsse
Mike Preuss
Hallo Mike,
Die Lösung hier von swuehl ist ein auslagern der Formel in eine Variable und ein Aufruf von $(vZwischenFormel) bewirkt das gleiche, als ob die Formel direkt in die Formelspalte geschrieben wäre und wird so auch über alle Zeilen gleich berechnet.
Vorteil hierbei ist, dass wenn man eine Formel mehrfach benötigt, diese nur einmal zu schreiben und zu pflegen hat. Wenn man dann auch noch mehrere vergleichsweise ähnliche Formeln hat, kann man mit Parametern in der Variable, den Nutzen noch deutlich steigern, siehe mal hier, was gemeint ist: Re: Simplify the code if possible.
Schöne Grüße
Marcus