Kontekst võimaldab teil läbi viia dünaamilise analüüsi, kus valemi tulemid võivad praeguse rea või lahtrivaliku ja ka seostuvate andmete kajastamiseks muutuda. Konteksti mõistmine ja konteksti tõhus kasutamine on väga olulised kõrge jõudlusega valemite, dünaamiliste analüüside ja valemites esinevate probleemide tõrkeotsingu jaoks.
Selles jaotises määratletakse eri kontekstitüübid: reakontekst, päringukontekst ja filtrikontekst. Selles selgitatakse, kuidas arvutatakse valemite konteksti arvutuslikes veergudes ja PivotTable-liigendtabelites.
Selle artikli viimane osa sisaldab linke üksikasjalikele näidetele, mis illustreerivad seda, kuidas valemite tulemid konteksti järgi muutuvad.
Konteksti mõistmine
Power Pivot valemeid võivad mõjutada PivotTable-liigendtabelis rakendatud filtrid, tabelitevahelised seosed ja valemites kasutatavad filtrid. Kontekst võimaldab dünaamilist analüüsi. Konteksti mõistmine on valemite koostamisel ja tõrkeotsingul oluline.
Kontekstitüüpe on erinevat tüüpi: reakontekst, päringukontekst ja filtrikontekst.
Rea konteksti võib käsitleda kui "praegust rida". Kui olete loonud arvutusliku veeru, koosneb reakontekst iga rea väärtustest ja veergude väärtustest, mis on seotud praeguse reaga. Samuti on mõned funktsioonid (EARLIER ja EARLIEST), mis saavad väärtuse praeguselt realt ja kasutavad seda väärtust toimingu sooritamisel kogu tabelis.
Päringukontekst viitab andmete alamhulgale, mis luuakse sõltuvalt rea- ja veerupäistest kaudselt PivotTable-liigendtabeli iga lahtri jaoks.
Filtrikontekst on igas veerus lubatud väärtuste kogum, mis põhineb filtripiirangutel, mis rakendati reale või mis on määratletud valemi filtriavaldistega.
Rea kontekst
Kui loote valemi arvutatud veerus, sisaldab selle valemi reakontekst praeguse rea kõigi veergude väärtusi. Kui tabel on seotud mõne muu tabeliga, kaasab sisu ka kõik selle teise tabeli väärtused, mis on seotud praeguse reaga.
Oletagem näiteks, et loote arvutatud veeru =[Veokulu] + [Maks], mis liidab samast tabelist kaks veergu kokku. See valem toimib nagu Exceli tabeli valemid, mis viitavad automaatselt sama rea väärtustele. Pange tähele, et tabelid erinevad vahemikest: te ei saa viidata praeguse rea ees olevale väärtusele, kasutades vahemikumärki, ja te ei saa viidata suvalisele üksikväärtusele tabelis või lahtris. Peate alati töötama tabelite ja veergudega.
Reakontekst järgib automaatselt tabelitevahelisi seoseid, et määratleda, millised seotud tabelite read on praeguse reaga seostatud.
Näiteks järgmine valem kasutab funktsiooni RELATED maksuväärtuse toomiseks seotud tabelist, võttes aluseks regiooni, kuhu tellimus lähetati. Maksuväärtus määratakse praeguse tabeli piirkonna väärtuse põhjal, otsides regiooni seotud tabelist ja saades seejärel seotud tabelist selle regiooni maksumäära.
= [Veokulu] + RELATED('Piirkond'[TaxRate])
See valem saab lihtsalt praeguse piirkonna maksumäära tabelist Piirkond. Te ei pea teadma ega määrama võtit, mis ühendab tabelid.
Mitme rea kontekst
Lisaks sisaldab DAX funktsioone, mis itereerivad arvutusi tabeli abil. Nendel funktsioonidel võib olla mitu praegust rida ja praeguse rea konteksti. Programmeerimisterminites saate luua valemeid, mis korduvad sise- ja välistsükli üle.
Oletagem näiteks, et teie töövihik sisaldab tabelit Tooted ja tabelit Müük . Võite soovida läbida kogu müügitabeli, mis on täis mitut toodet hõlmavaid tehinguid, ja leida iga toote jaoks tellitud suurima koguse igas tehingus.
Excelis nõuab see arvutus mitut vahekokkuvõtet, mis tuleb andmete muutmisel uuesti kokku võtta. Kui olete Excelis jõuline kasutaja, on võimalik, et saate koostada massiivivalemeid, mis seda tööd teeksid. Relatsioonandmebaasis võite ka kirjutada pesastatud alamvalikuid.
DAX-iga saate aga koostada ühe valemi, mis tagastab õige väärtuse, ja tulemeid värskendatakse automaatselt iga kord, kui tabelitesse andmeid lisate.
=MAXX(FILTER(Müük;[Tootevõti]=EARLIER([ProdKey]));Müük[TellimuseQty])
Selle valemi üksikasjaliku tutvustuse leiate funktsiooniST EARLIER.
Lühidalt öeldes talletab funktsioon EARLIER praegusele toimingule eelneva toimingu reakonteksti. Kogu aeg talletab funktsioon mälus kahte kontekstikogumit: üks kontekstikomplekt tähistab valemi siseringi praegust rida ja teine kontekstikomplekt valemi välistsükli praegust rida. DAX söödab väärtused automaatselt kahe tsükli vahel, et saaksite luua keerukaid liitväärtusi.
Päringu kontekst
Päringukontekst viitab andmete alamhulgale, mis tuuakse kaudselt valemi jaoks. Kui kukutate mõõdu või muu väärtusevälja PivotTable-liigendtabeli lahtrisse, uurib Power Pivot mootor konteksti määratlemiseks rea- ja veerupäiseid, tükeldeid ja aruandefiltreid. Seejärel teeb Power Pivot vajalikud arvutused iga PivotTable-liigendtabeli lahtri asustamiseks. Toodav andmekogum on iga lahtri päringukontekst.
Kuna kontekst võib muutuda olenevalt sellest, kuhu valemi paigutate, muutuvad ka valemi tulemid olenevalt sellest, kas kasutate valemit PivotTable-liigendtabelis, kus on palju rühmitusi ja filtreid, või arvutatud veerus, kus pole filtreid ega minimaalset konteksti.
Oletagem näiteks, et loote selle lihtsa valemi, mis summeerib väärtused tabeli Müük veerus Kasum:
=SUM('Müük'[Kasum])
Kui kasutate seda valemit tabelis Müük olevas arvutuslikus veerus, on valemi tulemid kogu tabelis samad, kuna valemi päringukontekst on alati tabeli Müük kogu andmekomplekt. Teie tulemused saavad kasumit kõigi piirkondade, kõigi toodete, aastate jne jaoks.
Tavaliselt ei soovi te siiski sadu kordi samu tulemeid näha, kuid selle asemel soovite saada kindla aasta, kindla riigi või regiooni, kindla toote või nende kombinatsiooni kasumit ja seejärel saada üldkokkuvõtet.
PivotTable-liigendtabelis on lihtne konteksti muuta, lisades või eemaldades veeru- ja reapäiseid ning lisades või eemaldades tükeldeid. Saate mõõdus luua ülaltoodud valemi ja seejärel kukutada selle PivotTable-liigendtabelisse. Iga kord, kui lisate PivotTable-liigendtabelisse veeru- või reapäiseid, muudate päringukonteksti, milles mõõtu väärtustatakse. Konteksti mõjutavad ka tükeldus- ja filtreerimistoimingud. Seetõttu väärtustatakse sama valemit, mida kasutatakse PivotTable-liigendtabelis, igas lahtris erinevas päringukontekstis.
Filtri kontekst
Filtrikontekst lisatakse juhul, kui määrate veerus või tabelis lubatud väärtustekogumi filtripiirangud valemi argumentide abil. Filtrikontekst rakendatakse ka muudele kontekstidele (nt reakontekst või päringukontekst).
Näiteks arvutab PivotTable-liigendtabel iga lahtri väärtused rea- ja veerupäiste põhjal, nagu on kirjeldatud päringukonteksti käsitlevas eelmises jaotises. Kuid PivotTable-liigendtabelisse lisatavates mõõtudes või arvutatud veergudes saate määrata filtriavaldised valemis kasutatavate väärtuste juhtimiseks. Samuti saate kindlate veergude filtrid valikuliselt tühjendada.
Lisateavet valemites filtrite loomise kohta leiate teemast Filtrifunktsioonid.
Näide selle kohta, kuidas filtreid saab üldkokku kokkuvõtete loomiseks tühjendada, leiate teemast Funktsioon ALL.
Näiteid selle kohta, kuidas valemites filtreid valikuliselt tühjendada ja rakendada, leiate teemast Funktsioon ALLEXCEPT.
Seetõttu peate läbi vaatama PivotTable-liigendtabelis kasutatavate mõõtude või valemite määratluse, et oleksite valemite tulemite tõlgendamisel filtrikontekstist teadlik.
Konteksti määratlemine valemites
Valemi loomisel kontrollib Power Pivot Exceli jaoks esmalt üldist süntaksit ning kontrollib seejärel veergude ja tabelite nimesid võimalike veergude ja tabelite suhtes praeguses kontekstis. Kui Power Pivot ei leia valemiga määratud veerge ja tabeleid, kuvatakse tõrketeade.
Kontekst määratletakse nii, nagu on kirjeldatud eelmistes jaotistes, kasutades töövihikus saadaolevaid tabeleid, tabelitevahelisi seoseid ja rakendatud filtreid.
Näiteks kui olete äsja importinud osa andmeid uude tabelisse ja pole rakendanud filtreid, on kogu tabeli veergude kogum osa praegusest kontekstist. Kui teil on mitu seostega lingitud tabelit ja töötate PivotTable-liigendtabelis, mida on filtreeritud veerupäiste lisamise ja tükeldite abil, hõlmab kontekst seotud tabeleid ja kõiki andmete filtreid.
Kontekst on võimas kontekst, mis võib muuta ka valemite tõrkeotsingu raskeks. Soovitame alustada lihtsate valemite ja seostega, et näha, kuidas kontekst toimib, ja seejärel alustada lihtsate valemite katsetamist PivotTable-liigendtabelites. Järgmises jaotises on ka mõned näited selle kohta, kuidas valemid kasutavad tulemite dünaamiliseks tagastamiseks erinevat tüüpi konteksti.
Valemite konteksti näited
-
Funktsioon RELATED laiendab praeguse rea konteksti, et kaasata väärtused seotud veergu. Nii saate teha otsinguid. Selle teema näide illustreerib filtreerimise ja reakonteksti interaktsiooni.
-
Funktsioon FILTER võimaldab teil määrata praegusesse konteksti kaasatavad read. Selle teema näited illustreerivad ka seda, kuidas manustada filtreid muudesse kokkuvõttefunktsioonidesse.
-
Funktsioon ALL seab valemis konteksti. Saate seda kasutada päringukonteksti tulemusena rakendatud filtrite alistamiseks.
-
Funktsioon ALLEXCEPT võimaldab eemaldada kõik filtrid peale teie määratud filtri. Mõlemas teemas on näited valemite koostamise ja keerukate kontekstide mõistmise kohta.
-
Funktsioonid EARLIER ja EARLIEST võimaldavad teil tabelites tsükli luua arvutuste abil, viidates sisetsükli väärtusele. Kui olete tuttav kordumise mõiste ning sise- ja välistsüklitega, hindate nende võimet, mida funktsioonid EARLIER ja EARLIEST pakuvad. Kui te pole neid mõisteid varem kasutanud, peaksite hoolikalt järgima näites toodud juhiseid, et näha, kuidas arvutustes kasutatakse sisemisi ja väliseid kontekstisid.
Viitamisterviklus
Selles jaotises käsitletakse mõningaid keerukamaid mõisteid, mis on seotud seostega ühendatud Power Pivot tabelite puuduvate väärtustega. Sellest jaotisest võib abi olla juhul, kui teil on mitme tabeli ja keeruka valemiga töövihikuid ning soovite tulemite mõistmisel abi.
Kui te pole relatsioonandmete mõisteid veel käsitlenud, soovitame esmalt lugeda sissejuhatavat teemat Seoste ülevaade.
Viitamisterviklus ja Power Pivot seosed
Power Pivot ei nõua kehtiva seose määratlemiseks kahe tabeli vahel viitamistervikluse jõustamist. Selle asemel luuakse iga üks-mitmele seose "üks" lõpus tühi rida, mida kasutatakse seotud tabeli kõigi mittevastenduslike ridade töötlemiseks. See käitub tõhusalt SQL-i välisena.
Kui rühmitate PivotTable-liigendtabelites andmed seose ühe poole alusel, rühmitatakse seose mitme poole vasteta andmed ja kaasatakse tühja reapäisega kokkuvõtetesse. Tühi pealkiri on umbkaudselt võrdväärne "tundmatu liikmega".
Tundmatu liikme mõistmine
Tundmatu liikme mõiste on teile tõenäoliselt tuttav, kui olete töötanud mitmedimensiooniliste andmebaasisüsteemidega (nt SQL Serveri analüüsiteenused). Kui termin on teie jaoks uus, selgitatakse järgmises näites tundmatu liikme olemist ja seda, kuidas see arvutusi mõjutab.
Oletagem, et loote arvutuse, mis liidtab iga poe igakuise müügi, kuid tabeli Müük veerul puudub poe nime väärtus. Kui poe ja müügi tabelid on ühendatud poe nime järgi, siis mida peaksite valemis tegema? Kuidas peaks PivotTable-liigendtabel rühmitama või kuvama müüginäitajad, mis pole olemasoleva poega seotud?
See probleem on levinud andmeladudes, kus suured faktitabelid peavad olema loogiliselt seotud dimensioonitabelitega, mis sisaldavad teavet kaupluste, regioonide ja muude atribuutide kohta, mida kasutatakse faktide liigitamiseks ja arvutamiseks. Probleemi lahendamiseks määratakse olemasoleva olemiga seostamata uued faktid ajutiselt tundmatule liikmele. Seetõttu kuvatakse mitteseotud faktid tühja pealkirja all rühmitatuna PivotTable-liigendtabelis.
Tühjade väärtuste käsitlemine ja tühi rida
Tühjad väärtused erinevad tundmatu liikme jaoks lisatud tühjadest ridadest. Tühi väärtus on eriväärtus, mida kasutatakse tühiväärtuste, tühjade stringide ja muude puuduvate väärtuste tähistamiseks. Lisateavet tühja väärtuse ja muude DAX-i andmetüüpide kohta leiate teemast Andmemudelite andmetüübid.