Contact us

Pošlji
povpraševanje

Zakladnica znanja

  • Predzanje

  • Kategorije

October 23, 2020

DAX funkcija CALCULATE

Avtor: Branka Trifunović

V članku je uporabljen Power BI Desktop verzije 2.76.5678.782 (December 2019).

Funkcija CALCULATE() je najpomembnejša funkcija v jeziku DAX. Je skoraj edina funkcija, ki lahko spremeni filterni kontekst, ki pride iz vizualizacij. Več o filternem kontekstu si lahko preberemo v članku Filterni kontekst v Power BI in Prehod konteksta v Power BI.

Kako deluje funkcija CALCULATE()? Predstavljajmo si, da v podjetju vsak mesec naročimo naslednji paket pisarniških produktov.

Standardno mesečno naročilo vsebuje: papir, pisala, mape, kuverte in sponke.

Pred oddajo naročila za aktualni mesec ugotovimo, da imamo sponke še na zalogi in jih ta mesec ne bomo naročili. Pri naročilu bi sporočili: “Želimo standardni paket, brez sponk. ” Podobno naredi funkcija CALCULATE(). Tabelo filtrira, da ostane zgolj vsebina, ki jo želimo, in izračuna vredonst izraza. Uporabimo lahko nobenega, en ali več filtrov. Funkcija pred vrednotenjem rezultata spremeni filterni kontekst, filtri se prelijejo skozi povezave in filtrirajo tudi povezane tabele.

Sintaksa

CALCULATE(Expression, Filter1, Filter2, Filter3, …)

Parameter Opis
Expression Izraz, ki ga želimo filtrirati
Filter1, Filter2, Filter3, … Filtri

Primer: filtriranje ene tabele

Imamo tabelo Supplies z evidenco trenutne zaloge pisarniškega materiala.

Ugotoviti želimo, koliko kosov pisarniškega materiala bomo naročili, če vemo, da bomo naročili vse razen sponk oz. “Paper clips”. Sledimo naslednjim korakom.

1. Ustvarimo novo mero in uporabimo naslednjo formulo.

CALCULATE_Example = CALCULATE(SUM(Supplies[Quantity]), Supplies[Name] <> “Paper clips”)

2. Mero uporabimo v vizualizaciji Matrika. Pričakovano je odgovor 1300.

Primer: filtriranje druge tabele

Filtri se lahko nanašajo tudi na druge tabele. Želimo npr. dohodek od produktov v skupini Board games.

Uporabimo naslednji primer:

CALCULATE_Example = CALCULATE(SUM(Sales[Amount]), Product[Genre] = “Board games”)

Formula se izvede po naslednjh korakih.

  1. Tabela Product se filtrira, tako da ostanejo le vrstice, ki imajo v stolpcu Genre vrednost Board games.
  2. Filter nato potuje po povezavi do tabele Sales, kjer tudi ostanejo vrstice, ki imajo v stolpcu Genre vrednost Board games.
  3. V filtrirani tabeli Sales se izračuna vsota stolpca Amount.

Primer: filtriranje z več filtri

Uporabimo lahko poljubno število filtrov. Želimo npr. dohodek od produktov v skupini Board games na lokaciji UK, v letu 2019.

Uporabimo naslednji primer:

CALCULATE_Example = CALCULATE(SUM(Sales[Amount]), Product[Genre] = “Board games”, Location[Name] = “UK”, Calendar[Year] = 2019)

Formula se izvede po naslednjh korakih.

  1. Tabela Product se filtrira, tako da ostanejo le vrstice, ki imajo v stolpcu Genre vrednost Board games.
  2. Tabela Location se filtrira, tako da ostanejo le vrstice, ki imajo v stolpcu Name vrednost UK.
  3. Tabela Calendar se filtrira, tako da ostanejo le vrstice, ki imajo v stolpcu Year vrednost 2019.
  4. Filtri nato potujejo po povezavah do tabele Sales, kjer tudi ostanejo samo vrstice, ki niso bile filtrirane.
  5. V filtrirani tabeli Sales se izračuna vsota stolpca Amount.

Kazalo