Mostrando postagens com marcador dax. Mostrar todas as postagens
Mostrando postagens com marcador dax. Mostrar todas as postagens

sábado, 26 de julho de 2014

PowerPivot – DAX – Time Intelligence Functions


Se vocês analisarem a sequência de posts sobre Business Intelligence (http://zavaschi.com/index.php/business-intelligence/) vocês vão perceber que estou dando um foco grande em DAX. O motivo é claro: com a chegada do SQL Server 11 (Denali) também chega um novo modelo para as bases multidimensionais do Analysis Services conhecido como BISM (BI Semantic Model).
Através do Visual Studio 2010 será possível criar modelos do BISM (da mesma forma que criamos os modelos do PowerPivot dentro do Excel) e fazer o deploy para o servidor do SSAS.
Uma das grandes diferenças é que a manipulação do modelo BISM será feita usando DAX (e não MDX), sim a mesma DAX que temos hoje no PowerPivot Excel, acrescida de uma série de novas funções e capacidades.
Temos 35 funções nesta categoria na versão atual, é possível que esse número aumente quando possuirmos os modelos BISM (e podemos subdividir em 3 sub categorias):
  1. Funções que retornam uma data
  2. Funções que retornam uma tabela de datas
  3. Funções que resolvem uma expressão sobre um período de tempo
FIRSTDATE
LASTDATE
FIRSTNONBLANK
LASTNONBLANK
STARTOFMONTH
STARTOFQUARTER
STARTOFYEAR
ENDOFMONTH
ENDOFQUARTER
ENDOFYEAR
PREVIOUSDAY
PREVIOUSMONTH
PREVIOUSQUARTER
PREVIOUSYEAR
NEXTDAY
NEXTMONTH
NEXTQUARTER
NEXTYEAR
DATESMTD
DATESQTD
SAMEPERIODLASTYEAR
DATEADD
DATESBETWEEN
DATESINPERIOD
PARALLELPERIOD
DATESYTD
TOTALQTD
TOTALYTD
TOTALMTD
OPENINGBALANCE
QUARTER
OPENINGBALANCE
YEAR
OPENINGBALANCE
MONTH
CLOSINGBALANCE
MONTH
CLOSINGBALANCE
QUARTER
CLOSINGBALANCE
YEAR

Por Thiago Zavaschi

sexta-feira, 25 de julho de 2014

PowerPivot – DAX – Entendendo o contexto de execução

16MAY/116
Introdução ao Contexto de Execução
Antes de entrar nas especificidades de cada função, conforme anunciei no meu último post que o faria, é importante frisar que o resultado obtido é sempre baseado no contexto atual. O contexto pode vir da tabela que você está trabalhando (novas colunas ao modelo) ou ao conjunto tratado pela measure.
E o que pode afetar/criar esse contexto?
Basicamente o contexto vem dos filtros aplicados (filtros nas funções ou slicers). Isso afeta o resultado esperado, por exemplo ao utilizar um slicer (segmentador de dados) temos uma redução de contexto.
Quando estamos trabalhando com valores relativos, por exemplo, considere o seguinte conjunto de dados e a seguinte DAX:
image
=SUM(Tabela[Categoria])
Temos um resultado semelhante a:
image
Neste momento estamos trabalhando com o conjunto total dos dados, mas ao marcar um slicer, por exemplo “Rock”, temos o filtro sobre o conjunto usado:
image
 image
Ok, Thiago até aí ok, mas em que cenários que devo me atentar quanto a isso? Por exemplo, e se você possuir uma expressão DAX para calcular uma média, onde o denominador seja o somatório total das vendas ?
Algo como:
Vendas / Todas as vendas independente de categoria ?
Você poderia pensar em algo como =SUM(Tabela[Categoria])/SUM(Tabela[Categoria]), e manter a divisao por categorias, mas a conta não faria sentido, pois tanto o numerador quanto o denominador resultariam em um valor flutuante de acordo com o contexto.
Como resolver então?
Existem três funções que podem ajudar que são: CALCULATE(), ALL() e ALLExcept().
O CALCULATE serve para manipular o contexto, e o ALL e ALLExcept servem para retornar regiões dos dados de forma invariável ao contexto dos slicers (ALL) e podendo ter excessões (ALLExcept).
Na prática ficaria algo como:
=SUM(Tabela[Valor])/CALCULATE(SUM(Tabela[Valor]),ALL(Tabela))
Assim, mesmo aplicando um slicer, o resultado da medida (measure) para aquela categoria é baseado no valor total(denominador) e não mais no contexto dos slicers, veja:
image
image

Por Thiago Zavaski

Sharepoint enviando email através de SMTP externo com autenticação

Sharepoint enviando email através de SMTP externo com autenticação Uma demanda interna nossa é que na nossa sede não tem IP Fixo. nesse c...