Datu filtrēšana DAX formulās

Attiecas uz
Excel pakalpojumam Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Šajā sadaļā ir aprakstīts, kā izveidot filtrus datu analīzes izteiksmju (Data Analysis Expressions — DAX) formulās. Varat izveidot filtrus formulās, lai ierobežotu aprēķinos izmantojamās avota datu vērtības. To var izdarīt, norādot tabulu kā ievadi formulā un pēc tam definējot filtra izteiksmi. Jūsu norādītā filtra izteiksme tiek izmantota datu vaicājumam un atgriež tikai avota datu apakškopu. Filtrs tiek lietots dinamiski katru reizi, kad atjaunināt formulas rezultātus atkarībā no pašreizējā datu konteksta.

Tēmas šajā rakstā

Filtra izveide formulā izmantotai tabulai

Varat lietot filtrus formulās, kurās ievade tiek izmantota tabula. Tā vietā, lai ievadītu tabulas nosaukumu, izmantojiet funkciju FILTER, lai definētu rindu apakškopu no norādītās tabulas. Šī apakškopa tiek nodota citai funkcijai, piemēram, pielāgotu apkopojumu izpildei.

Piemēram, pieņemsim, ka jums ir datu tabula, kurā ir pasūtījumu informācija par tālākpārdevējiem, un jūs vēlaties aprēķināt, cik daudz katrs tālākpārdevējs ir pārdevis. Taču jūs vēlaties rādīt pārdošanas apjomu tikai tiem tālākpārdevējiem, kuri pārdevuši vairākas jūsu augstākās vērtības produktu vienības. Šajā formulā, kuras pamatā ir DAX parauga darbgrāmata, ir redzams viens piemērs tam, kā var izveidot šo aprēķinu, izmantojot filtru:

=SUMX(
     FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Daudzums] > 5 &&
     "ResellerSales_USD'[ProductStandardCost_USD] > 100),
     'ResellerSales_USD'[SalesAmt]
     )

  • Formulas pirmajā daļā ir norādīta viena no Power Pivot apkopošanas funkcijām, kura izmanto tabulu kā argumentu. Funkcija SUMX aprēķina summu virs tabulas.

  • Formulas otrajā daļā norādītsSUMX, FILTER(table, expression),kuri dati jāizmanto. SUMX Nepieciešama tabula vai izteiksme, kuras rezultātā tiek izveidota tabula. Šeit jūs neizmantojat FILTER visus tabulas datus, bet izmantojiet funkciju, lai norādītu, kuras tabulas rindas tiek izmantotas.
    Filtra izteiksmei ir divas daļas: pirmajai daļai ir tās tabulas nosaukums, kurai tiek lietots filtrs. Otrajā daļā definēta izteiksme, kas jāizmanto kā filtra nosacījums. Šajā gadījumā jūs filtrējat tālākpārdevējus, kas pārdeva vairāk nekā 5 vienības, un produktus, kas maksā vairāk nekā 100 USD. Operators && ir loģisks operators AND, kas norāda, ka abām nosacījuma daļām ir jāatbilst ai, lai rinda piederētu filtrētajai apakškopai.

  • Trešā formulas daļa norāda funkcijai SUMX , kuras vērtības ir jāsummē. Šajā gadījumā tiek izmantota tikai pārdošanas summa.
    Ņemiet vērā, ka tādas funkcijas kā FILTER, kas atgriež tabulu, nekad neatgriež tabulu vai rindas tieši, bet vienmēr ir iegultas citā funkcijā. Papildinformāciju par funkciju FILTER un citām funkcijām, kas tiek izmantotas filtrēšanai, kā arī citus piemērus, skatiet sadaļā Filtra funkcijas (DAX).

    Piezīme

    Filtra izteiksmi ietekmē konteksts, kurā tā tiek izmantota. Piemēram, ja mērā izmantojat filtru un mērs tiek izmantots rakurstabulā vai rakursdiagrammā, atgriezto datu apakškopu var ietekmēt papildu filtri vai datu griezumi, kurus lietotājs ir lietojis rakurstabulā. Papildinformāciju par kontekstu skatiet sadaļā Konteksts DAX formulās.

Filtri, kas noņem dublikātus

Papildus noteiktu vērtību filtrēšanai varat atgriezt unikālu vērtību kopu no citas tabulas vai kolonnas. Tas var noderēt, ja vēlaties saskaitīt unikālo vērtību skaitu kolonnā vai izmantot unikālo vērtību sarakstu citām operācijām. DAX nodrošina divas funkcijas noteiktu vērtību atgriešanai: funkciju DISTINCT un funkciju VALUES.

  • Funkcija DISTINCT pārbauda vienu kolonnu, ko norādāt kā funkcijas argumentu, un atgriež jaunu kolonnu, kurā ir tikai atšķirīgās vērtības.
  • Funkcija VALUES atgriež ne tikai unikālo vērtību sarakstu, bet atgriež arī nezināmo elementu. Tas ir noderīgi, ja tiek izmantotas vērtības no divām tabulām, kuras ir savienotas ar relāciju, un vienā tabulā trūkst vērtības, bet otrā tabulā. Papildinformāciju par nezināmo dalībnieku skatiet sadaļā Konteksts DAX formulās.

