PowerPivot oficiálne umožňuje prepájať tabuľky cez 1 stĺpec. Čo ale v prípade, keď potrebujete neštandardné prepojenie, napr. cez rozsah hodnôt, ktoré sa nachádzajú v tej druhej a zároveň prepájanej tabuľke? Oficiálne to nejde, ale my si ukážeme, ako to pôjde 🙂
V podstate ide o jednoduchú modifikáciu vzorca, ktorý bol použitý na dynamickú kategorizáciu dát. Ak ste tento článok ešte nečítali, tak ho pre lepšie pochopenie odporúčam prečítať predtým, ako budete pokračovať.
Majme teda 2 tabuľky, ktoré chceme prepojiť. Použijeme na začiatok náš vzorový súbor, v ktorom je prvá tabuľka – Objednávky. Druhá tabuľka bude tabuľka pásiem, ktorú si do PowerPivotu dotiahneme napr. ako linkovanú tabuľku a pomenujeme napr. Pásma. Tabuľka pásiem bude vyzerať nasledovne:
V stĺpci Názov sa nachádza názov pásma, ktorý chceme po prepojení na tabuľku Objednávky používať v kontingenčke na analýzu dát. V stĺpcoch Od a Do sa nachádzajú hranice intervalu, do ktorého musí spadať cena objednávky, a na ktorý chceme „prepojiť“ cenu objednávky v tabuľke Objednávky v stĺpci Cena objednávky. To však nebudeme vedieť priamo, a preto si dopomôžeme fintou, že dotiahneme unikátny identifikátor riadku zo stĺpca ID z tabuľky Pásma do tabuľky Objednávky. To spravíme ako vypočítaný stĺpec v tabuľke Objednávky týmto vzorcom:
=CALCULATE(VALUES(‚Pásma'[ID]); FILTER(‚Pásma‘; ‚Pásma'[Od] <= [Cena objednávky] && [Cena objednávky] < ‚Pásma'[Do]))
Tento stĺpec si pomenujeme tiež ID, a pokúsime sa prepojiť tieto 2 tabuľky štandardným prepojením cez tieto 2 stĺpce s rovnakým menom v oboch tabuľkách. Keď to ale skúsite, narazíte na chybovú hlášku s cyklickou závislosťou:
Problém je v tom, že stĺpec ID v tabuľke Objednávky je odvodený z prepájanej tabuľky, a, aj keď nejde priamo o cyklickú závislosť, tak PowerPivot to berie ako cyklickú závislosť. Takže takto nám to priamo nedovolí prepojiť. Obídeme to ale podobnou fintou, akú sme použili už v článku o oprave dát – a to, že:
- zduplikujeme tabuľku s pásmami a nazveme ju Pásma2
- stĺpec ID v tabuľke Objednávky budeme počítať z tej zduplikovanej tabuľky (čiže nahraďte v hore uvedenom vzorci „Pásma“ za „Pásma2“)
- tabuľku Pásma2 skryjeme pred užívateľmi
- prepojenie spravíme znova medzi stĺpcom ID z tabuľky Objednávky a rovnakým stĺpcom v tabuľke Pásma
A takéto prepojenie nám už PowerPivot dovolí spraviť 🙂 Zároveň sme skryli tú zduplikovanú tabuľku s pásmami kvôli tomu, aby zbytočne nemýlila používateľov, a aby sme upratali po sebe. Následne môžeme použiť dokopy v kontingenčke stĺpec Názov z tabuľky Pásma napr. s merítkom Obrat z tabuľky Objednávky:
Nie je to síce jednoduché riešenie, ale po zopár opakovaniach už nad tým nebudete veľa rozmýšľať. Zároveň má tú výhodu, že tento vzorec s postupom môžete použiť na všetky možné podmienené aj inak neštandardné prepojenia tabuliek, lebo je univerzálny. Stačí nahradiť podmienku vo funkcii FILTER tou Vašou podmienkou, a potom už nič ďalšie nebráni svetlým zajtrajškom v powerpivotovaní 🙂 A v tom je tá sila – je to síce trochu komplikovanejšie ako bežné prepojenia, ale je to univerzálne. A vďaka tomu to môžete používať znova, a znova, a znova, až dokým sa Vám to nezunuje 🙂
Autor, tréner a expert na PowerPivot, Power BI a jazyk DAX. Založil som tento web, aby som pomohol dostať PowerPivot a Power BI do širšieho povedomia, a aby som ľuďom ukázal, že aj komplexné analytické problémy idú riešiť jednoducho. Po nociach vzývam Majstra Yodu a tajne plánujem ovládnutie vesmíru.