Partilhar via


Manipulação de dados MDX – Função RollupChildren

Aplica-se a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

A função MDX RollupChildren acumula os filhos de um membro, aplicando um operador unário diferente a cada um deles, e retorna o valor desse rollup como um número. O operador unário pode ser fornecido por uma propriedade do membro associada ao membro filho ou pode ser uma expressão de cadeia de caracteres fornecida diretamente para a função.

Exemplos da função RollupChildren

O uso da função RollupChildren em instruções MDX é simples de explicar, mas seu efeito sobre as consultas MDX pode ser bem abrangente.

O efeito da função RollupChildren ocorre em consultas MDX projetadas para executar a análise seletiva dos dados de um cubo existente. Por exemplo, a tabela a seguir contém uma lista de membros filho do membro pai Vendas Líquidas, com seus operadores unários (representados pela propriedade de membro UNARY_OPERATOR ) mostrados entre parênteses.

Membro pai Membro filho
Vendas Líquidas Vendas internas (+)

Lucros internos (-)

Exportações (+)

Lucros de exportações (-)

O membro pai Vendas líquidas apresenta o total de vendas líquidas menos os valores brutos de vendas internas e exportações, sendo os lucros interno e de exportação subtraídos como parte do acúmulo.

Porém, você quer gerar uma previsão rápida e fácil das vendas brutas internas e exportações mais 10%, ignorando os lucros interno e de exportações. Para calcular esse valor, você pode usar a função RollupChildren de duas maneiras: com uma propriedade de membro personalizada ou com a função IIf .

Usando uma propriedade de membro personalizado

Se o cálculo acumulado for uma operação realizada com frequência, um método seria criar uma propriedade membro capaz de armazenar o operador que será usado com cada filho para um função específica. A tabela a seguir exibe os operadores unários válidos e descreve o resultado esperado.

Operador Resultado
+ total = total + filho atual
- total = total – filho atual
* total = total * filho atual
/ total = total / filho atual
~ O filho não é usado no acúmulo. O valor do filho é ignorado.

Por exemplo, uma propriedade de membro chamada SALES_OPERATOR poderá ser criada e os seguintes operadores unários serão atribuídos a ela, como mostrado na tabela a seguir.

Membro pai Membro filho
Vendas Líquidas Vendas internas (+)

Lucros internos (~)

Exportações (+)

Lucros de exportações (~)

Com essa nova propriedade de membro, a seguinte instrução MDX executaria a operação de estimativa das vendas brutas com rapidez e eficiência (ignorando os lucros interno e de exportação):

RollupChildren([Net Sales], [Net Sales].CurrentMember.Properties("SALES_OPERATOR")) * 1.1  

Quando a função é chamada, o valor de cada filho é aplicado ao total usando o operador armazenado na propriedade membro. Os membros dos retornos interno e externo são ignorados e o total de rollup retornado pela função RollupChildren é multiplicado por 1,1.

Usando a função IIf

Se a operação de exemplo não for comum ou se ela se aplicar a apenas uma consulta MDX, a função IIf poderá ser usada com a função RollupChildren para fornecer o mesmo resultado. A consulta MDX a seguir apresenta o mesmo resultado que o exemplo MDX anterior, mas sem reordenar para usar uma propriedade de membro personalizado:

RollupChildren([Net Sales], IIf([Net Sales].CurrentMember.Properties("UNARY_OPERATOR") = "-", "~", [Net Sales].CurrentMember.Properties("UNARY_OPERATOR))) * 1.1  

A instrução MDX analisa o operador unário do membro filho. Se o operador unário for usado em uma subtração (como no caso dos membros dos retornos interno e externo), a função IIf substituirá o operador unário til (~). Caso contrário, a função IIf utilizará o operador unário do membro filho. Por fim, o total acumulado retornado é então multiplicado por 1,1 para apresentar o valor estimado de vendas brutas internas e exportações.

Consulte Também

Manipulando dados (MDX)