Abas šīs funkcijas atgriež veselu vērtību kolonnu; Tāpēc funkcijas tiek izmantotas, lai iegūtu vērtību sarakstu, kas pēc tam tiek nodots citai funkcijai. Piemēram, varat izmantot šo formulu, lai iegūtu sarakstu ar atsevišķiem produktiem, ko pārdod konkrēts tālākpārdevējs, izmantojot unikālo produkta atslēgu, un pēc tam saskaitītu produktus šajā sarakstā, izmantojot funkciju COUNTROWS:

=COUNTROWS(DISTINCT('ResellerSales_USD'[Produkta_atslēga]))

Uz lapas sākumu

Kā konteksts ietekmē filtrus

Kad DAX formulu pievienojat rakurstabulai vai rakursdiagrammai, formulas rezultātus var ietekmēt konteksts. Ja strādājat ar Power Pivot tabulu, konteksts ir pašreizējā rinda un tās vērtības. Ja strādājat ar rakurstabulu vai rakursdiagrammu, konteksts nozīmē datu kopu vai apakškopu, kas ir definēta, izmantojot tādas darbības kā dalīšana grupēšanā vai filtrēšana. Rakurstabulas vai rakursdiagrammas noformējums arī nosaka savu kontekstu. Piemēram, ja veidojat rakurstabulu, kurā tirdzniecības rādītāji tiek grupēti pēc reģiona un gada, rakurstabulā tiek rādīti tikai dati, kas attiecas uz šiem reģioniem un gadiem. Tāpēc visi rakurstabulai pievienotie mēri tiek aprēķināti, ņemot vērā kolonnu un rindu virsrakstus, kā arī visus filtrus mēru formulā.

Papildinformāciju skatiet sadaļā Konteksts DAX formulās.

Uz lapas sākumu

Filtru noņemšana

Strādājot ar sarežģītām formulām, iespējams, vēlaties precīzi zināt, kādi ir pašreizējie filtri, vai arī modificēt formulas filtra daļu. DAX nodrošina vairākas funkcijas, kuras ļauj noņemt filtrus un kontrolēt, kuras kolonnas tiek paturētas kā daļa no pašreizējā filtra konteksta. Šajā sadaļā ir sniegts pārskats par to, kā šīs funkcijas ietekmē rezultātus formulā.

Visu filtru ignorēšana, izmantojot funkciju ALL

Šo funkciju var izmantot ALL , lai ignorētu jebkurus iepriekš lietotos filtrus un atgrieztu visas tabulas rindas tai funkcijai, kas veic apkopošanas vai citu darbību. Ja tabulas vietā kā argumentus ALLALL izmantojat vienu vai vairākas kolonnas, funkcija atgriež visas rindas, ignorējot konteksta filtrus.

Piezīme

Ja pārzināt relāciju datu bāzu terminoloģiju, varat iedomāties ALL , ka tiek ģenerēts visu tabulu dabiskais kreisais ārējais savienojums.

Piemēram, pieņemsim, ka jums ir tabulas Pārdošana un Produkti un vēlaties izveidot formulu, kas aprēķinās pašreizējā produkta pārdošanas kopsummu, kas dalīta ar visu produktu pārdošanas apjomu. Ir jāņem vērā, ka gadījumā, ja formula tiek izmantota mērā, rakurstabulas lietotājs, iespējams, izmanto datu griezumu, lai filtrētu konkrētu produktu ar produkta nosaukumu rindās. Tāpēc, lai iegūtu saucēja patieso vērtību neatkarīgi no filtriem vai datu griezumiem, ir jāpievieno funkcija ALL, lai ignorētu visus filtrus. Šī formula ir viens piemērs tam, kā izmantot ALL, lai ignorētu iepriekšējo filtru efektus:

=SUM(Pārdošana[Summa])/SUMX(Pārdošana[Summa], FILTER(Pārdošana, VISI(Produkti)))

  • Formulas pirmā daļa SUM (Sales[Amount]) aprēķina skaitītāju.
  • Summējot tiek ņemts vērā pašreizējais konteksts, kas nozīmē, ka, ja formulu pievienojat aprēķinātajai kolonnai, tiek lietots rindas konteksts, un, ja formulu pievienojat rakurstabulā kā mēru, tiek lietoti visi rakurstabulā (filtra kontekstā) lietotie filtri.
  • Formulas otrajā daļā tiek aprēķināts saucējs. Funkcija ALL ignorē visus filtrus, kas varētu tikt lietoti Products tabulā.

Papildinformāciju, tostarp detalizētus piemērus, skatiet sadaļā Funkcija ALL.

Īpašu filtru ignorēšana, izmantojot funkciju ALLEXCEPT

Funkcija ALLEXCEPT arī ignorē esošos filtrus, bet varat norādīt, ka daži esošie filtri ir jāsaglabā. Kolonnas, kuras nosaucat kā funkcijas ALLEXCEPT argumentus, norāda, kuras kolonnas joprojām tiks filtrētas. Ja vēlaties ignorēt lielākās daļas kolonnu filtrus, bet ne visu, funkcija ALLEXCEPT ir ērtāka par ALL. Funkcija ALLEXCEPT ir īpaši noderīga, ja veidojat rakurstabulas, kuras var būt filtrētas pēc daudzām dažādām kolonnām, un vēlaties kontrolēt formulā izmantotās vērtības. Papildinformāciju, tostarp detalizētu piemēru par ALLEXCEPT izmantošanu rakurstabulā, skatiet sadaļā Funkcija ALLEXCEPTION.

Uz lapas sākumu