Compartilhar via


Criando cálculos de célula no escopo da consulta (MDX)

Use a palavra-chave WITH na linguagem MDX para descrever células calculadas no contexto de uma consulta. A sintaxe da palavra-chave WITH é:

WITH CELL CALCULATION Cube_Name.CellCalc_Identifier  String_Expression

O valor CellCalc_Identifier é o nome das células calculadas. O valor String_Expression contém uma lista de expressões de conjunto MDX ortogonais e unidimensionais. Cada uma delas deve resolver uma das categorias listadas na tabela a seguir.

Categoria

Descrição

Conjunto vazio

Um expressão de conjunto MDX resolvida em um conjunto vazio. Nesse caso, o escopo da célula calculada é o cubo inteiro.

Conjunto de membro único

Uma expressão de conjunto MDX resolvida em um único membro.

Conjunto de membros do nível

Uma expressão de conjunto MDX resolvida nos membros de um mesmo nível. Um exemplo dessa expressão de conjunto é a função MDX Level_Expression.Members . Para incluir membros calculados, use a função MDX Level_Expression.AllMembers . Para obter mais informações, consulte AllMembers (MDX).

Conjunto de descendentes

Uma expressão de conjunto MDX resolvida nos descendentes de um membro especificado. Um exemplo dessa expressão de conjunto é a função MDX Descendants(Member_Expression, Level_Expresion, Desc_Flag). Para obter mais informações, consulte Descendants (MDX).

Se o argumento String_Expression não descrever uma dimensão, a linguagem MDX assumirá que todos os membros foram incluídos para a construção do subcubo de cálculo. Portanto, se o argumento String_Expression for NULL, a definição de células calculada será válida para o cubo inteiro.

O argumento MDX_Expression contém uma expressão MDX que avalia o valor de célula de todas as células definidas no argumento String_Expression.

Considerações adicionais

A linguagem MDX processa a condição de cálculo, especificada pela propriedade CONDITION, somente uma vez. Esse único processamento proporciona melhor desempenho para a avaliação de várias definições de células calculadas, especialmente com a sobreposição de células calculadas nas passagens do cubo.

Quando esse único processamento ocorre depende do escopo de criação da definição de células calculadas:

  • Se criada em um escopo global, como parte de um cubo, a linguagem MDX processará a condição de cálculo quando o cubo for processado. Se, de alguma forma, as células forem modificadas no cubo e estiverem incluídas no subcubo de cálculo de uma definição de células calculadas, a condição de cálculo pode não ser precisa até que o cubo seja reprocessado. A modificação da célula pode ser causada, por exemplo, por write-backs. A condição de cálculo será novamente processada quando o cubo for reprocessado.

  • Se criada no escopo de sessão, a linguagem MDX processará a condição de cálculo quando a instrução for emitida durante a sessão. Como no caso de definições de células calculadas criadas globalmente, se as células forem modificadas, a condição de cálculo pode não ser precisa até que o cubo seja reprocessado.

  • Se criada no escopo de consulta, a linguagem MDX processará a condição de cálculo quando a consulta for executada. A questão da modificação da célula também ocorre aqui, embora os problemas de latência de dados sejam mínimos dado o pouco tempo de processamento da execução de consultas MDX.

Por outro lado, a linguagem MDX processará a fórmula do cálculo sempre que uma consulta MDX for emitida para um cubo que contém células incluídas na definição de células calculadas. Esse processamento ocorre independentemente do escopo de criação.

Consulte também

Referência