Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
I Microsoft SQL Server SQL Server Analysis Services kan ett MDX-skript (Multidimensional Expressions) gälla för hela kuben, eller för specifika delar av kuben, vid specifika punkter inom körningen av skriptet. MDX-skriptet kan använda en metod i flera lager för beräkningar i en kub med hjälp av beräkningspass.
Anmärkning
För mer information om hur beräkningspasseringar kan påverka beräkningar, se Understanding Pass Order and Solve Order (MDX).
Om du vill styra beräkningspasset, omfånget och kontexten i ett MDX-skript använder du specifikt CACULATE-instruktionen, den här funktionen och SCOPE-instruktionen.
Använda CALCULATE-instruktionen
CALCULATE-instruktionen fyller varje cell i kuben med aggregerade data. Standard-MDX-skriptet har till exempel en enda CALCULATE-instruktion i början av skriptet.
Mer information om syntaxen för CALCULATE-instruktionen finns i CALCULATE-instruktionen (MDX).
Anmärkning
Om skriptet innehåller en SCOPE-instruktion som innehåller en CALCULATE-instruktion utvärderar MDX CALCULATE-instruktionen inom kontexten för underdokumentet som definieras av SCOPE-instruktionen, inte mot hela kuben.
Använda den här funktionen
Med den här funktionen kan du hämta den aktuella subkuben i ett MDX-skript. Du kan använda denna funktion för att snabbt ange värdet för celler i den aktuella underkub till ett MDX-uttryck. Du använder ofta denna funktion tillsammans med SCOPE-instruktionen för att ändra innehållet i en specifik subkub under en specifik beräkningspass.
Anmärkning
Om skriptet innehåller en SCOPE-instruktion som innehåller en Den här funktionen utvärderar MDX den här funktionen inom kontexten för underdokumentet som definieras av SCOPE-instruktionen, inte mot hela kuben.
Det här funktionsexemplet
Följande MDX-skriptkommandoexempel använder denna This-funktionen för att öka värdet för måttet Amount i gruppen Ekonomimått för exempelkuben Adventure Works DW Multidimensional 2012 med 10 % för de underordnade medlemmarna till Redmond-medlemmen i kunddimensionen.
/* This SCOPE statement defines the current subcube */
SCOPE([Customer].&[Redmond].MEMBERS,
[Measures].[Amount], *);
/* This expression sets the value of the Amount measure */
THIS = [Measures].[Amount] * 1.1;
END SCOPE;
Mer information om syntaxen för den här funktionen finns i Detta (MDX).
Använda SCOPE-uttalande
SCOPE-instruktionen definierar den aktuella subkuben och anger omfånget för andra MDX-uttryck och -instruktioner inom ett MDX-skript. MDX utvärderar dessa andra MDX-uttryck och satser, inklusive This-funktionen och CALCULATE-instruktionen, i kontexten för subkuben.
En SCOPE-instruktion är dynamisk, men inte iterativ till sin natur. Uttrycken som finns i ett SCOPE-uttryck körs en gång, men själva subkuben kan bestämmas dynamiskt. Du har till exempel en kub med namnet SampleCube. Mot SampleCube-kuben använder du följande SCOPE-instruktion för att definiera en underkub som definierar kontexten som ALLMEMBERS inom måttdimensionen.
SCOPE([Measures].ALLMEMBERS);
THIS = [Measures].ALLMEMBERS.COUNT;
END SCOPE;
Instruktioner och uttryck i den här SCOPE-instruktionen körs en gång.
Nu kör en företagsanvändare följande MDX-fråga som innehåller ett mått med namnet ExistingMeasure mot SampleCube-kuben:
WITH MEMBER [Measures].[NewMeasure] AS '1'
SELECT
[Measures].ALLMEMBERS ON COLUMNS,
[Customer].DEFAULTMEMBER ON ROWS
FROM
[SampleCube]
Celluppsättningen som returneras från frågan liknar utdata som visas i följande tabell.
| [ExistingMeasure] | [NyMätning] | |
|---|---|---|
| [Kund].[Alla] | 2 | 2 |
Om du tittar på den returnerade celluppsättningen ser du hur värdet ExistingMeasure, som ingår i SCOPE-instruktionen i MDX-skriptet, uppdateras dynamiskt efter att måttet NewMeasure har definierats.
En SCOPE-instruktion kan kapslas i en annan SCOPE-instruktion. Men eftersom SCOPE-instruktionen inte är iterativ är det primära syftet med att kapsla SCOPE-instruktioner att ytterligare dela upp en undergrupp för särskild behandling.
Exempel på SCOPE-utlåtande
I följande MDX-skriptexempel används en SCOPE-instruktion för att ange värdet för måttet Amount i gruppen Ekonomimått i exempelkuben Adventure Works DW Multidimensional 2012 till ett värde som är 10% högre för barnen till Redmond-medlemmen i kunddimensionen. En annan SCOPE-instruktion ändrar dock underkubet till att inkludera måttet Amount för barnen till kalenderåret 2002. Slutligen aggregeras måttet Amount endast för underkuben, som lämnar de aggregerade värdena för andra kalenderår oförändrade.
/* Calculate the entire cube first. */
CALCULATE;
/* This SCOPE statement defines the current subcube */
SCOPE([Customer].&[Redmond].MEMBERS,
[Measures].[Amount], *);
/* This expression sets the value of the Amount measure */
THIS = [Measures].[Amount] * 1.1;
END SCOPE;
Mer information om syntaxen för SCOPE-instruktionen finns i SCOPE-instruktionen (MDX).
Se även
MDX-språkreferens (MDX)
Det grundläggande MDX-skriptet (MDX)
Grunderna för MDX-frågor (Analysis Services)