Contextul în formulele DAX

Important : Acest articol este tradus automat, consultați exonerarea de răspundere. Versiunea în limba engleză a acestui articol se poate găsi aici pentru referință.

Contextul vă permite să efectuați analize dinamice în care rezultatele unei formule se pot modifica pentru a reflecta selecția curentă de rânduri și celule și, de asemenea, toate datele corelate. Înțelegerea contextului și utilizarea acestuia în mod eficient sunt foarte importante pentru generarea de formule de înaltă performanță, de analize dinamice și pentru depanarea problemelor din formule.

Această secțiune definește diferitele tipuri de context: context de rând, context de interogare și context de filtrare. Aceasta explică modul în care este evaluat contextul pentru formulele din coloanele calculate și din rapoartele PivotTable.

Ultima parte a acestui articol furnizează linkuri către exemple detaliate care ilustrează modul în care rezultatele formulelor se modifică în funcție de context.

Înțelegerea contextului

Formulele din Power Pivot pot fi afectate de filtre aplicate într-un raport PivotTable, de relații între tabele și de filtre de utilizat în formule. Contextul este ceea ce face posibilă pentru a efectua analize dinamică. Înțelegerea contextului este important pentru construirea și pentru depanarea formulelor.

Există tipuri diferite de context: context de rând, context de interogare și context de filtrare.

Contextul de rând poate fi considerat drept „rândul curent”. Dacă ați creat o coloană calculată, contextul de rând este alcătuit din valorile din fiecare rând individual și valorile din coloanele care sunt corelate cu rândul curent. De asemenea, există anumite funcții (Funcția EARLIER și Funcția EARLIEST) care obțin o valoare din rândul curent, apoi utilizează valoarea respectivă la efectuarea unei operațiuni într-un întreg tabel.

Contextul de interogare se referă la subsetul de date care este creat în mod implicit pentru fiecare celulă dintr-un raport PivotTable, în funcție de anteturile de rând și de coloană.

Contextul de filtrare este setul de valori permis în fiecare coloană, pe baza restricțiilor de filtrare care au fost aplicate rândului sau care sunt definite de expresiile de filtrare din formulă.

Începutul paginii

Contextul de rând

În cazul în care creați o formulă într-o coloană calculată, contextul de rând pentru formula respectivă include valorile din toate coloanele din rândul curent. Dacă tabelul este corelat cu alt tabel, conținutul include, de asemenea, toate valorile din celălalt tabel care sunt corelate cu rândul curent.

De exemplu, să presupunem că puteți crea o coloană calculată, = [transport] + [taxe],

, care adaugă două coloane din același tabel. Această formulă se comportă precum formulele dintr-un tabel Excel, care face referire automat la valorile din același rând. Rețineți că tabelele sunt diferite de intervale: nu puteți face referire la o valoare din rândul de dinaintea rândului curent utilizând notația de interval și nu puteți face referire la nicio valoare arbitrară unică dintr-un tabel sau dintr-o celulă. Trebuie să lucrați întotdeauna cu tabele și coloane.

Contextul de rând urmărește automat relațiile dintre tabele pentru a determina ce rânduri din tabelele corelate sunt asociate rândului curent.

De exemplu, următoarea formulă utilizează funcția RELATED pentru a prelua o valoare de impozit dintr-un tabel corelat, în funcție de regiunea către care a fost livrată comanda. Valoarea de impozit este determinată prin utilizarea valorii pentru regiunea din tabelul curent, căutând regiunea din tabelul corelat, apoi obținând rata de impozit pentru regiunea respectivă din tabelul corelat.

= [Transport] + RELATED('Region'[TaxRate])

Această formulă, pur și simplu obține rata de impozit pentru regiunea curentă din tabelul Region. Nu trebuie să știți sau să specificați cheia care conectează tabelele.

Contextul mai multor rânduri

