Lekce 5 - Datové formáty XML a SQL Nové
V minulé lekci, Datové formáty CSV a JSON, jsme se věnovali nejrozšířenějším formátům pro datovou analýzu - CSV a JSON.
V dnešním tutoriálu datové analýzy budeme pokračovat popisem nejčastějších formátů souborů pro datovou analýzu.
XML
XML (Extensible Markup Language - rozšiřitelný
značkovací jazyk) je textový formát pro uchovávání a přenos
strukturovaných dat. Používá takzvané tagy, což
jsou textové značky ohraničené špičatými závorkami <
a
>
. Každý tag má svůj význam a obvykle tvoří dvojici –
například <title>
a </title>
– mezi
které se zapisuje konkrétní hodnota. Díky tomu můžeme přesně popsat
význam každé části dat. XML se často používá v podnikových systémech,
datových přenosech a při výměně dokumentů mezi různými aplikacemi.
XML soubory bývají větší než například JSON a jejich zpracování může být pomalejší. Proto se XML nehodí pro práci s obrovským množstvím dat, kde je rychlost a efektivita klíčová.
Struktura XML
XML má podobu stromové struktury. Tato hierarchie umožňuje logicky a přehledně uspořádat i velmi složité datové celky. Opět si ukažme příklad s uložením dvou osob, tentokrát do XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <osoby> <osoba> <jmeno>Jan</jmeno> <prijmeni>Novák</prijmeni> <ulice>Příkrá 3</ulice> <mesto hlavni="ne">Vlašim</mesto> <psc>25801</psc> </osoba> <osoba> <jmeno>Jana</jmeno> <prijmeni>Příhodová</prijmeni> <ulice>U Hrušní 15</ulice> <mesto hlavni="ne">Benešov</mesto> <psc>25601</psc> </osoba> </osoby>
Vidíme, že XML je nejčitelnější, ale také nejupovídanější. První
řádek obvykle definuje verzi a kódování souboru. Dále následuje
jediný kořenový element. Element je obvykle definován
otevírací a zavírací značkou, které píšeme pomocí špičatách
závorek, např. <znacka>
a </znacka>
, kde
značka začínající lomítkem je zavírací. Uvnitř těchto značek se
nachází obsah elementu, což jsou buď další zanořené
elementy nebo text. Data můžeme psát rovněž do atributů elementu,
výše má město atribut hlavni
.
Když má element jen málo dat, lze je všechny zapsat jen do jeho atributů. Element nemusí mít pak žádný obsah. Takový element se můžeme rozhodnout definovat jako nepárový a nemá pak zavírací značku. Jeho značka pak musí končit lomítkem:
<web url="www.itnetwork.cz" />
Ukázka XML souboru
Opět si vyzkoušíme otevřít nějaký vzorový dataset, tentokrát z výukové dokumentace Microsoftu. Vzhledem k tomu, že se opět jedná o rozsáhlejší soubor, ukážeme si jen jeho část. Soubor si nejprve zkopírujeme:

Vysvětlíme si, co jednotlivé značky znamenají:
<catalog>
– kořenový element celého dokumentu, obsahuje všechny knihy.<book>
– záznam jedné knihy, má atribut id (např. id="bk101").<author>
– autor knihy.<title>
– název knihy.<genre>
– žánr knihy.<price>
– cena v dolarech.<publish_date>
– datum vydání.<description>
– stručný popis obsahu knihy.
Ve VS Code si otevřeme složku, kam chceme soubor vložit:

Ve složce vytvoříme nový soubor:

Soubor nazveme books.xml
:

A zkopírovaná data do něj vložíme:

Vložení a úprava dat v souboru books.xml
ve Visual Studio
Code nám umožňuje přehledně pracovat s celou strukturou dokumentu, snadno
odhalit chyby a mít kontrolu nad každým prvkem. Opět vidíme, že je obsah
přehledně obarvený.
XML entity
Jelikož XML používá ke své syntaxi znaky
<, >, &
, nemůžeme je jen tak zapsat do dat elementů.
Je potřeba je nahradit za tzv. entity (např. <
zapíšeme v
datech jako <
nebo jako <
). Jinak
může dojít k chybné interpretaci struktury XML.
Kdyby měla v našem ukázkovém XML osoba např. místo jména přezdívku
Joker ]:>
, museli bychom pravou špičatou závorku zapsat
takto:
<jmeno>Joker ]:></jmeno>
Entitami lze kromě speciálních znaků používaných v XML syntaxi zapsat i další znaky, které se jinak špatně píší, např. copyright ©. Ukažme si základní entity, které v XML datech použijeme, když chceme zapsat speciální znak:
Znak | Popis | Zástupné entity |
---|---|---|
nedělitelná mezera |   | |
< | menší než | < < |
> | větší než | > > |
& | ampersand | & & |
" | dvojitá uvozovka | " " |
' | jednoduchá uvozovka | ' ' |
¢ | cent | ¢ ¢ |
£ | libra | £ £ |
¥ | yen | ¥ ¥ |
€ | euro | € € |
© | copyright | © © |
® | registrovaná známka | ® ® |
™ | trademark | ™ ™ |
Kompletní seznam všech takových značek nalezneme např. na Wikipedii.
SQL
Strukturovaný dotazovací jazyk SQL (Structured Query
Language) se používá pro práci s daty uloženými v
databázích – umožňuje vybírat, upravovat i
ukládat data pomocí přesně definovaných dotazů. Tabulky v
databázi mají sloupce a řádky, jako např. tabulky v Excelu. S tímto formátem se v kurzu seznámíme
později, až budeme pracovat s databázemi. Prozatím si ukažme jen, jak
takový datový soubor vypadá. Jedná se o sérii příkazů
INSERT
, které do databáze vloží jednotlivé řádky. Pro naše
osoby by vypadal SQL soubor následovně:
INSERT INTO osoby (jmeno, prijmeni, ulice, mesto, psc) VALUES ('Jan', 'Novák', 'Příkrá 3', 'Vlašim', 25801), ('Jana', 'Příhodová', 'U Hrušní 15','Benešov', 25601);
Nad příkazy může být ještě kód pro vytvoření databázové tabulky a další nastavení, mnůže vypadat např. takto:
CREATE TABLE IF NOT EXISTS osoby ( id SERIAL PRIMARY KEY, jmeno VARCHAR(50) NOT NULL, prijmeni VARCHAR(50) NOT NULL, ulice VARCHAR(100) NOT NULL, mesto VARCHAR(50) NOT NULL, psc INTEGER NOT NULL );
VARCHAR
a INTEGER
jsou datové typy, jedná se o
text (v závorce se definuje maxámální délka) a celé číslo.
V další lekci, Databáze a tabulky, se seznámíme se základní strukturou databázových tabulek.