Uživatelské nástroje

Nástroje pro tento web


lmexplore:columnderived

Toto je starší verze dokumentu!


Výpočet odvozených hodnot

Odvozené hodnoty jsou počítány z hodnot již dostupných v analyzovaných datech, ale nabízejí jiný, trochu odlišný pohled na data.

Přístupné jsou jako dodatečně přidané (odvozené) sloupce (angl. derived columns) do původní databázové tabulky. Objevují se tak v seznamu sloupců na záložce databázové tabulky, kde můžeme přidávat i další odvozené sloupce.

Typy odvozených hodnot

Typickou odvozenou hodnotou je den v týdnu vypočtený z datumu. Zároveň je možné z datumu vypočítat i pořadový den v roce, pořadí týdne v roce, čtvrtletí nebo i pořadový den na základě minimální hodnoty v daném sloupci.

Samotné datum a čas jsou složené datové typy, které se skládají z dílčích hodnot – rok, měsíc a den pro datum a hodina, minuta, sekunda pro čas. S každou z těchto dílčích hodnot můžeme pracovat samostatně jako s odvozenou hodnotou.

Výše zmíněné odvozené hodnoty vytvoří LISp-Miner automaticky.

Častým případem odvozených hodnot je výpočet jednotkových cen z cen celkových. Dalším příkladem může být věk vypočtený z datumu narození nebo BMI (body-mass index) používaný v lékařském prostředí a zohledňující jak hmotnost, tak výšku pacienta.

Jde o odvozené hodnoty vypočtené z jiných sloupců, ale vždy pouze z hodnot v jednom řádku databázové tabulky. Více viz Hodnoty vypočtené výrazem.

Za odvozené hodnoty je možné považovat i různé agregované údaje. Ty můžeme vypočítat jak ze samotné databázové tabulky, nad kterou provádíme analýzu, tak i z dalších (nějakým způsobem provázaných) databázových tabulek. Příklad první agregované hodnoty může být pro každého hosta výpočet počtu dalších hostů, kteří ve stejný den přijeli ze stejného města. Příkladem druhého způsobu výpočtu může být zjištění vzdálenosti k nejbližší policejní stanici pro každý ze spáchaný zločinů na základě souřadnic místa zločinu v hlavní tabulce a souřadnic policejních stanic v tabulce druhé. Více viz Hodnoty vypočtené vnořeným SQL dotazem.

Dalším typem odvozených sloupců jsou sloupce vzniklé jako výsledek analýzy hlavní komponent.

Konečně je možné vytvářet odvozené sloupce nad nalezenými vztahy.

Hodnoty vypočtené výrazem

Odvozený sloupec vypočtený výrazem přidáme tlačítkem Add expr..

Nejprve je třeba zadat výstižný název nově přidávaného sloupce – ten musí být unikátní v rámci databázové tabulky. Následně zadáváme přesný matematický výraz, podle kterého mají být hodnoty ve sloupci spočítány. Konečně je třeba zvolit vhodný datový typ.

Po stisku tlačítka Ok se objeví záložka s detaily o databázovém sloupci. Oproti sloupcům existujících přímo v databázi obsahuje tento i zadaný výraz, kterým jsou hodnoty v odvozeném sloupci vypočteny. Tento výraz je možné upravovat po stisku tlačítka Edit. Funkčnost záložky i další zacházení s odvozenými sloupci je však zcela shodné jako v případě původních databázových sloupců.

V seznamu sloupců databázové tabulky bude odvozený sloupec označen type Expr. (od Expression).

Zadávání matematického výrazu

Při zápisu matematického výrazu pro výpočet odvozeného sloupce se budou nabízet názvy existujících sloupců. Použitelný sloupec můžeme vyhledat i ze seznamu rozbalovací nabídky. Při zápisu výrazu je nutné dodržet syntaxi databázového prostředí, ve kterém jsou uložena analyzovaná data (tj. syntaxi VBA) pro MS Access, SQL/PL pro Oracle atp.). Dojde-li při výpočtu odvozené hodnoty k chybě (chybná syntaxe výrazu, dělení nulou apod.), bude sloupec označen jako nevalidní.

Pozor! Při výpočtu nelze používat jiné, dříve vytvořené odvozené sloupce. Výraz není vyhodnocován LISp-Miner, ale prostředy databázového prostředí, ve kterém jsou uložena analyzovaná data. Proto se ve výrazu mohou objevit pouze sloupce, které existují v databázové tabulce.

Volba datového typu

Vhodný datový typ je třeba zvolit s ohledem na datový typ hodnot, ze kterých je odvozená hodnota počítána, a podle použitých matematických operací. V zásadě platí, že z textových hodnot může vzniknout pouze hodnota datového typu text. Datový typ celé číslo volíme pouze u výpočtu z celočíselných hodnot, ve kterém není použito dělení. V ostatních případech je nutné zvolit datový typ desetinné číslo.

Příklady hodnot vypočtených výrazem

Výraz pro výpočet odvozených hodnot může být i složitější a používat interní funkce databázového prostředí (zde pro VisualBasic for Applications použitý v MS Accessu). Tak je například možné z třetí číslice rodného čísla rozpoznat, zda se jedná o ženu (číslice bude 5 nebo 6), nebo o muže:

  • výraz: CInt( Mid( RC, 3, 1)) In (5, 6) datový typ: boolean

nebo věk v letech:

  • výraz: Year( Now())- (CInt( Left(RC, 2))+ 1900)) datový typ: celé číslo

Poznámka: Pozorný čtenář si jistě všimne nebezpečí, které při použití výše uvedeného vztahu pro výpočet věku v letech hrozí, pokud v databázi budou osoby narozené v roce 2000 a později).

Další příklady výpočtu odvozených hodnot:

Hodnota Výraz Datový typ
Cena celkem PCenaUbytovani+PCenaStrava-PCenaSleva desetinné číslo
Cena celkem v eurech PCenaCelkem / SEUR desetinné číslo
Cena za noc PCenaCelkem / PNoci desetinné číslo
Cena za osobu a noc PCenaCelkem / (POsob * PNoci) desetinné číslo
Turnus (PPobytOd.DayOfWeek = 6) & (PNoci % 7 = 0) boolean
Přes sobotní noc ((PPobytOd.DayOfWeek % 7)+ PNoci) > 6 boolean
Věk Now()-RokNarozeni celé číslo
BMI Vaha / ((Vyska/100) * (Vyska/100)), resp. po úpravě Vaha / (Vyska × Vyska / 10000) desetinné číslo
Vzdálenost bydliště od hotelu sqr((BydlisteX-HotelX)*(BydlisteX-HotelX)+(BydlisteY-HotelY)*(BydlisteY-HotelY)) desetinné číslo

Poznámka: Zcela správně bychom při zápisu výrazu měli používat plně kvalifikované názvy (např. Hotel.PCenaCelkem, Hotel.PNoci). Syntaxe SQL příkazu SELECT (který se interně pro výpočet hodnot používá) však umožňuje zkrácený zápis v případě, že nehrozí nejednoznačnost v tom, ve které tabulce se použitý sloupec nachází.


Související témata:

Záložka s detaily o tabulce
Zobrazení hodnot v tabulce

Praktická ukázka: Demo Hotel: Výpočet odvozených hodnot

lmexplore/columnderived.1451848946.txt.gz · Poslední úprava: 2016/01/03 20:22 autor: msi