Office
Conectare

Contextul în formulele DAX

Notă:  Dorim să vă oferim cel mai recent conținut de ajutor, cât mai rapid posibil, în limba dvs. Această pagină a fost tradusă automatizat și poate conține erori gramaticale sau inexactități. Scopul nostru este ca acest conținut să vă fie util. Vă rugăm să ne spuneți dacă informațiile v-au fost utile, în partea de jos a acestei pagini. Aici se află articolul în limba engleză , ca să îl puteți consulta cu ușurință.

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 tipuri diferite de context: context de rând, contextul de interogare și contextul de filtrare. Acesta explică cum contextul este evaluată pentru formule în coloanele calculate și în 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, contextul de interogare și contextul de filtrare.

Contextul de rând poate fi considerat ca "rândul curent." Dacă ați creat o coloană calculată, în contextul de rând este formată din valorile din fiecare rând individuale și valorile din coloanele care sunt legate la rândul curent. De asemenea, există unele funcții (funcția EARLIER și funcția EARLIEST) care obține valoarea din rândul curent, apoi utilizați valoarea respectivă în timp ce efectuează o operație peste un tabel întreg.

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 coloană.

Contextul de filtrare este set de valori permise în fiecare coloană, bazat pe filtrare restricțiile care au fost aplicate la rândul sau care sunt definite de expresii de filtru din formulă.

Începutul paginii

Contextul de rând

Dacă creați o formulă într-o coloană calculată, contextul de rând pentru acea formulă include valorile din toate coloanele din rândul curent. Dacă tabelul este corelată cu un alt tabel, conținutul include, de asemenea, toate valorile din acel tabel în alte care sunt legate la 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 ordonate 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 filtru restricțiile set de valori permise într-o coloană sau un tabel, utilizând argumentele la o formulă. Contextul de filtrare se aplică în partea de sus alte contexte, cum ar fi contextul de rând sau contextul 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 mai multe informații despre modul de creare a filtrelor în cadrul formulelor, consultați secțiunea Funcțiile de filtrare (DAX).

Pentru un exemplu de filtre pot fi eliminate pentru a crea totalurile generale, consultați funcția ALL.

Pentru exemple despre 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ă sunteți familiarizat concepte de date relaționale, vă recomandăm să vă 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ă sunt crearea unui 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 cu numele de stocare, 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ânduri necompletate care sunt adăugate la găzdui membrului necunoscut. Valoare necompletată este o valoare speciale care se utilizează pentru a reprezenta valori nule, a șirurilor goale și a altor valori lipsă. Pentru mai multe informații despre valoare necompletată, cât și alte tipuri de date DAX, consultați tipuri de date din modelele de date.

Începutul paginii

Extindeți-vă competențele Office
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.

×