Only() returnerar ett värde om det finns ett, och endast ett, möjligt resultat från aggregerade data. Till exempel returnerar en sökning efter den enda produkten med styckpriset =9 NULL om fler än en produkt har styckpriset 9.
Det uttryck eller fält som innehåller de data som ska mätas.
SetExpression
Som standard kommer aggregeringsfunktionen att aggregera över den uppsättning möjliga poster som definierats av urvalet. En alternativ uppsättning poster kan definieras med ett uttryck för set-analys.
TOTAL
Om ordet TOTAL står före funktionsargumenten görs beräkningen över alla valbara värden givet de aktuella valen, och inte bara sådana som rör det aktuella dimensionsvärdet, det vill säga att diagramdimensionerna ignoreras.
Genom att använda TOTAL [<fld {.fld}>], där kvalificeraren TOTAL följs av en lista med ett eller flera fältnamn som en delmängd av diagramdimensionens variabler, skapar du en delmängd av de totala möjliga värdena.
Ladda data och öppna ett ark. Skapa en ny tabell med följande mått:
=Only({<UnitPrice={9}>} Product), för att beräkna den enda Product som har ett UnitPrice på 9.
=Only({<Product={DD}>} Customer), för att beräkna den enda Customer som säljer en Product som heter DD.
=Only({<UnitPrice={20}>} UnitSales), för att beräkna antalet UnitSales där UnitPrice är 20.
=Only({<UnitPrice={15}>} UnitSales), för att beräkna värdena på UnitSales där UnitPrice = 15.
Results table
Only({<UnitPrice={9}>} Product)
Only({<Product={DD}>} Customer)
Only({<UnitPrice={20}>} UnitSales)
Only({<UnitPrice={15}>} UnitSales)
BB
Betacab
2
-
I detta exempel ska du observera följande:
Den första kolumnen returnerar värdet BB eftersom detta är den enda Product som har ett UnitPrice på 9.
Betacab, eftersom det är den enda Customer som säljer en Product som heter DD.
Den tredje kolumnen returnerar 2 eftersom detta är det enda värdet för UnitSales där UnitPrice = 20.
Den fjärde kolumnen returnerar NULL eftersom det inte finns något enda resultat där UnitPrice = 15. I denna datauppsättning finns det två värden för UnitSales där UnitPrice =15.
Exempel – enda scenario
Översikt
En datauppsättning innehåller produktförsäljning per period. Företaget vill fastställa om en produkt säljs i en enda butik eller i flera butiker.
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning som läses in i en datatabell som heter Example.
Följande fält i datatabellen:
Date
RecordID
StoreProduct
Sales
Laddningsskript
Example:
Load * inline [
Date, RecordID, StoreProduct, Sales, Store
2024-01-01, 1, Apple, 100, A
2024-01-15, 2, Banana, 80, B
2024-01-30, 3, Carrot, 50, C
2024-02-05, 4, Apple, 120, A
2024-02-20, 5, Banana, 90, B
2024-02-28, 6, Carrot, 60, D
2024-03-10, 7, Apple, 110, A
2024-03-22, 8, Banana, 85, B
2024-03-31, 9, Carrot, 55, C
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:
StoreProduct
Skapa följande mått:
=Only(Store), för att beräkna den unika butik där produkten säljs.
=If(IsNull(Only(Store)), 'Multiple Stores', 'Single Store'), för att beräkna om produkten säljs i en enda butik eller i flera butiker.
=Sum(Sales), för att beräkna den totala produktförsäljningen.
Resultatet visar att Apples och Bananas endast säljs i en enda butik medan Carrots säljs i flera butiker.
Exempel – avancerat scenario för att skapa en tabell med poster för en enskild månad
Översikt
I detta exempel används funktionen Only för att visa en tabell med poster rad för rad för en enskild månad. För att uppnå detta används set-analys för att ringa in önskad uppsättning av poster. Uppsättningsanalys kräver minst en åtgärd, men eftersom vi faktiskt inte behöver aggregera postuppsättningen kan vi effektivt använda aggregeringsfunktionen Only för att hysa uppsättningsanalysens omfattning.
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning som läses in i en datatabell som heter Example.
En tidigare load-sats som härleder fältet MonthYear från fältet Date genom att trunkera dagen i månaden, använda funktionen MonthStart och returnera en datumrepresentation av den 1:a i varje månad. Detta resultat levereras till funktionen Date för att ställa in visningsformatet till MMM YY, t.ex. Jan 24.
Följande fält i datatabellen:
Date
RecordID
StoreProduct
Sales
Store
Laddningsskript
Example:
Load
*,
date(MonthStart (Date),'MMM YY') AS MonthYear
inline [
Date, RecordID, StoreProduct, Sales, Store
2024-01-01, 1, Apple, 100, A
2024-01-15, 2, Banana, 80, B
2024-01-30, 3, Carrot, 50, C
2024-02-05, 4, Apple, 120, A
2024-02-20, 5, Banana, 90, B
2024-02-28, 6, Carrot, 60, D
2024-03-10, 7, Apple, 110, A
2024-03-22, 8, Banana, 85, B
2024-03-31, 9, Carrot, 55, C
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
MonthYear
RecordID
Date
StoreProduct
Store
Skapa följande mått:
=Only({$<MonthYear={'$(=MaxString(MonthYear))'}>} Sales), för att utvärdera värdet Sales och endast returnera dem där MonthYear är det senaste (mest aktuella) MonthYear som finns tillgänglig, baserat på de aktuella valen i tabellen. Dollarteckenexpansionen ($) utför en in-line-beräkning med hjälp av funktionen MaxString, $(=MaxString(MonthYear)), som returnerar textrepresentationen av det senaste MonthYear-värdet.
Anteckning om informationAtt försöka filtrera MonthYear baserat på den numeriska representationen, t.ex. genom att använda funktionen Max , Max(MonthYear), skulle inte ge något resultat. Set-analys tillämpar filterval som endast baseras på textrepresentationen av en dubbel datatyp; en datatyp med en numerisk representation och en textrepresentation, t.ex. Date.
Utdata från funktionen Only genererar en tabell med poster som enligt standard presenterar försäljningsdata från det senaste, eller mest aktuella, MonthYear som finns tillgängligt i uppgifterna. Om du väljer en tidigare månad i kolumnen MonthYear, t.ex. Feb 24, visas det senaste försäljningsvärdet för den månaden.
Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!