Tento článek je o funkci LOOKUPVALUE, které přiřazuje hodnoty z jiné tabulky načtené do datového modelu.

Ukážeme si, jak v tomto příkladu propojit dvě tabulky. Jedna tabulka obsahuje informace o prodejích, ale chybí v ní informace o cenách výrobků. Tyto ceny jsou ve druhé tabulce. 

Naším úkolem bude přidat ke každé položce v tabulce s prodeji informaci o ceně položky z ceníku. Tedy tabulky propojit.

Do nového sloupečku zapíšeme:

  • Price from pricelist = LOOKUPVALUE(
       Pricelist[Price];
       Pricelist[Item];
       Sales[Item];
       0)

Protože:

  • Price from pricelist je název nového sloupce
  • Pricelist[Price] je sloupec v “druhé” tabulce, ze kterého chceme doplnit hodnoty
  • Pricelist[Item] je sloupec v “druhé” tabulce, který slouží jako přiřazovací klíč
  • Sales[Item]) je sloupec ve stejné tabulce, kam zapisujeme, ke kterému chceme přiřazovat
  • 0 je hodnota, která se objeví, pokud nebude v tabulce nalezeno, k čemu přiřazovat – je to tedy na podobném principu, jako bychom LOOKUPVALUE zkombinovali s funkcí IFERROR. Tento argument je volitelný.

Ceny se doplní:

Navíc:

  • Princip funkce LOOKUPVALUE je velmi podobný funkci SVYHLEDAT (zatímco ale LOOKUPVALUE funguje v jazyce DAX v Power BI a v Power Pivotu, tak SVYHLEDAT funguje v běžném Excelu).
  • LOOKUPVALUE je také hodně podobné daxovské funkci RELATED. Více o rozdílech mezi RELATED a LOOKUPVALUE tady
  • Pokud LOOKUPVALUE najde více hodnot, které odpovídají hledané hodnotě, hodí chybu.
  • LOOKUPVALUE umí pracovat i s vícenásobným klíčem – můžete tedy hledat např. podle kombinace názvu a měsíce:

  • Pokud se v tabulce, ze které dotahuje data, vyskytuje klíč vícenásobně, zobrazí se standardně chyba. Pokud chcete v takovém případě zobrazit i tak nějakou hodnotu, můžete LOOKUPVALUE nahradit jinou funkcí, třeba takto:
    • CALCULATE(
         MIN(resulttable[resultcolumn]),
         FILTER(resulttable,resulttable[keycolumn]=thistable[keycolumn]