Funktionen

math. Funktionen

diff_p(neuer wert,referenzwert)

berechnet die prozentuelle Differenz von zwei Werten, bezogen auf den zweiten wert und runde gemäss der ->round()-Funktion.

Die Funktion gibt also aus um wieviel prozent der erste wert grösser/kleiner ist als der zweite wert, wobei der zweite wert 100% entspricht.

diff_p(neuer wert, referenzwert)
diff_p(x1,x2):=100*(x1/x2-1)
diff_p(100,100) = 0%
diff_p(100,50) = 100%   
diff_p(50,100) = -50%
diff_p(100,0) = nicht definiert, weil unendlich !!

p(gesamtheit, wert)

berechnet die prozentuelle Grösse von x2 in Bezug auf x1

p(10,4)  .. 40
p(100,4) .. 4
p(100,100) ... 100
p(100,200) ... 200
p(8,4) ... 50
p(4,8) ... 200

round(x)

runde den wert x auf zwei Kommastellen

tp(x)

ersetze den punkt durch ein teutsches komma und füge tausendertrennpunkte ein. Dies geschieht in Tabellenzellen, wo nicht die -no_number-option verwendet wird, ohnehin automatisch.

wenn .. dann .. sonst

für sonderfälle gibt es ein wenn-dann-konstrukt.

bedingung?dann:sonst

folgendes beispiel liefert die prozentuelle differenz von zwei werten, falls die variable $p definiert ist (zB auf den wert 1 gesetzt) und die absolute differenz, falls die variable $p nicht definiet wurde oder auf 0 gesetzt wurde.

  -val=>'$p?diff_p($v1,$v2):$v1-$v2'

folgende formel liefert als ergebnis 1, wenn $j 2006 ist und 2 sonst

  -val=>'$j==2006?1:2'

weitere Beispiele:

“Wenn sz=1 und jahr=2006, dann “*”, sonst....”. (das selbe funktioniert mit der logischen verknüpfung “or”):

'($sz==1 and $j==2006)?"*":n($j,$id_ref,76)'

“Wenn im Feld Null steht, dann “*”, sonst den inhalt des Feldes ausgeben”:

'(n($j,$id_ref,115)==0)?"*":n($j,$id_ref,115)'

Stringfunktionen

String ist ein Text.

Aneinanderhängen von Strings

durch den Punkt .

  1. name=>’“haus”.”esel”’
  2. name=>’$j*1000.’ Jahrtausend’
  3. name=>’(((($x-4)*$y)*$z)+3).” %”.” (relativ)”’

Wertefunktionen

n(jahr,id_ref,field)

liefert einen Wert aus der VÖV-Statistikdatenbank

n(2006,10382,250)

Zum Eruieren eines Namens bitte die Funktion -> name verwenden !!

k(berichtsnummer,id_ref,field)

liefert einen Wert aus der Kebödatenbank

k(19,10382,78)

ks(berichtsnummer,field)

liefert eine Summe von Werten aus der Kebödatenbank über eine berichtsnummer

ks(23,161)

es werden alle werte des feldes k161 im berichtsjahr 23 aufsummiert und zurückgegeben

name(jahr,id_ref)

liefert den namen einer einrichtung aus der statistikdatenbank !!

x(jahr,name)

liefert einen wert aus der mikrozensusdatenbank.

x(2006,"Ww")
x($j,$n)

aj(jahr)

liefert das arbeitsjahr zu einem statistikjahr

aj(2006)=2004/05
aj(1970)=1968/69

sollten hier für einige jahr andere zusammenhänge zwischen arbeitsjahr und statistikjahr existieren, kann ich diese in dieser Funktion auf Wunsch berücksichtigen.

ajs(jahr)

liefert die kurzversion für das arbeitsjahr zu einem statistikjahr

aj(2006)=04/05
aj(1970)=68/69

sonst siehe funktion -> aj(jahr)

mehrere elemente in einer zelle (siehe auch string-funktionen)

werden folgendermaßen gebildet:

-val=>’k(....).” / “.k(....).” / “.(7+4)’

der punkt ist das element, das die einzelnen terme trennt, der schrägstrich ist als zusätzliches element in anführungsstrichen eingefügt. damit können auch zahlen in klammern angezeigt werden.

interne funktionen

rowsum()

liefert die Summe aller bisherigen Werte in der aktuellen Zeile. Werte, die keine Zahlen enthalten oder nicht definiert sind, werden nicht gezählt.

Die Verwendung dieser Funktion macht in der Regel nur in der letzten Spalte Sinn, da erst dann die endgültige Summe bestimmt ist.

Diese Funktion kann auch in Diagrammen verwendet werden, wo sie die Summe der bisherigen Werte für einen Punkt auf der axe ausgibt. Wenn man zB 4 graphen zeichnen ( also 4 elemente in -values) und einen fünften Graph zeichnen will, der sie Summe der 4 Graphen darstellt, kann man ein fünftes Element in -values erstellen mit -val=>’rowsum()’.

rowsum()

colsum()

liefert die Summe aller bisherigen Werte in der aktuellen Spalte. Werte, die keine Zahlen enthalten oder nicht definiert sind, werden nicht gezählt.

Die Verwendung dieser Funktion macht in der Regel nur in der letzten Zeile Sinn, da erst dann die endgültige Summe bestimmt ist.

colsum()

tv(zeile,spalte)

tv (tablevalue) liefert den Zahlenwert der Zelle in der bestimmten Zeile und Spalte. Evtl.Textelemente oder %-zeichen werden ignoriert.

Achtung:

Man kann nicht in einer Formel in der 2. Zeile auf ein Element in der 4. Zeile zugreifen, weil das dann noch nicht berechnet ist. Ebensowenig kann man in der 2.Spalte auf ein Element in der 4.Spalte zugreifen, weil das zu diesem Zeitpunkt auch noch nicht berechnet ist.
Man kann allerdings in der 4.Zeile, 1.Spalte auf ein Element in der 2.Zeile, 4.Spalte zugreifen.

In der Praxis wird das kaum relevant sein, da Summen und Verweise sinngemäss immer in der letzten Spalte oder letzten Zeile stehen.

tv(1,3)  .. liefert den Wert der Zelle in der ersten Zeile und dritten Spalte.
 
kb/statistikengine/funktionen.txt · Last modified: 2010/07/21 08:34 by kb