Integrácia dát z viacerých zdrojov

Jednou z hlavných výhod PowerPivotu aj Power BI je schopnosť načítať a analyzovať dáta z viacerých zdrojov. Dokonca je to v dnešnej dobe úplne bežná požiadavka pri reportingu. Väčšinou však takéto dáta nie sú uložené rovnakým spôsobom, a integrácia dát z viacerých zdrojov skončí hneď na začiatku. A pritom riešenie je veľmi jednoduché.

Povedzme, že máme 2 rôzne zdroje dát, v ktorých sú vedení klienti. Prvým zdrojom je objednávkový systém, kde sú vedené objednávky. Druhým zdrojom je účtovný systém, kde sú vedené faktúry. A požiadavka je – analyzovať súčasne objednávky aj faktúry podľa klientov. Dáta v objednávkovom systéme vyzerajú nasledovne:

Dáta v účtovnom systéme vyzerajú takto:

Ako vidíte na obrázkoch, tabuľka klientov sa nachádza v oboch systémoch, a je naviazaná cez identifikátor klienta na svoju príslušnú tabuľku. Problém je v tom, že v objednávkovom systéme je klient identifikovaný svojim číslom, a v účtovnom systéme kódom klienta. A podľa týchto identifikátorov sú prepojené na svoje tabuľky – v objednávkovom systéme cez ID klienta, a v účtovnom systéme cez Kód klienta.  A aby sme takéto dáta vedeli prepojiť a spoločne analyzovať, potrebujeme tomu trochu dopomôcť. A tu nastupuje integrácia dát.

Riešením je spraviť prevodníkovú tabuľku, v ktorej budú na seba napárované rovnaké identifikátory z oboch systémov. Takto bude PowerPivot vedieť, ktoré dáta má spojiť s ktorými. V našom prípade vytvoríme takúto tabuľku a nazveme ju PrevodnikKlientov:

V prvom stĺpci bude ID klienta z prvého systému, a v druhom stĺpci kód klienta z druhého systému. V prípade viacerých rôznych zdrojov dát stačí spraviť jednu prevodníkovú tabuľku pre všetky zdroje, kde bude 1 stĺpec pre každý zdroj. Podstatné v tomto prípade je, aby v každom z týchto stĺpcov boli unikátne hodnoty. Ak tam máte duplicitné hodnoty, tak ich odtiaľ odstráňte, napr. pomocou Power Query.

Následne prepojte tabuľky medzi sebou, pričom myslite na pravidlá prepájania tabuliek pri vytváraní prepojení (kliknite na obrázok pre zväčšenie):

V Exceli 2010 a 2013:

V Exceli 2016 a v Power BI:

Boli vytvorené tieto prepojenia:

  1. z tabuľky KlientiObj a stĺpca ID klienta, do tabuľky PrevodnikKlientov a stĺpca ID klienta (prepájacia šípka musí smerovať z druhej tabuľky do prvej v Exceli 2010/2013, opačným smerom v Exceli 2016, a v Power BI musí ísť buď ako v Exceli 2016 alebo obojsmerne)
  2. z tabuľky KlientiUcto a stĺpca Kód klienta, do tabuľky PrevodnikKlientov a stĺpca Kód klienta (tu platí rovnaké pravidlo o prepájacej šípke ako v prvom bode)
  3. z tabuľky PrevodnikKlientov a  stĺpca ID klienta, do tabuľky Objednávky a stĺpca ID klienta
  4. z tabuľky PrevodnikKlientov a stĺpca Kód klienta, do tabuľky Faktúry a stĺpca Kód klienta

Ak by Vám PowerPivot písal upozornenia o neexistujúcich vzťahoch, keď neskôr budete vytvárať kontingenčku, tak zmažte prepojenia medzi tabuľkami klientov a prevodníkovou tabuľkou, a vytvorte ich v opačnom smere. Power BI by malo vytvoriť obojsmerné prepojenie typu 1:1 hneď na prvýkrát, takže tam by to nemalo byť potrebné.

Tabuľku PrevodnikKlientov potom môžete skryť, aby nemýlila užívateľov pri výbere polí do reportu. Prípadne poskrývať nepotrebné polia. Týmto by sa mala ukončiť každá integrácia dát.

Následne spravíme kontingenčku takto:

  1. do oblasti riadkov dáme stĺpec Názov klienta z tabuľky KlientiObj
  2. do oblasti hodnôt dáme stĺpec Cena bez DPH z tabuľky Objednavky, a stĺpec Uhradená suma z tabuľky Faktúry

Výsledná kontingenčka v Exceli bude vyzerať takto:

A rovnaká tabuľka v Power BI vyzerá takto:

Na obrázku vidíte, že PowerPivot správne spároval dáta zo všetkých tabuliek, a pri každom klientovi teraz môžete vidieť naraz sumu jeho objednávok, aj sumu jeho uhradených faktúr. A keďže PowerPivot v Exceli aj Power BI fungujú rovnako (len v Power BI je oveľa novšia verzia), tak aj riešenie je rovnaké v oboch aplikáciách. Na tomto riešení je pekné to, že si môžete vybrať, či budete analyzovať dáta podľa jednej alebo druhej tabuľky s klientami. Je to zajedno kvôli tomu, že výber dát v prvej tabuľke odfiltruje prevodníkovú tabuľku, ktorá pomocou prepojení odfiltruje do kontingenčky príslušné dáta z oboch cieľových tabuliek.

Jediná nevýhoda tohto riešenia je úsilie, ktoré musíte vydať na vytvorenie prevodníkovej tabuľky. Ale to si musíte dať tak či tak, lebo inak ani PowerPivot, ani Power BI, ani žiadny iný nástroj nebude vedieť, ako dať takéto dáta dokopy. Odmenou Vám bude poriadok v dátach, a možnosť krížovej analýzy naprieč ľubovoľnými zdrojmi dát. A to je presne to, v čom spočíva sila PowerPivotu. Ak mu dáta pripravíte v správnom formáte, tak sa Vám odmení jednoduchým riešením a veľkou flexibilitou. A integrácia dát z viacerých zdrojov už viac nebude utrpením. Jedine že by ste mali maximálny bordel v dátach, v ktorom sa už ani divá sviňa nevyzná. Ale to je už iná téma 🙂

2 komentárov k “Integrácia dát z viacerých zdrojov

  • 4. februára 2018 at 19:49
    Permalink

    Pri tomto riešení by som asi volil malú úpravu – tabuľky kmeňových dát by som do modelu vôbec neťahal, ale naopak, použil by som iba prevodník a dotiahol tam názvy z jednej z tabuliek. Okrem zjednodušenia modelu tým vytváram aj tlak na prípadné nekonzistencie zdrojových dát a zjednotenie dodatkových informácií v oboch ERP systémoch (názvy, adresy,… ) a tým si, samozrejme, vytváram aj priestor na plynulý prechod na jednotný systém (ktorý s rozvojom firmy môžem očakávať). Toto je dobrý príklad na kladnú spätnú väzbu z reportingového systému na transakčné systémy. 🙂 (A možno sa kompletne mýlim…)

    • 5. februára 2018 at 21:48
      Permalink

      Tak, ono by to malo byť v ideálnom prípade zjednotené v jednom systéme, ale v realite to zvyčajne býva ešte oveľa horšie – údaje sú vo viacerých systémoch, niektoré z nich duplicitne, prípadne zadané kadejak… A keď sa nechce užívateľovi čakať niekoľko mesiacov na IT oddelenie, ktoré mu to spraví, tak si musí pomôcť takto 😉 Oba číselníky som tam dal kvôli tomu, aby si užívatelia mohli vyberať dáta do kontingenčky z oboch tabuliek. Samozrejme, že by sa to hodilo upratať do jednej, ale o tom sú tu už články s funkciou RELATED 🙂

Komentáre sú uzavreté.