ALL
Vrátí všechny řádky v tabulce nebo všechny hodnoty ve sloupci a ignoruje přitom všechny použité filtry. Tato funkce je užitečná pro mazání filtrů a vytváření výpočtů na všech řádcích v tabulce.
Syntaxe
ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )
Parametry
Pojem | Definice |
---|---|
tabulka | Tabulka, ze které chcete filtry vymazat |
sloupec | Sloupec, ze kterého chcete filtry vymazat |
Argument funkce ALL musí být buď odkaz na základní tabulku, nebo odkaz na základní sloupec. S funkcí ALL se nedají používat výrazy tabulky ani sloupce.
Vrácená hodnota
Tabulka nebo sloupec s odebranými filtry
Poznámky
Tato funkce se nepoužívá samostatně, ale slouží jako přechodová funkce, kterou můžete použít ke změně sady výsledků, s kterými se provádí jiné výpočty.
Normální chování u výrazů DAX obsahujících funkci ALL() je takové, že budou ignorovány jakékoli použité filtry. Existují ale případy, kdy tomu tak není. Příčinou je technologie DAX označovaná jako auto-exist, která optimalizuje filtrování za účelem snížení množství zpracování potřebného pro určité dotazy DAX. Příkladem, kdy technologie auto-exist a funkce ALL () poskytnou neočekávané výsledky, je situace, když se filtruje na dvou nebo více sloupcích stejné tabulky (například při použití průřezů) a na této stejné tabulce existuje míra, která používá funkci ALL(). Technologie auto-exist v tomto případě sloučí více filtrů do jednoho a bude filtrovat jenom na existujících kombinacích hodnot. Z důvodu tohoto sloučení se míra vypočítá na základě existujících kombinací hodnot a výsledek bude založený na filtrovaných hodnotách místo na všech hodnotách, jak bychom očekávali. Další informace o technologii auto-exist a jejím vlivu na výpočty najdete v článku Alberta Ferrariho (MVP Microsoftu) Understanding DAX Auto-Exist na webu sql.bi.com.
Následující tabulka popisuje, jak můžete funkce ALL a ALLEXCEPT použít v různých scénářích.
Funkce a použití Popis ALL() Odebere všude všechny filtry. Funkci ALL() jde použít jen k vymazání filtrů, ale nikoli k vrácení tabulky. ALL(Tabulka) Odebere všechny filtry z určené tabulky. V důsledku toho funkce ALL(Tabulka) vrátí všechny hodnoty v tabulce a odebere všechny filtry z kontextu, které by se jinak mohly použít. Tato funkce je užitečná, pokud pracujete s mnoha úrovněmi seskupení a chcete vytvořit výpočet, který vytvoří poměr agregované hodnoty k celkové hodnotě. První příklad ukazuje tento scénář. ALL (Sloupec[; Sloupec[; …]]) Odebere všechny filtry z určených sloupců v tabulce; všechny ostatní filtry u ostatních sloupců v tabulce zůstanou stále v platnosti. Všechny argumenty sloupců musí pocházet ze stejné tabulky. Varianta ALL(Sloupec) je užitečná, když chcete odebrat kontextové filtry pro jeden nebo více konkrétních sloupců a všechny ostatní kontextové filtry zachovat. Druhý a třetí příklad ukazují tento scénář. ALLEXCEPT(Tabulka; Sloupec1 [;Sloupec2]...) Odebere všechny kontextové filtry v tabulce s výjimkou filtrů, které jsou použity u zadaných sloupců. Toto je praktická funkce pro situace, kdy chcete odebrat filtry z mnoha, ale ne všech sloupců v tabulce. Když se tato funkce používá v počítaných sloupcích nebo v pravidlech zabezpečení na úrovni řádků (RLS), její využití v režimu DirectQuery se nepodporuje.
Příklad 1
Výpočet poměru prodeje v kategorii k celkovému prodeji
Předpokládejme, že chcete najít množství prodejů pro aktuální buňku v kontingenční tabulce vydělené celkovým prodejem pro všechny prodejce. Pokud chcete zajistit, aby jmenovatel byl stejný bez ohledu na to, jak by uživatel kontingenční tabulky mohl data filtrovat nebo seskupovat, definujete vzorec, který pomocí funkce ALL vytvoří správný celkový součet.
Následující tabulka obsahuje výsledky, když se pomocí vzorce zobrazeného v oddílu s kódem vytvoří nová míra All Reseller Sales Ratio. Pokud chcete vidět, jak to funguje, přidejte do oblasti Popisky řádků kontingenční tabulky pole CalendarYear a do oblasti Popisky sloupců přidejte pole ProductCategoryName. Pak přetáhněte míru All Reseller Sales Ratio do oblasti Hodnoty kontingenční tabulky. Jestli chcete zobrazit výsledky jako procenta, použijte k formátování čísla v procentech na buňky obsahující míru formátovací funkce Excelu.
Popisky řádků | Accessories | Bikes | Clothing | Components | Grand Total |
---|---|---|---|---|---|
2005 | 0,02 % | 9,10 % | 0,04 % | 0,75 % | 9,91 % |
2006 | 0,11 % | 24,71 % | 0,60 % | 4,48 % | 29,90 % |
2007 | 0,36 % | 31,71 % | 1,07 % | 6,79 % | 39,93 % |
2008 | 0,20 % | 16,95 % | 0,48 % | 2,63 % | 20,26 % |
Grand Total | 0,70 % | 82,47 % | 2,18 % | 14,65 % | 100,00 % |
Vzorec
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
Vzorec je konstruován takto:
Čitatel,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, je součtem hodnot v ResellerSales_USD[SalesAmount_USD] pro aktuální buňku v kontingenční tabulce s kontextovými filtry použitými na CalendarYear a ProductCategoryName.U jmenovatele začněte zadáním tabulky ResellerSales_USD a pomocí funkce ALL odeberte všechny kontextové filtry v tabulce.
Pak použijte funkci SUMX k sečtení hodnot ve sloupci ResellerSales_USD[SalesAmount_USD]. Jinými slovy, získáte součet ResellerSales_USD[SalesAmount_USD] pro prodeje všech prodejců.
Příklad 2
Výpočet poměru prodeje produktů k celkovému prodeji v aktuálním roce
Předpokládejme, že chcete vytvořit tabulku zobrazující procento prodejů porovnané během let pro každou kategorii produktů (ProductCategoryName). Pokud chcete získat procento za každý rok z každé hodnoty ProductCategoryName, je třeba vydělit součet prodejů pro konkrétní rok a kategorii produktů součtem prodejů pro stejnou kategorii produktů za všechny roky. Jinými slovy, chcete filtr zachovat pro ProductCategoryName, ale odebrat ho v roce při výpočtu jmenovatele procenta.
Následující tabulka obsahuje výsledky, když se pomocí vzorce zobrazeného v oddílu s kódem vytvoří nová míra Reseller Sales Year. Pokud chcete vidět, jak to funguje, přidejte do oblasti Popisky řádků kontingenční tabulky pole CalendarYear a do oblasti Popisky sloupců přidejte pole ProductCategoryName. Pokud chcete zobrazit výsledky jako procenta, použijte k formátování čísla v procentech na buňky obsahující míru Reseller Sales Year formátovací funkce Excelu.
Popisky řádků | Accessories | Bikes | Clothing | Components | Grand Total |
---|---|---|---|---|---|
2005 | 3,48 % | 11,03 % | 1,91 % | 5,12 % | 9,91 % |
2006 | 16,21 % | 29,96 % | 27,29 % | 30,59 % | 29,90 % |
2007 | 51,62 % | 38,45 % | 48,86 % | 46,36 % | 39,93 % |
2008 | 28,69 % | 20,56 % | 21,95 % | 17,92 % | 20,26 % |
Grand Total | 100,00 % | 100,00 % | 100,00 % | 100,00 % | 100,00 % |
Vzorec
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(DateTime[CalendarYear]))
Vzorec je konstruován takto:
Čitatel,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, je součtem hodnot v ResellerSales_USD[SalesAmount_USD] pro aktuální buňku v kontingenční tabulce s kontextovými filtry použitými ve sloupcích CalendarYear a ProductCategoryName.Pro jmenovatele odeberete existující filtr v CalendarYear pomocí funkce ALL(Sloupec). Tím se vypočítá součet pro zbývající řádky v tabulce ResellerSales_USD po použití existujících kontextových filtrů z popisků sloupců. Výsledkem je, že pro jmenovatele se součet vypočte podle vybraného sloupce ProductCategoryName (implicitní kontextový filtr) a pro všechny hodnoty v roce.
Příklad 3
Výpočet podílu kategorií produktů na celkovém prodeji za rok
Předpokládejme, že chcete vytvořit tabulku, která zobrazuje procento prodejů pro jednotlivé kategorie produktů, a to po jednotlivých letech. Pokud chcete pro každou kategorii produktů v určitém roce získat procentní podíl, musíte vypočítat součet prodejů pro danou kategorii produktů (ProductCategoryName) v roce n a potom výslednou hodnotu vydělit součtem prodejů za rok n ve všech kategoriích produktů. Jinými slovy, chcete filtr zachovat pro rok, ale odebrat ho ze sloupce ProductCategoryName při výpočtu jmenovatele procenta.
Následující tabulka obsahuje výsledky, když se pomocí vzorce zobrazeného v oddílu s kódem vytvoří nová míra Reseller Sales CategoryName. Pokud chcete vidět, jak to funguje, přidejte do oblasti Popisky řádků kontingenční tabulky pole CalendarYear a do oblasti Popisky sloupců přidejte pole ProductCategoryName. Pak přidejte novou míru do oblasti Hodnoty kontingenční tabulky. Jestli chcete zobrazit výsledky jako procenta, použijte k formátování čísla v procentech na buňky obsahující novou míru Reseller Sales CategoryName formátovací funkce Excelu.
Popisky řádků | Accessories | Bikes | Clothing | Components | Grand Total |
---|---|---|---|---|---|
2005 | 0,25 % | 91,76 % | 0,42 % | 7,57 % | 100,00 % |
2006 | 0,38 % | 82,64 % | 1,99 % | 14,99 % | 100,00 % |
2007 | 0,90 % | 79,42 % | 2,67 % | 17,01 % | 100,00 % |
2008 | 0,99 % | 83,69 % | 2,37 % | 12,96 % | 100,00 % |
Grand Total | 0,70 % | 82,47 % | 2,18 % | 14,65 % | 100,00 % |
Vzorec
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(ProductCategory[ProductCategoryName]))
Vzorec je konstruován takto:
Čitatel,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, je součtem hodnot v ResellerSales_USD[SalesAmount_USD] pro aktuální buňku v kontingenční tabulce s kontextovými filtry použitými na pole CalendarYear a ProductCategoryName.U jmenovatele použijete funkci ALL(Sloupec), kterou odeberete filtr pro ProductCategoryName a vypočítáte součet zbývajících řádků v tabulce ResellerSales_USD po použití existujících kontextových filtrů z popisků řádků. Výsledkem je, že pro jmenovatele se součet vypočte podle vybraného roku (implicitní kontextový filtr) a pro všechny hodnoty ProductCategoryName.