Uživatelské nástroje

Nástroje pro tento web


mrm:ui:rmcharib:columnderived

Výpočet odvozených hodnot

U některých sloupců nemůže docházet k náhodným změnám hodnot, ale tyto musí být stále nějakým způsobem odvozeny z hodnot jiných sloupců.

Výraz je možné zadat pro sloupce typu číslo (celé i desetinné), boolean (0 nebo 1), datum a text. Stejně tak mohou být ve výrazu sloupce těchto typů. Vyhodnocení probíhá podle priority operátorů a uzávorkování. Logické operátory mají nejnižší prioritu a jejich výsledkem je hodnota 1 (true) nebo 0 (false). Výpočty se provádí v oboru desetinných čísel. Pro sloupce typu Celé číslo se na konci výpočtu hodnota zaokrouhlí.

Hodnoty ze sloupců typu Datum jsou automaticky převáděny na celé číslo tak, že se zjistí počet dní mezi tímto datem a referenčním datem 1. 1. 2000. Pro sloupce typu Datum je vypočtená hodnota automaticky převedena na datum, které je od referenčního data daný počet dní. Hodnoty ze sloupců typu Boolean jsou automaticky převáděny na 1 (true) a 0 (false).

Hodnoty typu Text jsou automaticky převáděny na celé číslo tak, že se zjistí index dané hodnoty v seznamu povolených hodnot (v rozmezí 1 až počet záznamů v seznamu). Obdobně je sloupec typu Text vypočtená hodnota automaticky převedena text zjištěním hodnoty na daném místě v seznamu povolených hodnot.

U číselných sloupců se neprovádí kontrola výsledné hodnoty na příslušnost do rozpětí hodnot nebo existenci v seznamu povolených hodnot (výčet).

Na případné syntaktické chyby upozorňuje už dialogové okno pro zadání výrazu. Dojde-li však přesto později k chybně při výpočtu (např. odstranění použitého sloupce nebo dělení nulou), je do dat vložena hodnota o jedna nižší, než minimální hodnota z povoleného rozpětí zadaného pro atribut.

Zadání matematického výrazu

Pomocí matematického výrazu zadaného do pole Formula je možné vypočítat hodnotu do sloupce pomocí základních aritmetických operátorů plus ‘+’, mínus ‘-’, krát ‘*’, děleno ‘/’ a modulo ‘%’ a dále operátorů porovnání ‘>’, ‘<’ a ‘=’ a logických operátorů ‘&’ (konjunkce), ‘|’ (disjunkce). Ve výrazu mohou být dále použity závorky.

Odkazy na hodnoty v jiných sloupcích

Na hodnoty v jiných sloupcí se odkazujeme názvem sloupce. Při psaní názvů sloupců se nerozlišují velká a malá písmena. Je-li odkazovaný sloupec také počítaný, musí být v seznamu sloupců na záložce Columns uveden před tímto sloupcem. V případě sloupců typu Datum je dále možné přistupovat i k odvozeným hodnotám Year, Month, Day, DayOfWeek (pondělí = 0), DayOfYear, WeekOfYear a Quarter s použím tečky – například BirthDate.DayOfWeek.

Odkaz na hodnotu vyhledanou v jiné tabulce

V matematické výrazu můžeme použít i hodnotu vyhledanou v jiné tabulce. Na daném místě použijeme speciální parametr @lookup.

Náhodné číslo

Konečně může být použity i speciální funkce lm.rnd() a lm.rowrnd() vracející náhodné číslodle uniformního rozdělení a v intervalu ‹0;1›. Je-li v závorkách celé číslo – např. lm.rowrnd(10), funkce vrátí náhodné číslo jako celé číslo od 0 do dané horní meze (v tomto případě 10).

Funkce lm.rnd() vrací vždy zcela náhodné číslo. Funkce lm.rowrnd() vrací náhodné číslo vázané na daný řádek. To znamená, že pro daný řádek bude výsledek výpočtu stále stejné. To je obvykle žádoucí stav, aby se „náhodně“ vypočtená data představovaná jedince neustále neměnila.

Příklady matematických výrazů

Příklady validních výrazů jsou:

Název sloupce Datový typ Výraz
BMI Float Vaha / (Vyska* Vyska / 10000)
DatumSplatnosti Datum DatumVystaveni+ 14
TrvaniPujcky Integer DatumSplaceni- DatumPoskytnuti
SobotniNoc ano/ne ((HPobytOd.DayOfWeek % 7)+ PNoci) > 6
Rychlost Float 9,81*cas+ (lm.rowrnd()- 0,5)
DUbytovani Float @lookup- (lm.rowrnd(19))
mrm/ui/rmcharib/columnderived.txt · Poslední úprava: 2015/12/20 17:28 (upraveno mimo DokuWiki)