În plus, DAX include funcții care iterează calcule într-un tabel. Aceste funcții pot avea mai multe rânduri curente și mai multe contexte curente de rând. În termeni de programare, puteți crea formule care se execută recursiv peste o buclă internă și externă.

De exemplu, să presupunem că registrul de lucru conține un tabel de produse și un tabel de vânzări . Poate doriți să parcurgeți întregul tabel vânzări, care este completă a tranzacțiilor care implică mai multe produse, și să găsiți cea mai mare cantitate ordonat pentru fiecare produs din orice o singură tranzacție.

În Excel, acest calcul necesită o serie de rezumate intermediare care vor trebui să fie regenerate dacă datele se modifică. Dacă utilizați foarte mult aplicația Excel, este posibil să puteți genera formule matrice care vor efectua operațiunea. Alternativ, într-o bază de date relațională, puteți scrie subselecții imbricate.

Totuși, cu DAX puteți genera o formulă unică ce returnează valoarea corectă, iar rezultatele sunt actualizate automat ori de câte ori adăugați date la tabele.

=MAXX(Filter(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Pentru o prezentare detaliată a acestei formule, consultați secțiunea Funcția EARLIER.

Pe scurt, funcția EARLIER stochează contextul de rând din operațiunea care a precedat operațiunea curentă. Oricând, funcția stochează în memorie două seturi de context: un set de context reprezintă rândul curent pentru bucla internă a formulei, iar alt set de context reprezintă rândul curent pentru bucla externă a formulei. DAX alimentează automat valorile între cele două bucle, astfel încât să puteți crea agregate complexe.

Începutul paginii

Contextul de interogare

Contextul de interogare se referă la subsetul de date care se regăsi implicit pentru o formulă. Când fixați o măsură sau un alt câmp valoare într-o celulă dintr-un raport PivotTable, motorul Power Pivot examinează anteturile de rând și coloană, slicere și filtre de raport pentru a determina contextul. Apoi, Power Pivot efectuează calculele necesare pentru a popula fiecare celulă din raportul PivotTable. Setul de date care se regăsi este contextul de interogare pentru fiecare celulă.

Deoarece contextul se poate modifica în funcție de locul în care plasați formula, și rezultatele formulei se modifică în funcție de faptul dacă utilizați formula într-un raport PivotTable cu multe grupări și filtre sau într-o coloană calculată fără niciun filtru și context minim.

De exemplu, să presupunem că creați această formulă simplă care însumează valorile din coloana Profit din table:=SUM('Sales'[Profit]) de vânzări .

Dacă utilizați această formulă într-o coloană calculată din tabelul de vânzări , rezultatele pentru formula va fi la fel pentru tot tabelul, deoarece contextul de interogare pentru formula este întotdeauna întregul set de date din tabelul Sales . Rezultatele dvs va avea profitului pentru toate regiunile, toate produsele toate ani, etc.

Totuși, în general nu doriți să vedeți același rezultat de sute de ori, dar doriți în schimb să obțineți profitul pentru un anumit an, pentru o anumită țară sau regiune, pentru un anumit produs sau pentru oricare combinație între acestea, apoi doriți să obțineți un total general.

Într-un raport PivotTable, este simplu pentru a schimba contextul, adăugând sau eliminând anteturi de coloane și rânduri și adăugând sau eliminând slicere. Puteți crea o formulă asemănătoare cu cea mai sus, într-o măsură și apoi fixați-l într-un raport PivotTable. Ori de câte ori adăugați titlurile de rând sau coloană în raportul PivotTable, puteți schimba contextul de interogare în care se evaluează măsura. Tăiat și operațiuni de filtrare, de asemenea, afectează context. Prin urmare, aceeași formulă, utilizată într-un raport PivotTable, este evaluat într-un context de interogare diferite pentru fiecare celulă.

Începutul paginii

Contextul de filtrare

Contextul de filtrare este adăugat când specificați restricțiile de filtrare asupra setului de valori permise într-o coloană sau într-un tabel, utilizând argumente într-o formulă. Contextul de filtrare se aplică peste alte contexte, cum ar fi un context de rând sau un context de interogare.

De exemplu, un raport PivotTable calculează valorile pentru fiecare celulă bazat pe titlurile de rând și coloană, după cum este descris în secțiunea anterioară, în contextul de interogare. Cu toate acestea, măsuri sau coloane calculate pe care le adăugați la raportul PivotTable, puteți specifica expresii de filtru pentru a controla valorile care sunt utilizate de formula. Aveți posibilitatea să goliți, de asemenea, selectivă filtre pe anumite coloane.

Pentru informații suplimentare legate de modul de creare a filtrelor în cadrul formulelor, consultați secțiunea Funcțiile de filtrare (DAX).

Pentru un exemplu legat de modul în care filtrele pot fi șterse pentru a crea totaluri generale, consultați secțiunea Funcția ALL.

Pentru exemple legate de modul de ștergere selectivă și de aplicare a filtrelor în formule, consultați secțiunea Funcția ALLEXCEPT.

Prin urmare, trebuie să examinați definiția măsuri sau a formulelor utilizate într-un raport PivotTable, astfel încât puteți cunoaște contextul de filtrare la interpretarea rezultatelor formulelor.

Începutul paginii

Determinarea contextului în formule

Când creați o formulă, Power Pivot pentru Excel  verifică mai întâi sintaxa generală, apoi verifică numele coloanelor și tabelelor pe care le furnizați pentru posibilele coloane și tabele din contextul curent. Dacă Power Pivot nu poate găsi coloanele și tabelele specificate de formulă, veți primi o eroare.

Contextul este determinat așa cum se descrie în secțiunile anterioare prin utilizarea tabelelor disponibile în registrul de lucru, a tuturor relațiilor dintre tabele și a tuturor filtrelor care au fost aplicate.

De exemplu, dacă ați importat doar anumite date într-un nou tabel și nu ați aplicat niciun filtru, întregul set de coloane din tabel face parte din contextul curent. Dacă aveți mai multe tabele care sunt legate prin relații și lucrați într-un raport PivotTable care a fost filtrat prin adăugarea anteturilor de coloană și prin utilizarea slicerelor, contextul include tabelele corelate și toate filtrele aplicate pe date.

Contextul este un concept puternic care poate îngreuna, de asemenea, depanarea formulelor. Vă recomandăm să începeți cu formule și relații simple pentru a vedea cum funcționează contextul, apoi să începeți experimentarea cu formule simple în rapoartele PivotTable. Secțiunea următoare furnizează, de asemenea, anumite exemple a modului în care formulele utilizează diferite tipuri de context pentru a returna în mod dinamic rezultate.

Exemple de context în formule

  • Funcția RELATED extinde contextul rândului curent pentru a include valori într-o coloană corelată. Acest lucru vă permite să efectuați căutări. Exemplul din acest subiect ilustrează interacțiunea dintre filtrare și contextul de rând.

  • Funcția FILTER vă permite să specificați rândurile de inclus în contextul curent. Exemplele din acest subiect ilustrează, de asemenea, cum să încorporați filtre în alte funcții care efectuează agregări.

  • Funcția ALL setează contextul într-o formulă. O puteți utiliza pentru a suprascrie filtrele care sunt aplicate ca rezultat al contextului de interogare.

  • Funcția ALLEXCEPT vă permite să eliminați toate filtrele cu excepția celui pe care îl specificați. Ambele subiecte includ exemple care vă îndrumă în generarea formulelor și în înțelegerea contextelor complexe.

  • Funcțiile EARLIER și EARLIEST vă permit să generați bucle în tabele prin efectuarea calculelor în timp ce face referire la o valoare dintr-o buclă internă. Dacă sunteți familiarizat cu conceptul de recursivitate și cu buclele interne și externe, veți aprecia puterea pe care o oferă funcțiile EARLIER și EARLIEST. Dacă nu sunteți familiarizat cu aceste concepte, trebuie să parcurgeți cu atenție pașii din exemplu pentru a vedea modul în care contextele interne și externe sunt utilizate în calcule.

Începutul paginii

Integritatea referențială

Această secțiune prezintă anumite concepte complexe legate de valorile lipsă din tabelele Power Pivot care sunt conectate prin relații. Această secțiune poate fi utilă pentru dvs. dacă aveți registre de lucru cu mai multe tabele și formule complexe și dacă doriți să înțelegeți rezultatele.

Dacă nu sunteți familiarizat cu aceste concepte de date relaționale, vă recomandăm să citiți mai întâi subiectul introductiv Prezentarea generală a relațiilor.

Integritatea referențială și relațiile Power Pivot

Power Pivot nu necesită impunerea integrității referențiale între două tabele pentru a defini o relație validă.  În schimb, un rând necompletat este creat la capătul „unu” din fiecare relație unu-la-mai mulți și este utilizat pentru a utiliza toate rândurile care nu se potrivesc din tabelul corelat. Se comportă exact ca o unire externă SQL.

În rapoartele PivotTable, dacă grupați date după o parte a relației, toate datele care nu se potrivesc din partea mai mulți a relației sunt grupate împreună și vor fi incluse în totaluri cu un titlu de rând necompletat. Titlul necompletat este aproximativ echivalent cu „membrul necunoscut”.

Înțelegerea membrului necunoscut

Conceptul de membru necunoscut vă este probabil familiar dacă ați lucrat cu sisteme de baze de date multidimensionale, cum ar fi SQL Server Analysis Services. Dacă termenul este nou pentru dvs., următorul exemplu explică ce este membrul necunoscut și cum afectează acesta calculele.

Să presupunem că creați un calcul care însumează vânzările lunare pentru fiecare magazin, dar o coloană din tabelul Sales lipsește o valoare pentru numele de stocare. Având în vedere că tabelele pentru stocarea și vânzări sunt conectate după nume magazin, ceea ce ați aștepta să apară în formulă? Cum ar trebui să raportul PivotTable grupați sau să afișați cifre de vânzări, care nu sunt legate la un magazin existente?

Această problemă este una obișnuită în depozitele de date, în care tabelele mari de date primare trebuie să fie corelate în mod logic cu tabelele de dimensiuni ce conțin informații despre magazine, regiuni și alte atribute utilizate pentru clasificarea și calcularea datelor primare. Pentru a rezolva problema, toate datele primare noi care nu sunt corelate cu o entitate existentă sunt atribuite temporar membrului necunoscut. De aceea faptele primare necorelate vor apărea grupate într-un raport PivotTable sunt un titlu necompletat.

Tratarea valorilor necompletate în comparație cu rândul necompletat

Valorile necompletate sunt diferite de rândurile necompletate care sunt adăugate pentru a include membrul necunoscut. Valoarea necompletată este o valoare specială utilizată pentru a reprezenta valorile null, șirurile goale și alte valori lipsă. Pentru informații suplimentare legate de valoarea necompletată, precum și de alte tipuri de date DAX, consultați secțiunea Tipurile de date în modelele de date.

Începutul paginii

Notă : Exonerare de răspundere pentru traducere automată: Acest articol a fost tradus de un sistem computerizat, fără intervenție umană. Microsoft oferă aceste traduceri automate pentru a ajuta utilizatorii vorbitori de alte limbi decât engleza să beneficieze de conținutul despre produsele, serviciile și tehnologiile Microsoft. Pentru că articolul a fost tradus de un computer, poate conține erori de vocabular, sintaxă sau gramatică.

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă utilizatorilor Office Insider

Au fost utile aceste informații?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×