Analýza bezpečnosti potravín v Power BI

Dnes ma pri nákupe v potravinách napadlo, že by nebolo zlé zistiť, odkiaľ pochádza najviac nebezpečných potravín. A na analýzu bezpečnosti potravín použiť Power BI, resp. kombináciu Power Query a PowerPivotu. Výsledky celkom dosť šokovali aj mňa.

Najprv k použitému zdroju dát, na základe ktorého budeme analyzovať bezpečnosť potravín. V Európskej únii existuje Systém rýchleho varovania pre potraviny a krmivá (Rapid Alert System for Food and Feed, RASFF). Slúži na oznamovanie priameho alebo nepriameho rizika pre ľudské zdravie, pochádzajúceho z potraviny alebo krmiva. Umožňuje rýchle a účinné zdieľanie informácií o nebezpečných potravinách alebo krmivách medzi členmi systému: Európskou komisiou, členskými štátmi EU a EFTA (Island, Lichtenštajnsko a Nórsko) a Európskym úradom pre bezpečnosť potravín (EFSA). A práve údaje z tohto systému RASFF použijeme.

Ak vás nezaujíma použitý postup, a chcete vidieť iba výsledky, tak prejdite na koniec tohto článku.

Údaje sú zverejňované na rôznych portáloch. Ja som vybral pre účely tejto ukážky portál bezpecnostpotravin.cz, kde každý týždeň publikujú sumár zo systému RASFF do prehľadnej tabuľky. Zoznam všetkých tabuliek je na tejto adrese:

http://www.bezpecnostpotravin.cz/kategorie/hlaseni-v-systemu-rasff.aspx

…a po rozkliknutí daného hlásenia v tabuľke, sa nám zobrazí sumár všetkých hlásení z daného týždňa, resp. potravinových varovaní, tiež v prehľadnej tabuľke:

A tento zdroj dát použijeme do nášho reportu Power BI, ktorý nájdete hotový na konci tohto článku.

Ako však vylámať dáta z webových stránok? Tabuľky na webe sú ako stvorené pre extrakciu dát pomocou Power Query. O tejto technike, aj o väčšine použitých techník, píšem v mojej knihe o Power BI, takže tentokrát tu uvidíte iba stručný zoznam krokov z použitého postupu, aby článok nemal 30 strán.

Začneme teda v Power Query. Najprv si načítame dáta z dátového zdroja Web, kde použijeme hore uvedené URL, a v Navigátore vyberieme tú tabuľku zo stredu webstránky. Náhľad údajov po stiahnutí do Power Query bude vyzerať takto:

Následne si cez Power Query dáme pridať vypočítané stĺpce Rok a Týždeň v roku, kde si cez textové funkcie vytiahneme z prvého stĺpca číslo roku a číslo týždňa. Pre stĺpec Rok použijeme tento vzorec:

= Number.FromText(Text.Range([#”Název / Anotace”], Text.PositionOf([#”Název / Anotace”], “. týden”) + 8, 4))

…a pre stĺpec Týždeň v roku použijeme tento vzorec:

= Number.FromText(Text.BetweenDelimiters([#”Název / Anotace”], “RASFF: “, “.”))

Výsledok bude vyzerať takto:

Potom odstránime prvé dva stĺpce, lebo ich už nebudeme potrebovať:

Následne potrebujeme stiahnuť dáta pre každý týždeň uvedený v tejto tabuľke. Keď pôjdete na danú webstránku a rozkliknete si tam odkaz pre ľubovoľný týždeň, tak bude vždy v rovnakom formáte, a bude v sebe obsahovať týždeň aj rok. Napr. pre 30. týždeň v roku 2018 je URL nasledovné:

http://www.bezpecnostpotravin.cz/hlaseni-v-systemu-rasff-30-tyden-2018.aspx

Túto tabuľku si najprv stiahneme ďalším dotazom do Power Query. Takisto cez dátový zdroj Web, a odfiltrujeme preč riadky s prázdnou hodnotou v prvom stĺpci:

Potom tento dotaz sparametrizujeme tak, že vytvoríme funkciu v Power Query, ktorá bude brať na vstupe týždeň a rok:

A nakoniec technikou kombinácie dát z viacerých databáz spravíme to, že pre každý riadok tabuľky zo začiatku, zavoláme našu funkciu Power Query, kde do jej parametrov dosadíme týždeň a rok:

Podtabuľky v stĺpci Tabulka rozbalíme na všetky vnútorné stĺpce:

Potom si pridáme ďalší vypočítaný stĺpec Krajina, ktorý oreže hodnotu zo stĺpca “Země původu výrobku” tak, aby tam zostali len znaky pred čiarkou. Je to preto, že v týchto dátach sú občas uvedené hodnoty vo formáte napr. “Polsko, cez Rakúsko“, a my z toho potrebujeme dostať iba hodnotu “Poľsko“. Vzorec teda bude nasledovný:

= if Text.PositionOf([Země původu výrobku], “,”) > 0 then Text.BeforeDelimiter([Země původu výrobku], “, “) else [Země původu výrobku]

Nakoniec použijeme na stĺpec Krajina transformáciu “V každom slove použité veľké písmená na začiatku“, pretože niektoré z krajín majú na začiatku niektorých slov veľké a niekde malé písmená. Týmto si to znormalizujeme do rovnakého formátu. Potom už len odstránime stĺpec “Země původu výrobku“, pretože ho už v dátovom modeli nebudeme potrebovať:

Následne údaje načítame do dátového modelu, resp. do Power BI. V momente písania tohto článku to načítalo údaje za prvých 30 týždňov roku 2018.

Ako poslednú vec si ešte pridáme do tabuľky Zoznam nové merítko Počet hlásení, ktoré bude použité nižšie na zobrazenie počtu hlásení podľa krajín, či akejkoľvek inej kategórie:

Počet hlásení = COUNTROWS(Zoznam)

A môžme začať analyzovať!

Vytvoríme si v reporte klasickú tabuľku, kde do riadkov dáme políčko Krajina a merítko Počet hlásení, a výsledky zoradíme podľa stĺpca Počet hlásení zostupne.

A kto je teda víťaz o najväčšie blivajzy na trhu EÚ? No predsa Francúzsko, krajina slimákov a božolééé, nasledovaná našim starým známym favoritom na bezpečnosť potravín, Poľskom:

Zaujímavé je, že v rebríčku vedú najviac rozvinuté krajiny Západu, čo som nečakal ani ja sám. Dobre vedieť…

Alebo, keď to chcete v peknom koláčikovom grafe, tak tu ho máte:

Keď chcete vedieť podrobnosti, napr. preto, lebo sami tomu neveríte (veď kto by to predsa povedal na to Francúzsko?!), tak prejdite na interaktívnu verziu reportu na konci tohto článku, kde je už nakonfigurovaná Podrobná analýza na ďalšej záložke. Potom kliknite pravým tlačidlom myši na názov danej krajiny v tabuľke, a v menu vyberte “Podrobná analýza => Detaily“:

Napr. pre Francúúúúzko vám to zobrazí samé mňamky:

Takže odo dnes francúzske jedlo nekupujem…

Na tomto príklade vidíte, ako ľahko si viete zanalyzovať v dnešnej dobe verejne dostupné dáta, a vyvrátiť všelijaké mýty, ktoré sa čím ďalej tým viac šíria po internete. A pretože je dnes informačná doba, nie je od veci vedieť rýchlo spracovávať informácie. Mne osobne toto celé trvalo spraviť cca. 20 minút, od prvotného otvorenia Googlu až po vypublikovanie tohto reportu. A je jedno, či to robíte v Power BI Desktope, alebo v Exceli cez Power doplnky. Je to proste bomba nástroj, a navyše aj zadarmo. Ešte stále rozmýšľate, či používať alebo nepoužívať Power BI či Power Query? Takéto techniky bežne učím na kurze Power Query, a aj na pokročilom kurze Power BI. Tu aspoň máte jednoduché demo toho, čo sa učí už hneď na začiatku týchto kurzov. A je jedno, či tým budete analyzovať bezpečnosť potravín alebo firemné dáta, pretože toto sú ultra univerzálne techniky.

Vzorový súbor PBIX si môžete stiahnuť z tohto odkazu. Je potrebné mať aspoň júlové vydanie 2018 Power BI Desktopu.

Vypublikovaný report a bezpečnosť potravín podľa krajín spolu s detailami, si môžete pozrieť aj priamo tu: