Je dôležité, v ktorej tabuľke vytvorím merítko v jazyku DAX?

Začiatočníci v PowerPivote aj Power BI sa ma často pýtajú, či je dôležité, v ktorej tabuľke vytvoria merítko. Či to má nejaký vplyv na výpočty, výkon, a podobne. Krátka odpoveď je vždy “nie”. Je však zopár scenárov, kde to vo vašom prípade možno môže mať nejakú dôležitosť.

Dôvod, prečo nie je až tak dôležité, v ktorej tabuľke sa nachádza merítko, je ten, že merítka sa v skutočnosti nenachádzajú v tej tabuľke, kde ste ich akože vytvorili. Je to len metadátový trik, ktorým si Microsoft ešte v prvej verzii PowerPivotu zjednodušil tvorbu editora dátového modelu. A tak je to viac-menej doteraz. Pretože ak by merítko patrilo konkrétnej tabuľke, tak by ste mohli vytvoriť merítka s rovnakými názvami v rozdielnych tabuľkách. To ale nemôžete.

V ktorej tabuľke sa nachádzajú merítka

Všetky merítka sa v skutočnosti nachádzajú v internej, skrytej tabuľke s názvom Measures. A keď sa aj pokúsite pridať tabuľku s takýmto názvom do dátového modelu, alebo premenovať už existujúcu, tak dostanete napr. takúto chybovú hlášku:

Takže všetky merítka sú v skutočnosti v jednej tabuľke nazvanej Measures. A z pohľadu výpočtov či výkonu dátového modelu to má úplne nulovú dôležitosť. Neovplyvní to ani výpočty, ani rýchlosť dátového modelu.

Kedy má význam, v ktorej tabuľke sú merítka

Sú však dva prípady, kedy to nepriamo má význam, kam umiestnite merítka.

Prvý prípad je organizácia dátového modelu a lepšia orientácia v ňom. Keď totiž nahádžete všetkých svojich 200 merítok do jednej tabuľky, tak z toho zrovna nebudete nadšení. A o to viac dôvodov dáte užívateľom na to, aby ho nepoužívali, pretože v menu majú 200 položiek pod sebou.

V tomto prípade je lepšie merítka popresúvať do iných tabuliek. Alebo si vytvoriť osobitné tabuľky na jednotlivé skupiny merítok, napr. podľa ich oblasti, zamerania, typu výpočtov, a pod.. A ak máte SSAS Tabular alebo Power BI Desktop, tak môžete využiť zobrazovacie priečinky na zaradenie merítok do adresárov a podadresárov v rámci jednej tabuľky.

Problémy s lenivým zápisom

Druhý prípad, kedy má význam, kam umiestnite merítka, sa vám vyskytne vtedy, keď píšete merítka tzv. lenivým zápisom. A píšete ich najkratším možným spôsobom. Napr. keď chcete vytvoriť merítko Obrat v tabuľke Objednávky, ktoré sumuje stĺpec “Cena objednávky” z rovnakej tabuľky:

Obrat := SUM([Cena objednávky])

Toto je najkratší možný spôsob zápisu tohto merítka. Pretože merítko aj stĺpec vo vzorci sú z rovnakej tabuľky, a tak nemusíme uvádzať názov tabuľky pred názvom stĺpca. Potiaľto všetko fajn.

Problém ale nastane, keď sa pokúsite presunúť toto merítko do inej tabuľky, tak ako je to popísané v tomto článku. Tam môžu vzniknúť 2 problémy:

  1. merítko po presune nebude fungovať, pretože stĺpec “Cena objednávky” v cieľovej tabuľke neexistuje,
  2. merítko po presune bude fungovať – ak v cieľovej tabuľke existuje daný stĺpec – ale bude počítať niečo úplne iné.

V prvom prípade vám pravdepodobne prestanú fungovať niektoré časti reportu, a v druhom prípade to začne vracať iné čísla. Čo je oveľa väčší problém, pretože ak to nikde nevypíše chybu (lebo z technického hľadiska tam nie je), tak si to pravdepodobne ani nevšimnete, a prúser je na streche.

Preto nepíšte merítka lenivým spôsobom. A keď sa v nich odkazujete na nejaké stĺpce, tak pred ne uveďte VŽDY názov tabuľky, aj keď je to tá istá tabuľka, v ktorej práve ste. Pretože potom sa vám nestane ten druhý prípad, keď po presune merítka dané merítko síce bude fungovať, ale už bude počítať sumy z inej tabuľky. Poctivým zápisom docielite vždy to, že sa dané merítko bude stále počítať z tých istých dát.

Na záver

Merítka sú teda umiestnené v tabuľke Measures, do ktorej sa nijak nedostanete. A merítko s daným názvom preto viete v dátovom modeli vytvoriť iba jedno. A preto je aj zajedno, v ktorej tabuľke vytvoríte merítko. Pretože na výpočty, ich rýchlosť, a ani na nič iné to nemá vplyv. Dokým teda nepíšete merítka lenivým spôsobom, či ich nepresúvate medzi tabuľkami. Pretože ak ste si zjednodušili predtým zápis merítka a neuviedli ste pred použité stĺpce názvy ich tabuliek, tak potom čakajte nečakané 🙂