Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
No Microsoft SQL Server SQL Server Analysis Services, um script de Expressões Multidimensionais (MDX) pode aplicar-se a todo o cubo, ou a partes específicas do cubo, em pontos específicos da execução do script. O script MDX pode adotar uma abordagem em camadas para os cálculos dentro de um cubo através do uso de passes de cálculo.
Observação
Para mais informações sobre como as passagens de cálculo podem afetar os cálculos, consulte Compreender a Ordem de Passagem e a Ordem de Resolução dos Problemas (MDX).
Para controlar o passe de cálculo, o âmbito e o contexto dentro de um script MDX, utiliza-se especificamente a instrução CACULATE, a função This e a instrução SCOPO.
Usando a Declaração CALCULATE
A instrução CALCULATE preenche cada célula do cubo com dados agregados. Por exemplo, o script MDX padrão tem uma única instrução CALCULATE no início do script.
Para mais informações sobre a sintaxe da instrução CALCULE, consulte a Declaração CALCULATE (MDX).
Observação
Se o script contiver uma instrução SCOPE que contém uma instrução CALCULATE, o MDX avalia a instrução CALCULATE dentro do contexto do subcubo definido pela instrução SCOPE, não contra o cubo inteiro.
Usando esta função
A função This permite-lhe recuperar o subcubo atual dentro de um script MDX. Pode usar esta função para definir rapidamente o valor das células dentro do subcubo atual para uma expressão MDX. Costuma usar a função This em conjunto com a instrução SCOPE para alterar o conteúdo de um subcubo específico durante uma passagem de cálculo específica.
Observação
Se o script contiver uma instrução SCOPE que contém uma função This , MDX avalia a função This no contexto do subcubo definido pela instrução SCOPO, e não contra todo o cubo.
Este Exemplo de Função
O seguinte exemplo de comando de script MDX utiliza a função Esta para aumentar em 10% o valor da medida Montante, no grupo de medidas Finanças, do cubo de exemplo Adventure Works DW Multidimensional 2012, para os filhos do membro Redmond na dimensão Cliente:
/* 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;
Para mais informações sobre a sintaxe desta função, veja This (MDX).
Uso da Declaração SCOPE
A instrução SCOPE define o subcubo atual que contém e especifica o âmbito de outras expressões e instruções MDX dentro de um script MDX. O MDX avalia estas outras expressões e instruções MDX, incluindo a função This e a instrução CALCULAR, no contexto do subcubo.
Uma declaração SCOPE é dinâmica, mas não iterativa por natureza. As instruções contidas numa instrução SCOPE executam-se uma vez, mas o próprio subcubo pode ser determinado dinamicamente. Por exemplo, tens um cubo chamado SampleCube. Em relação ao cubo SampleCube, aplica-se a seguinte instrução SCOPE para definir um subcubo que estabelece o contexto como todos os membros dentro da dimensão das Medidas.
SCOPE([Measures].ALLMEMBERS);
THIS = [Measures].ALLMEMBERS.COUNT;
END SCOPE;
As instruções e expressões dentro desta declaração SCOPE são executadas uma vez.
Agora, um utilizador empresarial executa a seguinte consulta MDX que contém uma medida, chamada ExistingMeasure, contra o cubo SampleCube:
WITH MEMBER [Measures].[NewMeasure] AS '1'
SELECT
[Measures].ALLMEMBERS ON COLUMNS,
[Customer].DEFAULTMEMBER ON ROWS
FROM
[SampleCube]
O cellset retornado da consulta assemelha-se ao resultado mostrado na tabela seguinte.
| [Medida Existente] | [NewMeasure] | |
|---|---|---|
| [Cliente]. [Todos] | 2 | 2 |
Ao observar o conjunto de células devolvido, repare como o valor ExistentingMeasure, incluído na instrução SCOPE dentro do script MDX, é atualizado dinamicamente após a definição da medida NewMeasure.
Uma declaração SCOPE pode ser aninhada dentro de outra declaração SCOPE. No entanto, como a instrução SCOPE não é iterativa, o principal objetivo do aninhamento de instruções SCOPE é subdividir ainda mais detalhadamente um subcubo para tratamento especial.
Exemplo de Declaração SCOPE
O seguinte exemplo de script MDX utiliza uma instrução SCOPE para definir o valor da medida Amount no grupo de medidas Financeira do cubo de exemplo Adventure Works DW Multidimensional 2012, para ser 10% superior para os filhos do membro Redmond na dimensão Cliente. No entanto, outra declaração SCOPE altera o subcubo para incluir a medida de Valor para as crianças do ano civil de 2002. Finalmente, a medida de Quantidade é então agregada apenas para esse subcubo, mantendo os valores agregados para a medida de Quantidade nos outros anos civis inalterados.
/* 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;
Para mais informações sobre a sintaxe da instrução SCOPO, consulte a Declaração SCOPE (MDX).
Ver também
Referência de Linguagem MDX (MDX)
O Script Básico MDX (MDX)
Fundamentos da Consulta MDX (Serviços de Análise)