Uživatelské nástroje

Nástroje pro tento web


lmexplore:importtxt

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

lmexplore:importtxt [2017/03/07 14:49] (aktuální)
Řádek 1: Řádek 1:
 +====== Import dat z textového souboru ======
 +
 +Data k analýze jsou často získána jako textový soubor ve formátu CSV (zkratka z //​Comma-Separated Values//), případně v podobném s jiným oddělovačem sloupců, než je čárka. Proto byla do systému LISp-Miner implementována funkce importu textového souboru, která jeho obsah uloží do nově vytvořené databáze a zároveň k němu rovnou vytvoří i metabázi. Ze strany uživatele tak není třeba pracovat s žádným databázovým nástrojem a dvojice data+metabáze se vytvoří automaticky. V případě rozsáhlých dat však může být třeba zvážit ruční import dat – viz [[:​lmexplore:​import#​doporuceni_a_omezeni_podle_velikosti_dat|doporučení pro import dat]].
 +
 +Data v textovém souboru musí být uložena na řádcích (jeden objekt na jednom řádku) a jednotlivé hodnoty musí být odděleny jedním z povolených oddělovačů (čárka, středník, tabulátor nebo mezera). Podporovány jsou pouze textové soubory v //​jednobajtových//​ kódováních (např. ASCII, Windows-1250). Kódování UTF-8 a UTF-16 nejsou podporována.
 +
 +{{:​lmexplore:​importtxt.hotel.png?​300 |}} Import dat spustíme tlačítkem ''​New from TXT''​ v [[:​lmbase:​lmworkspace#​uvodni_dialogove_okno|úvodním dialogovém okně]] po spuštění modulu [[:​lmbase:​lmworkspace|LM Workspace]]. Objeví se standardní systémové okno pro otevření souboru (ve výchozím stavu omezené pouze na přípony ''​CSV''​ a ''​TXT''​),​ pomocí kterého nalezneme a otevřeme soubor s analyzovanými daty. Po jeho vybrání se objeví dialogové okno pro nastavení parametrů importu – viz obrázek.
 +
 +Nejprve zkontrolujeme,​ že byl správně rozpoznán oddělovač sloupců. Obvykle se stačí podívat na ukázku dat, jestli vidíme správně oddělené hodnoty ve sloupcích. V opačném případě zkusíme volbu jiného oddělovače sloupců v rámečku ''​Column separator''​.
 +
 +Po pečlivé kontrole [[#Názvy a datové typy sloupců|názvů a datových typů sloupců]] a případném [[#Omezení rozsahu dat|omezení rozsahu importovaných dat]] spustíme import stiskem tlačítka ''​IMPORT DATA''​. Data se importují do databáze formátu MS Access a název ''​MDB''​ souboru je odvozen od názvu importovaného textového souboru. Z názvu textového souboru je odvozen i název databázové tabulky, který je však možné změnit.
 +
 +**Pozor!** Používáme-li počítač s nastaveným anglickým jazykovým prostředím (a formátem datumu ve tvaru //​měsíc-den-rok//​),​ musíme pro správný import sloupců typu //​Datum/​Čas//​ zaškrtnout volbu ''​Store dates in MM-DD-YYYY format''​. ​
 +
 +**Poznámka:​** Nemáme-li českou instalaci Windows a načítáme-li data s českou diakritikou,​ zaškrtneme volbu ''​Convert to ASCII (remove Czech accents)'',​ aby se i v cizojazyčném prostředí zobrazovaly textové hodnoty v čitelné podobě.
 +
 +Po úspěšném importu je vytvořen databázový soubor ve formátu MS Access a uložen do stejné složky jako původní textový soubor, pod shodným názvem, ale s příponou ''​MDB''​. Tím jsem se dostali do stavu, ve kterém máme analyzovaná data v databázi ve formátu MS Access a stačí k nim jen nechat vytvořit ​ metabázi. Příslušné [[:​lmexplore:​newfrommdb|dialogové okno]] se automaticky objeví po zavření okna se zprávou o importu.
 +
 +Součástí výsledků importu je i zpráva o počtu úspěšně načtených řádků a případně i o chybách při importu (zejména z důvodu rozdílného datového typu hodnot a sloupce databázové tabulky, do kterého měly být naimportovány).
 +
 +===== Názvy a datové typy sloupců =====
 +
 +Funkce importu se snaží automaticky odhadnout strukturu textového souboru. Zejména se pokusí zjistit použitý znak oddělovače sloupců; zda první řádek v datech obsahuje titulek s názvy sloupců; a konečně odhadne i datové typy jednotlivých sloupců. V náhledu je zobrazena ukázka prvních několik záznamů, v pravém dolním rohu pak názvy sloupců a jejich datové typy. 
 +
 +** Pozor! ** Odhad datového typu nemusí být vždy přesný – již jen proto, že je proveden pouze na základě hodnot v několika prvních řádcích importovaného souboru. Před pokračováním v importu ** je třeba pečlivě všechna nastavení zkontrolovat**. Jakákoliv přehlédnutí – nevhodné názvy nebo použité datové typy – mohou v dalších fázích analýzy způsobit nemalé problémy a později se pouze velmi pracně opravují. Zejména je třeba dát pozor na:
 +
 +  * Nastavení vhodného datového typu číslo pro číselné hodnoty. Jejich chybné ponechání jako //Text// působí problémy při správném řazení hodnot. Jako //Text// mohou být číselné hodnoty nesprávně označeny například v případě, že prázdné hodnoty jsou zadány znakem //mezera// nebo //​N/​A//​. ​
 +
 +  * Některé hodnoty vypadající jako číslo může být naopak nutné označit záměrně jako //Text//. Jde o případy, kdy číslice na jednotlivých pozicích mají nějaký význam a na první pozici mohou být i číslice 0. Může jít například o hierarchický kódový popis první číslice udává zemi, druhá a třetí kraj, čtvrtá prodejnu atp. Ponecháním datového typu //Celé číslo// by se počáteční nuly odmazaly a význam číslic by se posunul.  ​
 +
 +  * Správné nastavení sloupců typu //​Desetinné číslo//. Odhad číselného typu se provádí pouze na základě několika prvních hodnot ve sloupci. Půjde-li pouze o celá čísla, bude se funkce importu domnívat, že v celém sloupci jsou pouze celá čísla a vybere typ //Celé číslo//. Mohou-li být ve sloupci i desetinná čísla, musíme typ změnit ručně. ​
 +
 +  * Správné nastavení [[#Formát datumu a času|formátu sloupců typu Datum/​Čas]]. ​
 +
 +  * Názvy sloupců i tabulky musí odpovídat [[#​Požadavky standardu SQL|požadavkům standardu SQL]].
 +
 +==== Formát datumu a času ====
 +
 +{{:​lmexplore:​importcolumnsettingsdlg.PPobytOd.png?​direct&​300 |}} Speciální pozornost je třeba věnovat správnému nastavení sloupců typu //​Datum/​Čas//​ (angl. //​Date/​Time//​). Po nastavení datového typu na ''​Date and time''​ je třeba vybrat i upřesňující formát v rámečku ''​Date/​Time format specification''​. Na výběr je několik formátů – pouze datumy (včetně volby pořadí měsíc–den),​ pouze časy, nebo oboje najednou. ​
 +
 +Poznámka: Uváděné formáty jsou na obrazovce uvedeny s oddělovacím znakem ‘.’ (tečka). V importovaném souboru však mohou být použity i znaky lomítko nebo čárka.
 +
 +==== Požadavky standardu SQL ====
 +
 +Mezi základní požadavky a doporučení standardu SQL (resp. rozhraní ODBC) pro pojmenování tabulek a sloupců patří:
 + 
 +  * název může obsahovat pouze pouze písmena '​A'​ až '​Z',​ číslice '​0'​ až '​9'​ a znak '​_'​ (podtržítko). Povolené tedy nejsou znaky s diakritikou,​ mezery a další speciální znaky
 +  * název avíc může začínat pouze písmenem
 +  * název není totožný s klíčových slovem jazyka SQL nebo jiným rezervovaným slovem (např. Table, Date, Hour, From...)
 +
 +==== Výpis nastavení sloupců ====
 +
 +Zadané parametry pro import sloupců si můžeme vyexportovat pro další použití (např. do popisu provedené analýzy) pomocí tlačítka ''​Export columns''​.
 +
 +V přehledu jsou názvy sloupců, použité datové typy (a případně i formáty) a informace, zda byl (či nebyl) sloupec zařazen do importu.
 +
 +===== Primární klíč =====
 +
 +Ve vytvářené databázové tabulce je třeba dále zajistit existenci //​primárního klíče//. Přestože v datech může existovat sloupec, jehož hodnoty jednoznačně identifikují záznamy, doporučujeme při importu ponechat zaškrtnutou volbu ''​Add primary key column (ID_LM)''​. Tím bude do výsledné tabulky přidán umělý primární klíč //ID_LM//, který bude následně i automaticky rozpoznán systémem LISp-Miner.
 +
 +===== Omezení rozsahu dat =====
 +
 +Před spuštěním importu velmi rozsáhlých dat může být vhodné omezit počet načítaných řádků – např. pro prvotní seznámení s daty. 
 +
 +Omezit lze jednak celkový počet načítaných řádků. V tom případě se načte pouze řádku až do zadaného limitu – buď od začátku textového souboru, nebo náhodně (je-li zaškrtnuta volba ''​Randomly selected rows''​). Zároveň lze omezit načítané řádky podle hodnot v jednom (nebo více) sloupcích. ​
 +
 +{{ :​lmexplore:​importcolumnsettingsdlg.HStat.ValueFiltr.png?​direct&​600 |}} 
 +
 +Otevřeme dialogové okno s detailní informaci o sloupci jeho výběrem v seznamu a následném stisknutí tlačítka ''​Detail''​. V rámečku ''​Import filter based on columns values''​ zvolíme, zda chceme kritérium zadávat pro záznamy, které se mají vkládat, nebo naopak pro záznamy, které se vkládat nemají. ​
 +
 +Následně zvolíme, zda se v rámci vyhodnocování kritéria má hodnota v daném sloupci //rovnat//, //​začínat//,​ //končit// danou hodnotou nebo mít daný řetězec znaků na libovolné pozici. Potom zadáme i samotnou hodnotu kritéria. ​
 +
 +Při zaškrtnutí volby ''​Multiple values separated by ´|´''​ můžeme zadat více různých hodnot kritéria oddělených pomocí znaku ´|´. Na obrázku vidíme zadání kritéria na sloupec **HStat**, ve kterém musí být pro zařazení do importu hodnota //ČR// nebo //​Slovensko//​.
 +
 +Nakonec ještě zkontrolujeme,​ že je zaškrtnuta volba ''​Column value filter''​ v rámečku ''​Import restriction''​ hlavním dialogovém okně importu dat z textového souboru. ​
 +===== Zobrazení statistického přehledu dat =====
 +
 +{{:​lmexplore:​importdatastatistics.png?​direct&​300 |}} Zejména u rozsáhlých dat a při nastavování omezení rozsahu importovaných záznamů je vhodné si před vlastním importem zobrazit přehled o počtu řádků, které budou načteny, a o sloupcích a počtu různých hodnot v nich, včetně počtu hodnot prázdných (//NULL//).
 +
 +Přehled vyvoláme tlačítkem ''​Data Statistics''​. Pomocí tlačítka ''​Export columns''​ lze vyexportovat aktuální nastavení seznamu sloupců, včetně jejich datového typu.
 +
 +-----
 +
 +**Související témata:**
 +
 +{{:​lmbase:​seealso.png?​nolink&​32|}} [[:​lmexplore:​import|Načtení dat]]\\
 +{{:​lmbase:​seealso.png?​nolink&​32|}} [[:​lmexplore:​import#​pripojeni_existujici_dvojice_data_metabaze|Připojení existující dvojice data+metabáze]]\\
 + 
 +{{:​lmdemo:​example.png?​nolink&​32|}} Praktická ukázka: [[:​lmdemo:​hotel2015:​import|Demo Hotel: Načtení dat]]
 +
  
lmexplore/importtxt.txt · Poslední úprava: 2017/03/07 14:49 (upraveno mimo DokuWiki)