Como criar uma measure calculada no SSAS 2012

calculus

Fala galera, geralmente quando estamos criando nossos cubos, fazemos os calculos padrões baseados em sumarização convencional do próprio Analysis Services. Estas agregações podem ser SUM, AVG, MAX, MIN, COUNT, etc. Mas em alguns casos, precisamos calcular medidas que não são padrões, para isso, usamos o recurso de CALCULATIONS.

Quando se fala de criar calculos específicos, precisamos trabalhar com código MDX (MultiDimensional eXpression). É um pouco diferente do T-SQL que estamos acostumados no dia-a-dia, mas não se preocupe, com estes dois links de referência dá pra ter uma idéia de MDX:

MDX Syntax Elements (MDX)

MDX Language Reference (MDX)

Vamos criar um membro calculado que represente a Lucratividade de um produto, com base no Valor de Venda, Custo e Impostos. Destes valores citados, o Valor de Venda, Custo e Impostos já são itens calculados automaticamente pelas measures padrão do Analysis Services e nós vamos precisar criar somente o calculo da Lucratividade.

Vou entender que você sabe criar as measures convencionais, e para este exemplo, vou usar o AdventureWorksDW2012. Também entendo que você o conheça 🙂

Criei um projetinho simples com a Fato FactInternetSales que já possui alguns campos para nossas measures normais. Neste caso, vou usar somente as measures Total Product Cost, Sales Amount e Tax Amt. A parte de calculo se encontra dentro do arquivo .cube, na aba Calculations, como mostrado na imagem abaixo.

image

Abrindo esta aba, veja do lado esquerdo o Script Organizer já com o CALCULATE feito. Logo abaixo, clique com o botão direito em uma parte vazia e aponte para New Calculated Member.

image

Neste momento, uma tela se abre na área central, é onde você preenche os dados do cálculo. O mais importante é o campo Expression, onde você irá montar sua formula. Neste caso, como vamos montar a lucratividade, vamos fazer a conta da seguinte forma:

( [Measures].[Sales Amount] – ( [Measures].[Total Product Cost] + [Measures].[Tax Amt] ) ) / [Measures].[Sales Amount]

image

Para facilitar sua vida, você pode arrastar os ítens que estão nas suas Measures para o campo Exmpression e ele já monta no formato que o MDX entende.

Isso não significa que esta é a única formula que você deve customizar no seu projeto, este é só um exemplo, você vai analisar sua necessidade e fazer sua conta!

Os outros campos você preenche de forma intuitiva, colocando o nome do seu calculo entre colchetes no campo Name; Este nome será refletido dentro da Measure. Veja as setinhas onde ele impacta.

image

Escolhendo a opção de Measures no Parent Hierarchy; Este item pode conter outras Measure Groups, e você precisará selecionar outro item, caso queira mudar de lugar.

image

Alterando a formatação do campo para “Percent” no Format String, para o dado ser plotado como um percentual.

E por fim Selecionando qual Measure Group você vai atrelar ao seu calculo, na opção de Associated Measure Group.

image

Depois destas configurações, você terá uma imagem como esta abaixo. Em amarelo estão marcados todos os pontos que usamos para realizar este procedimento.

image

Se a fórmula que você criou funcionar e você processar o cubo, na sua análise você conseguirá consumir informações da lucratividade (ou Margem de Lucro, como quiser).

Reparem que na análise, caso você tenha uma hierarquia de membros, quando um membro está “agrupado” o próprio servidor OLAP se encarrega de sumarizar os valores que estão dentro daquele grupo específico e lhe apresenta o resultado sumarizado. Veja o valor da categoria Accessories, depois veja da sub-categoria Road Bikes e por fim dos objetos Road-150 Red e Road-250 Black.

image

Fazendo o calculo uma única vez, sempre que precisar recuperar aquele valor, é só arrastar para sua análise como uma Measure convencional da sua Measure Group.

Agora é contigo e com os códigos MDX. Bons calculos!

Sobre Diego Nogare 346 Artigos
Diego Nogare é Gerente Técnico de Engenharia de Machine Learning no Itaú-Unibanco. Também é professor em programas de pós graduação no Mackenzie e na FIAP, em São Paulo. Foi nomeado como Microsoft MVP por 11 anos seguidos, e hoje faz parte do programa Microsoft Regional Director.