Sabia que podemos ordenar de forma customizada linhas e colunas no Power BI? Desse modo você poderá personalizar a ordem que as dimensões que serão exibidas nos gráficos e tabelas! Para não depender apenas da ordenação dos máximos ou mínimos de uma medida ou da posição de uma letra na ordem alfabética.

Neste artigo, iremos lhe mostrar alguns modos práticos para realizar esta tarefa!

Criando tabelas auxiliares para as medidas

Para ordenar de forma customizada linhas e colunas , começamos construindo tabelas auxiliares. Podemos seguir de quatro maneiras simples :

  • Criação de uma tabela auxiliar no excel com uma coluna com o nome (ou código do produto) e outra coluna com a posição que o produto deve aparecer;

Tabela excel - Ordenar valores de forma customizada

 

  • Adição de uma Coluna Condicional, relacionando uma expressão específica a um número. Os números devem estar relacionado com a ordem que você quer customizar a exibição das linhas e colunas . Para uma abordagem mais completa sobre Coluna Condicional veja o artigo Como criar coluna condicional no power-bi.

Ordenar coluna condicional

 

  • Adição de uma coluna de índice caso a ordem da coluna produto já estiver na ordem de exibição.

Tabela com índice

 

  1. Selecione a coluna de Data ->  Adicionar Coluna -> Data -> Mês -> Mês)

Tabela Calendario

 

  1. 2-  Posteriormente, através desta mesma funcionalidade, você pode adicionar o ano, nome do mês, o trimestre, o dia e etc

Tabela Calendario 2

Não se esqueça de NOMEAR AS COLUNAS e CLASSIFICAR AS COLUNAS DE ACORDO COM O TIPO DE DADO CORRETAMENTE!

 

Em seguida, faça as conexões entre as tabelas dimensão e tabela fato.

Conexoes

 

 

Ordenar de forma customizada linhas e colunas

Após passar por esse processo de transformação, você está pronto para modificar seus visuais.

Selecione a dimensão escolhida para utilizar no gráfico ou tabela. Por fim, após selecionar a dimensão, uma aba chamada “Ferramenta de Coluna” será habilitada e em seguida clique em:

  1. Selecione a coluna/dimensão a ser ordenada -> Ferramenta de coluna -> Classificar por coluna  -> Selecione a coluna com a ordem numérica

Ordenando Colunas

 

Pronto! Note que a cada classificação de coluna, as medidas irão retornar, no gráfico ou trabela,  com a ordem designada! Desse modo, você conseguirá customizar a visualização de seus produtos/dados de acordo com sua importância.

Ordendanto tabelas e graficos

E aí, foi fácil de ordenar de forma customizada linhas e colunas no Power BI?

Caso não entenda algum ponto dele entre em contato conosco pelos comentários abaixo ou pelo nosso e-mail falecom@uaismart.com.

Compartilhe!

Ao montar um relatório, já foi questionado se poderia disponibilizar um dashboard com contagem regressiva de dias úteis do mês? Ou já precisou automatizar essa variação de dias para rastrear a evolução da meta?

Com os passos rápidos que iremos lhe disponibilizar neste post esperamos ajudá-lo com esta necessidade, deixando o seu relatório dinâmico!

 

Requisitos para iniciar a criação da tabela calendário

Inicialmente é necessário criar sua tabela calendário, seja ela do modo automático (CALENDARAUTO), com data pré-definidas (CALENDAR) ou através da Linguagem M (Consulta Nula no Power Pivot). Se precisar de ajuda, clique nos links de cada tipo de calendário para te ajudar!

Primeiro crie uma tabela auxiliar com as datas de feriado da sua região. Pode-se realizar através de uma tabela do EXCEL ou utilizando o API disponibilizado pelo site www.calendario.com.br. Para acessar diretamente as informações no Power BI, você pode utilizar estes dois posts como complemento sobre WEBSCRAPING. A informação do código IBGE do município está disponível neste XLSX.

Em nosso exemplo utilizaremos um calendário criado através do Power Pivot, utilizando a linguagem M e utilizaremos um repositório em .XLSX com as datas dos feriados de Belo Horizonte em 2020. É tudo o que você precisará para construir uma contagem regressiva de dias úteis em calendário no Power BI.

 

Construindo a tabela calendário

 

Primeiro precisamos preparar as tabelas bases para conseguirmos fazer a contagem regressiva de dias úteis do calendário no Power BI. Iniciaremos construindo nossa tabela de calendário com os dias úteis:

Obter Dados -> Consulta Nula -> insira a expressão abaixo (A data inicial [2020.1.1] e também a quantidade de anos (2) a ser retornado podem ser modificados de acordo com suas necessidades).

= List.Dates (#date(2020,1,1), 365 * 2, #duration(1,0,0,0))

OBS:  Dependendo do idioma do seu PBI, é possível que tenha que substituir a palavra FONTE, para isto, veja o nome da primeira etapa criada em ETAPAS APLICADAS em sua versão.

 

Criar Calendário no Power Query

Depois, converta a Lista Criada em Tabela.

Criar Calendário no Power Query 2

 

Em seguida, modifique a coluna para tipo DATA e insira as divisões de data conforme necessário. Para nosso caso, necessitamos inserir o Dia da Semana e o Nome do Dia:

  1. Adicionar Coluna -> Data -> Dia -> Dia da Semana
  2. Adicionar Coluna -> Data -> Dia -> Nome do Dia

 

Criar Dias no Calendário

 

Depois deste tratamento inicial do calendário, carregamos as informações de feriados do XLXS. Importe o repositório de feriados criados em XLSX em Nova Fonte.

 

Importar Calendário de Feriado

 

Faremos a combinação das Tabelas de Feriados e Calendário através da função Mesclar:

Mantenha-se na consulta do dCalendário -> Página Inicial -> Mesclar Consultas (1) -> Mesclar Consultas (2) -> Selecione a tabela de Feriados -> Clique sobre a Data da tabela Feriado -> OK

 

Mesclar consultas

Expandimos a consulta mesclada, selecionando apenas a coluna Feriado.

 

Expanção de Coluna de Consulta Mesclada

 

Inseriremos uma coluna condicional onde sábados, domingos e feriados são contabilizados como 0, enquanto os demais valores serão 1 (estes valores serão contabilizados para obter a quantidade de dias úteis). Para fazer a contagem regressiva de dias úteis continue seguindo os passos.

  1. Adicionar Coluna -> Coluna Condicional

Coluna Condicional

 

O passo seguinte é adicionar uma coluna personalizada com a data atual:

  1. Adicionar Coluna -> Coluna Personalizada -> Inserir a fórmula DateTime.LocalNow()

 

Data Atual Dinâmica

 

Segue as linhas de códigos utilizada no processo (Consulta Avançada):

let

    Fonte = List.Dates (#date(2020,1,1), 365 * 3, #duration(1,0,0,0)),

    #"Convertido para Tabela" = Table.FromList(Fonte, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

    #"Tipo Alterado" = Table.TransformColumnTypes(#"Convertido para Tabela",{{"Column1", type date}}),

    #"Ano Inserido" = Table.AddColumn(#"Tipo Alterado", "Ano", each Date.Year([Column1]), Int64.Type),

    #"Colunas Removidas" = Table.RemoveColumns(#"Ano Inserido",{"Ano"}),

    #"Colunas Renomeadas" = Table.RenameColumns(#"Colunas Removidas",{{"Column1", "Data"}}),

    #"Dia da Semana Inserido" = Table.AddColumn(#"Colunas Renomeadas", "Dia da Semana", each Date.DayOfWeek([Data]), Int64.Type),

    #"Nome do Dia Inserido" = Table.AddColumn(#"Dia da Semana Inserido", "Nome do Dia", each Date.DayOfWeekName([Data]), type text),

    #"Consultas Mescladas" = Table.NestedJoin(#"Nome do Dia Inserido", {"Data"}, Tabela1, {"Data"}, "Tabela1", JoinKind.LeftOuter),

    #"Tabela1 Expandido1" = Table.ExpandTableColumn(#"Consultas Mescladas", "Tabela1", {"Feriado"}, {"Feriado"}),

    #"Coluna Condicional Adicionada" = Table.AddColumn(#"Tabela1 Expandido1", "Personalizar", each if ... then ... else ...),

    #"Colunas Removidas1" = Table.RemoveColumns(#"Coluna Condicional Adicionada",{"Personalizar", "Nome do Dia", "Feriado"}),

    #"Nome do Dia Inserido1" = Table.AddColumn(#"Colunas Removidas1", "Nome do Dia", each Date.DayOfWeekName([Data]), type text),

    #"Consultas Mescladas1" = Table.NestedJoin(#"Nome do Dia Inserido1", {"Data"}, Tabela1, {"Data"}, "Tabela1", JoinKind.LeftOuter),

    #"Tabela1 Expandido" = Table.ExpandTableColumn(#"Consultas Mescladas1", "Tabela1", {"Feriado"}, {"Feriado"}),

    #"Coluna Condicional Adicionada1" = Table.AddColumn(#"Tabela1 Expandido", "Dias Úteis", each if [Nome do Dia] = "sábado" then 0 else if [Nome do Dia] = "domingo" then 0 else if [Feriado] = 0 then 0 else 1),

    #"Personalização Adicionada" = Table.AddColumn(#"Coluna Condicional Adicionada1", "Hoje", each DateTime.LocalNow()),

    #"Tipo Alterado2" = Table.TransformColumnTypes(#"Personalização Adicionada",{{"Hoje", type date}, {"Dias Úteis", Int64.Type}})

in

    #"Tipo Alterado2"

 

Contagem regressiva de dias úteis no Power BI – Criando Medidas

Pronto, finalizamos o passo de tratamento dos dados. Clique em Aplicar e Fechar.

Agora podemos criar as medidas para realizar a contagem regressiva de dias úteis.

 

Para o total de dias úteis do mês, clique em Nova Medida:

Dias Úteis do mês = CALCULATE(TOTALMTD(SUM(dCalendario[Dias Úteis]),dCalendario[Data]))

 

Para calcular os dias úteis restante até o final do mês, utilizaremos:

Dias Úteis até final do mês = CALCULATE(SUM(dCalendario[Dias Úteis]),DATESBETWEEN(dCalendario[Data],TODAY(),EOMONTH(TODAY(),0)))-1

 

Calculando Dias úteis DAX

* Print tirado no dia 01.06.2020

 

Observar que no cálculo para Dias Úteis até Final do Mês não considera o dia de hoje como um dia útil, por isso o -1 após fechamento do CALCULATE.

E aí, foi simples fazer um calendário contando os dias úteis e ainda fazer uma contagem regressiva de dias úteis em calendário no Power BI?

Caso não entenda algum ponto dele entre em contato conosco pelos comentários abaixo ou pelo nosso e-mail falecom@uaismart.com.

Compartilhe!

 

Aqui neste post apresentamos a forma para criar uma tabela calendário automática no Power BI. Há várias formas de criar uma tabela de calendário no Power BI. Já escrevemos sobre isso aqui no site, veja em Aprenda 2 maneiras de criar uma tabela Calendário no Power BI. Aqui então temos a terceira forma para isso.

Consideramos esta a forma mais prática de rápida para criar uma tabela Calendário utilizando DAX. Utilizaremos uma função que criará uma tabela calendário automática no Power BI. O nome desta função é CALENDARAUTO ().

 

Função DAX: CALENDARAUTO

O melhor uso desta função é a partir da criação de tabela com linguagem DAX. Criar uma tabela assim é simples, veja abaixo como fazer:

Tabela calculada no Power BI

Quando criamos a tabela calendário automática no Power BI com a função CALENDARAUTO, é produzindo nesta tabela uma coluna com dia a dia das datas entre um valor mínimo e um valor máximo. Nesta função o valor mínimo e máximo das datas é identificado dentro do modelo de dados. A função verifica nas fontes carregadas qual a data mínima e máxima que já existem no modelo. Para determinar estes valores, a função não considera colunas calculadas, tabelas DAX ou medidas, somente o que está nas fontes originais.

A função tem a seguinte sintaxe:

Estrutura da fórmula: Nome da Tabela = CALENDARAUTO(<mês_final_do_ano>)

Dentro dos parênteses pode colocar qualquer valor entre 1 e 12 ou qualquer expressão que retorne estes valores. Aqui define qual mês termina o calendário que será criado. Este parâmetro é opcional e por padrão o número é 12. Se não colocar nada a tabela calendário automática começará em janeiro e terminará dezembro. Se colocar 5 o ano calendário começa em Junho e termina em Maio, por exemplo.

Seguindo então nesta tarefa de criar uma tabela calendário automática no Power BI, veja abaixo. No primeiro exemplo utilizamos a função assim:

Calendário = CALENDARAUTO()

Veja o resultado dessa utilização da função.

Função CALENDARAUTO

Tabela Calendário Automática no Power BI com a sua cara

Bem, fazendo só a linha acima cria a tabela, mas ela ainda não te serve como uma tabela de dimensão completa. O objetivo de uma tabela calendário é nos dar uma série de dimensões de tempo. Pode ser, mês, ano, trimestre, semestre, dia da semana, etc…

O trabalho de criar uma tabela automática no Power BI fica incompleto. Precisarmos fazer mais.

Vamos criar mais colunas para esta tabela e deixar ela com o máximo de dimensões de tempo possível.

Para que seja possível acrescentar mais colunas, vamos utilizar a função ADDCOLUMNS. Esta função ficará antes da função CALENDARAUTO.

Vamos agora acrescentar mês, ano, trimestre, semana do ano e dia da semana. Perceba também que formatei o Tipo de Dados da coluna “Date” para Data somente (antes estava Data/Hora).

Tabela calendário automática no Power BI primeiros passos

Só com esta colunas já temos boas dimensões, mas dá para incrementar ainda mais nossa tabela calendário automática. Lembrando que o método de criação desta tabela é por Linguagem DAX.

Vamos colocar agora o nome do mês, nome do dia da semana, juntar mês e ano (de duas formas), juntar trimestre e ano.

Tabela calendário automática no Power BI final

Veja acima como nossa tabela calendário automática no Power BI ficou completa.

Agora vem o melhor de tudo. Abaixo está o código em DAX que basta você copiar e colar. Isso mesmo, copie o código, crie uma nova tabela calculada conforme a primeira figura neste artigo e cole o código lá. Pronto, sua tabela calendário agora está fácil e rápida de fazer.

Calendário =
    ADDCOLUMNS(
        CALENDARAUTO();
            "Ano"; YEAR([Date]);
            "Mês Num"; MONTH([Date]);
            "Trim"; FORMAT([Date]; "q");
            "Semana Ano"; WEEKNUM([Date]);
            "Dia Semana"; WEEKDAY([Date]);
            "Mês"; FORMAT([Date]; "mmm");
            "Mês Completo"; FORMAT([Date]; "mmmm");
            "Mês_Ano"; FORMAT(MONTH([Date]); "00") & "/" & YEAR([Date]);
            "Mês-Ano"; UPPER(FORMAT(MONTH([Date]); "mmm")) & "/" & YEAR([Date]);
            "Trim_Ano"; FORMAT([Date]; "q") & "T" & YEAR([Date]);
            "Dia_Semana"; FORMAT([Date]; "ddd")
)

 

Qual das formas de fazer a tabela calendário é a melhor?

No artigo com link no início deste post fala de outras duas formas de fazer tabelas calendários. Neste apresentamos uma terceira forma.

Aí você pode se perguntar, qual a melhor forma?

Nossa resposta é: aquela que você está mais confortável de usar. Todas eles têm seus prós e contras. Pense na manutenção desta tabela, se haverá novas datas constantemente na sua fonte.

Se você precisar de algo mais elaborado, buscando de APIs e juntando com feriados nacionais e locais o melhor é criar pelo Power Query. Se sua necessidade é mais simples a forma mais dinâmica é pela linguagem DAX. Usando DAX recomendamos a forma que apresentamos neste artigo. Utilizando o CALENDARAUTO, pois deixa automático o reconhecimento das datas e sempre terá uma tabela calendário atualizada conforme sua base.

Esperamos que tenhamos de ajudado e agora você saiba criar a tabela calendário automática no Power BI. Conte para nós se você tem alguma outra forma de criar a tabela calendário. Coloque nos comentários ou nas nossas redes sociais o seu jeito.

Tem alguma outra dúvida? Nos pergunte! Utilize também a sessão de comentários logo abaixo.

Até a próxima!

Quem nunca teve algum problema em trabalhar com horas no Power BI? Pois é, apesar de parecer simples, esta pode ser uma das principais causas de dúvidas no início de sua jornada na confecção de dashboards e outros relatórios gerenciais.

Neste arquivo ensinaremos a trabalhar com horas no Power BI tanto utilizando DAX como no tratamento dos dados no Editor de Consultas. Escolha a melhor forma para você e utilize no seu dia a dia. Abaixo estão estas formas.

O primeiro passo para solução deste problema pode ser logo após a importação dos dados. Você precisa refletir sobre os dados que serão necessários na confecção de seu relatório. Será necessário analisar apenas os DIAS ou as HORAS também são importantes? Caso apenas os dias sejam importantes, deve ser considerado o tipo de dado como DATA (1). Somente se as informações de dia e hora sejam importantes, é que deve ser categorizado o tipo de dados como DATA/HORA (2).

Tipo de dados data e data hora power BI

 

BOA PRÁTICA: Tome como boa prática sempre que possível tipificar corretamente suas colunas para que haja a maior eficiência possível nas etapas aplicadas. Colocando o tipo de dados correto, melhora-se o desempenho de sua consulta. Também fica mais organizado quando houver a necessidade de procurar por erros.

Etapas aplicadas power BI

 

ENTENDA COMO FUNCIONA POR DENTRO: para o cálculo das datas e horas as informações são calculadas através de um número serial (XX,XXXXXXX) e que as datas (DD/MM/YYYY hh:mm:ss) são estes números seriais transformados.

Trabalhar com horas no Power BI

Número serial Power BI

O próximo passo é realizar a manipulação dos dados.

Para trabalhar com horas no Power BI pode-se seguir através seguintes abordagens:

 

Trabalhar com horas no Power BI – Atividades que iniciam e terminam no mesmo dia.

 

É possível utilizar a subtração entre colunas com as colunas desejadas. Veja que no ponto 1 é observado a diferença de horas corretamente, entretanto o programa não reconhece quando se trata de diferença de horas entre dias diferentes no ponto 2.

Horas Simples = fdatas[Término Expediente] - fdatas[Início Expediente]

Trabalhar com horas no Power BI - reconhecimento

 

Agora atividades que iniciam e terminam em dias diferentes.

 

Para realizar a subtração entre datas de dias diferentes podemos seguir por 2 caminhos:

Não preciso ser exato na quantidade de dias e suas frações. É retornado o valor arredondado para baixo 0 = 0,5 <  ; 1 =  0,5>.

Nos exemplos abaixo fazemos com DAX por meio de colunas calculadas (Nova Coluna). Utilizamos aqui, para trabalhar com horas no Power BI a função DATEDIFF.

Nova Coluna Diferença de Dias =
     DATEDIFF ( fdatas[Início Expediente]; fdatas[Término Expediente]; DAY )
Nova Coluna Diferença de Horas =
     DATEDIFF ( fdatas[Início Expediente]; fdatas[Término Expediente]; HOUR )

Com resultado temos o seguinte:

trabalhar com horas no power bi - datadiff

 

É necessário valores precisos como resultado do cálculo! Temos 2 opções:

DAX

Veja dois exemplos em DAX abaixo, também em forma de colunas calculadas.

Diferença em DIAS =
    1 * ( fdatas[Término Expediente] - fdatas[Início Expediente] )
Diferença em HORAS =
    24 * ( fdatas[Término Expediente] - fdatas[Início Expediente] )

Power Query

Primeiro uma forma para fazer em DIAS:

  1. Selecione a coluna com a data mais recente [Início Expediente]
  2. Selecione a coluna com a data mais antiga [Término Expediente]
  3. Adicionar Coluna -> Hora -> Subtrair
  4. Será gerado a coluna SUBTRAÇÃO, que são os Dias no formato serial.

Subtrair colunas no Power BI

Para fazer a diferença tendo HORAS como resultado siga os passos abaixo:

  1. Adicionar Coluna -> Coluna Personalizada
  2. Defina o nome da coluna
  3. Digite no campo a seguinte fórmula = [Subtração] * 24
  4. OK

Trabalhar com Horas no Power BI

Depois de feito tudo clique e Fechar e Aplicar. As colunas [Subtração] e [Subtração Horas] serão apresentadas no formato serial.

Resultado final das horas no Power BI

Pronto! Agora você está apto trabalhar com horas no Power BI de várias formas.

Assim poderá criar medidas e gerar insights de seus projetos ou atividades! Lembre-se que este cálculo considerará como dias corridos e não dias úteis.

Fácil né! À primeira vista pode não parecer, mas logo ficar fácil trabalhar com horas no Power BI, usando uma destas formas apresentadas.

Você achou nossos métodos úteis? Tem alguma outra maneira para trabalhar com horas no Power BI? Deixe-nos saber na seção de comentários abaixo.

A função de soma (SUM) com certeza é uma das mais utilizadas no Power BI, se não for a mais utilizada. Não só no Power BI mas no Excel também. Neste artigo trataremos do comportamento das funções SUM e SUMX no Power BI. Tudo que falarmos aqui se aplica também ao Power Pivot do excel.

Entendemos que não há necessidade de falar muito sobre a função de somar em si. É uma função simples, provavelmente a primeira que aprendemos devido à grande aplicação que ela tem. Mas se tiver alguma dúvida leia o nosso artigo: 4 Funções DAX simples mas que você usará em todos seus modelos.

Antes de entrarmos nas explicações das funções SUM e SUMX no Power BI é importante entender alguns detalhes do comportamento das funções dentro da Linguagem DAX.

Para melhor acompanhar este artigo baixe nosso exemplo em Power BI.

 

Comportamento dos filtros

Quando se cria uma fórmula em DAX, o resultado dela depende dos filtros que estão aplicados no relatório. Tenha em mente que DAX não é o mesmo que as fórmulas em Excel.

No Excel é possível criar várias fórmulas em cada célula de um relatório e cada fórmula pode apontar para células criando resultados diferentes. Cada célula é única. Mas não é assim que funciona na linguagem DAX.

No DAX se cria uma única fórmula, exemplo SUM(Vendas[Total Venda]), utilizando os filtros do relatório se modifica os resultados retornados desta fórmula.

Os filtros são aqueles criados em qualquer local da área de relatório no Power BI, tanto as segmentações de dados quanto qualquer elemento clicável nos gráficos e tabelas do relatório. Neste sentido é considerado como filtro também, influenciando no resultado, aqueles adicionados na função CALCULATE. Esta é a única função que pode alterar o comportamento dos filtros iniciais em um relatório.

O termo técnico para este comportamento dos filtros em relação ao resultado é “Contexto de Filtro” ou “Filter Context”. Provavelmente é um termo que você já ouviu nos seus estudos sobre Power BI. Se não ouviu ainda irá ouvir muito aqui no nosso blog e nossos cursos.

Veja como é o comportamento do filtro inicial no Power BI.

Power BI Filtros Iniciais

Note que a linha de “Bikes” (1), é um filtro inicial, somando todos os valores de vendas de bicicletas alí. Mas há também um outro filtro no gráfico, a coluna da cidade (2) filtra também todas as vendas desta cidade. Assim o valor na linha “Bikes” é a soma desta categoria para a cidade de “São Paulo” no exemplo. Os dois filtros aplicados são filtros iniciais.

Filtros podem vir de colunas, segmentação de dados e também da seção de Filtros na direita da visualização de Relatório abaixo da seção Visualizações.

 

Contexto de Linha

O segundo ponto importante a se compreender é a análise linha a linha. Não é toda fórmula DAX que é capaz de calcular linha a linha. Em algumas áreas do DAX, por exemplo numa coluna calculada, consegue avaliar linha a linha o resultado, mas em outras áreas não.

Por exemplo, pode-se escrever uma fórmula simples numa coluna calculada, tal como, Vendas[PedidoQtde] * Vendas[Preço Unit.] que a fórmula irá avaliar uma linha por vez. Mas se fizer esta mesma fórmula como uma Medida acontecerá um erro.

O termo técnico para este comportamento é “Contexto de Linha” ou “Row Context”. Representa então a análise linha a linha para a fórmula.

 

SUM e SUMX no Power BI

Após apresentado alguns conceitos bases, vamos agora falar da razão deste artigo ser escrito. As fórmulas SUM e SUMX no Power BI.

SUM()

É uma função agregadora, ou seja, adiciona todos os valores em uma coluna. O resultado se dá após aplicados ou não todos os filtros que influenciam na fórmula. SUM() não considera a existência das linha (não avalia linha a linha). Tudo que ela faz é agregar todas as linhas dentro de uma única coluna.

SUMX()

É um “iterador”*, ou seja, trabalha na tabela, linha a linha para completar a avaliação. O resultado se dá após aplicados ou não todos os filtros que influenciam na fórmula. SUMX() leva em conta cada linha da tabela e, portanto, pode referenciar a interseção de cada linha com qualquer coluna na tabela. É uma fórmula que opera numa única coluna, mas consegue também operar em múltiplas colunas, pois trabalha linha a linha na tabela.

Em resumo, SUM() trabalha com uma única coluna e não considera as linhas individualmente. SUMX() opera em múltiplas colunas na tabela e pode avalia linha por linha destas colunas.

As duas fórmulas podem dar o mesmo resultado (pode dar ou podem não dar), mas este resultado vem por caminhos totalmente diferentes. Geralmente elas chegam nos mesmos resultados por linha de uma tabela ou gráfico, mas geralmente os resultados são diferentes nos subtotais ou totais das seções de um visual.

* Iterador, iteração, falaremos destes dois termos bastante neste artigo. Significa tratar item a item, ou seja, agrega um item de cada fez no resultado da função.

 

Função SUM()

 

Estrutura da fórmula: SUM (<coluna>)

Exemplo:

SUM( Vendas[Total Venda] )

A função SUM() opera em uma coluna única e age para agregar todos os dados desta coluna, levando em conta os filtros aplicados. Primeiro considera o filtro, depois o resultado.

 

Função SUMX()

 

Estrutura da fórmula: SUMX (<tabela>; <expressão>)

Exemplo:

SUMX( Vendas; Vendas[PedidoQtde] * Vendas[Preço Unit.] )

O SUMX() itera (agrega item a item), em uma tabela especificada no primeiro parâmetro, uma linha por vez. No segundo parâmetro a função completa o cálculo. No caso Quantidade x Preço Unitário, levando em conta os filtros aplicados. Assim como na SUM, primeiro considera o filtro, depois o resultado.

A função adiciona até chegar ao total, linha por linha. É como se fosse uma soma ponderada pelo valor próprio de cada linha. No exemplo, a linha que tiver maior quantidade terá maior peso no resultado a linha com menos quantidade.

 

Qual função devo usar, SUM ou SUMX?

Na hora de decidir qual das duas funções utilizar, SUM ou SUMX, dependerá da sua preferência e da estrutura dos seus dados. Vejam abaixo alguns exemplos:

Exemplo 1: Quantidade e Preço Unitário

Tabela SUMX

Se você tem uma tabela de vendas que contenha uma coluna de “Quantidade” e outra de “Preço Unitário” (como mostramos acima), então será necessário multiplicar uma coluna pela outra para chegar no resultado do Total de Vendas. O Resultado não seria bom se fizéssemos a multiplicação da soma da “Quantidade” com a média do “Preço Unitário”. Fazendo isto traria um resultado indesejado.

No caso da imagem acima, o melhor é utilizar SUMX(). É justamente para estes casos que este tipo de função foi criado (iteração). Abaixo a fórmula que deve ser usada, no arquivo que disponibilizamos tem esta fórmula.

SUMX( Vendas; Vendas[PedidoQtde] * Vendas[Preço Unit.] )

Funções de iteração sempre tem seu primeiro parâmetro uma tabela. Esta é a tabela que será iterada pela função.

Muitos usuários cometem um erro comum neste caso. Ao invés de utilizar a função acima acabam criando uma coluna calculada para resolver o problema. De fato, o problema do resultado será resolvido, mas acaba criando outro com isso. Ter uma coluna calculada grava o cálculo linha a linha no arquivo. Mas isto deve ser evitado sempre que possível, pois aumenta a quantidade de memória utilizada e o tamanho do arquivo desnecessariamente.

 

Exemplo 2: Valor Total

Se seus dados contém uma coluna com o Valor Total de Vendas por linha, então pode usar a função SUM() para a soma dos valores.

Tabela SUM Power BI

SUM( Vendas[Total Venda] )

Neste caso não há necessidade de iteração. É apenas um cálculo simples que agrega todos os valores num total, sem necessidade de execução linha a linha. Se quiser poderá usar o SUMX(), conforme abaixo. O resultado será o mesmo.

SUMX( Vendas; Vendas[Total Venda] )

Considerando em termos de performance, esta fórmula é idêntica a SUM() em eficiência e uso de memória. Mais sobre esse ponto no final do artigo.

 

Exemplo 3: Quando o Total não pode ser somado

Há outro caso em que é necessário usar SUMX(), mas é menos óbvio. Quando se encontra um problema em que o Total não soma conforme a necessidade ou esperado. Assim é necessário usar um “iterador”, exemplo SUMX, para corrigir este problema. Observe a tabela abaixo:

Tabela SUMX Power BI

Na tabela acima temos 6 clientes com uma média gasta em cada visita. Tem também o número de visitas que tiveram na loja. Se tentarmos carregar estes dados no Power BI utilizando funções de agregação para determinar uma média de gastos e um total gastos, na linha de total teremos o valor errado. Veja abaixo:

Tabela Power BI SUM não usar

As medidas utilizadas na tabela acima foram:

Media por Visita Errado = AVERAGE( ClientesUso[Gasto por Visita] )

Total de Visitas = SUM( ClientesUso[Nro Visitas] )

Total Gasto Errado = [Total de Visitas] * Medidas[Media por Visita]

Na “Média por Visita Errado” o resultado da linha total está errado, é uma média simples sem considerar o total de visitas. O “Total de Visitas” está correto, pois é apenas a soma da coluna. “Total Gasto Errado” está errado também pois não considera linha a linha.

Para este tipo de estrutura de dados a única forma de calcular corretamente os totais é considerando linha a linha. Veja abaixo o resultado correto:

Tabela Power BI SUM correto

Nesta tabela acima utilizamos a função SUMX() para criar o “Total Gasto Correto” primeiro. Somente depois desta medida criada que calculamos a “Média por Visita Correto” na fórmula final.

Total de Visitas = SUM( ClientesUso[Nro Visitas] )

Media por Visita Correto = DIVIDE( [Total Gasto Correto]; [Total de Visitas]; 0 )

Total Gasto Correto = SUMX( ClientesUso; ClientesUso[Nro Visitas] * ClientesUso[Gasto por Visita] )

Perceba que para ter na média ponderada simplesmente dividimos o “Total Gasto Correto” pelo “Total de Visitas”.

 

Impactos na Performance

Fórmulas em geral tem implicação direta na performance do modelo de dados, ou seja, tem fórmulas que usam mais memória e espaço do que outras. Falaremos então qual das duas funções (SUM e SUMX) tem a melhor eficiência na performance do modelo.

Podemos até pensar que o SUMX, por ser um “iterador” seria menos eficiente que o SUM. Mas isto não é necessariamente verdade, o Power BI é otimizado para trabalhar com cenários. O que pode causar ineficiência neste caso é um DAX mal escrito.

A linguagem DAX tem duas engines de cálculo, a Storage Engine (SE) e a Formula Engine (FE). A mais rápida é a SE, pois é multidirecional e armazena em cache. A FE é mais lenta porque é unidirecional e não armazena em cache.

Temos que buscar fórmulas que sejam SE sempre que possível. Não é algo que seja fácil de saber se não temos uma vivência diária com estas fórmulas. Mas felizmente temos um bom material disponível na web, principalmente porque os experts estão buscando cada vez mais eficiência na utilização das fórmulas no Power BI.

Vamos explicar a seguir melhor em relação ao nosso exemplo.

  • SUM() sempre utiliza SE para seus cálculos.
  • Para a maioria dos cálculos simples (por exemplo, Vendas[PedidoQtde] * Vendas[Preço Unit.]), SUMX() utilizará SE.
  • Em algumas circunstâncias, SUMX() pode utilizar FE para alguns ou todos os cálculos, principalmente se tiver comparações complexas na fórmula. Neste caso a performance cai muito.

Não comprometer a performance

Aconselhamos, assim, evitar utilizar a função IF juntamente com SUMX(). Abaixo damos um exemplo de como substituir a função IF trazendo o mesmo resultado e com isso não comprometendo a performance.

Ao invés de:

Total Vendas < 100 NÃO = SUMX( Vendas;

    IF(Vendas[Total Venda] < 100; Vendas[Total Venda]; "" )

    )

Utilize:

Total Vendas < 100 SIM = CALCULATE(

    SUMX( Vendas; Vendas[Total Venda] );

    Vendas[Total Venda] < 100

    )

A primeira fórmula (Total Vendas < 100 NÃO) tem a função IF juntamente com a SUMX. Esta função IF força o cálculo SE passar para uma a forma FE para que seja comparado as linhas individualmente se for maior ou menor que 100, antes de decidir incluir ou não no cálculo. Pelo fato da função ter que avaliar linha a linha o cálculo fica lento e ineficiente.

A segunda fórmula (Total Vendas < 100 SIM) primeiramente modifica o filtro inicial, vindo do visual, utilizando CALCULATE() para colocar um filtro adicional (Vendas[Total Venda] < 100). Este filtro é aplicado por “Storage Engine” (SE) de forma bem eficiente. Após o CALCULATE modificar o filtro a função SUMX pode então fazer seu trabalho e somar as linhas restantes, uma a uma, através do SE. Nos nossos testes realizados com as duas fórmulas verificamos que a primeira fórmula (NÃO) levou até 5 vezes mais para processar.

Compartilhe este conteúdo nas suas redes sociais (utilize os botões abaixo) e ajude seus colegas a compreender melhor sobre o assunto. Ajude-nos também a espalhar bons conteúdos sobre o Power BI.

Tem dúvidas? Nos pergunte! Utilize a sessão de comentários deste artigo logo abaixo.

Até a próxima!

Para fazer cálculos envolvendo datas no Power BI é necessário utilizar a linguagem DAX. Para isto existem, dentro desta linguagem, as funções de inteligência de tempo. Elas servem para trazer resultados de ano até o momento (year to date), ano versus ano (yoy), último dia do mês, última data disponível, etc.

Além de alguns cenários utilizando funções de inteligência de tempo no Power BI você aprenderá também sobre a opção “marcar como tabela de datas” que foi incorporada no Power BI na atualização de fevereiro de 2018. Entender o papel desta configuração feita nas tabelas que tem datas.

Baixe o arquivo do Power BI Desktop que oferecemos abaixo com todas as funções que falamos neste artigo. São exemplos práticos de quase todas as funções de inteligência de tempo disponíveis na linguagem DAX. Além de conseguir acompanhar o que falamos neste post sobre estas funções você terá também um local de consulta rápida sobre estas funções no seu PC. Assim poderá relembrar e tirar dúvidas no momento que quiser. Baixar o arquivo aqui.

Utilize o índice abaixo para navegar neste artigo. Por ele vá direto à função que deseja aprender.

Funções de inteligência de tempo em DAX

A linguagem DAX disponibiliza um grande número de funções de inteligência de tempo. Veja todas neste link. Estas funções podem ser divididas em duas categorias:

  • Funções que retornam valores escalares sem necessidade da função CALCULATE;
  • Funções que retornam uma tabela, que será usada como um filtro numa fórmula CALCULATE.

Um exemplo do primeiro grupo é a função TOTALYTD. Este grupo, na verdade, apenas simplifica uma fórmula que utilizaria CALCULATE, trocando por uma função de inteligência de tempo. Exemplo de uma expressão utilizando TOTALYTD.

TOTALYTD ( 
      SUM ( Vendas[Total Venda] );
      CalendarioDAX[Date] )

No segundo grupo, utiliza-se a função CALCULATE em conjunto. De fato, a função acima pode ser obtida também conforme abaixo, mas utilizando DATESYTD como um filtro.

CALCULATE ( 
      SUM ( Vendas[Total Venda] );
      DATESYTD ( CalendarioDAX[Date] )
)

Na fórmula acima é aplicado um filtro ao campo “CalendarioDAX[Date]”. Este substitui filtros existentes nesta coluna. Na prática a função DATESYTD por ser substituída pela função FILTER. A fórmula anterior corresponde a mesma fórmula a seguir.

CALCULATE (
    SUM ( Vendas[Total Venda] );
    FILTER (
        ALL ( CalendarioDAX[Date] );
        CalendarioDAX[Date] <= MAX ( CalendarioDAX[Date] )
            && YEAR ( CalendarioDAX[Date] ) = YEAR ( MAX ( CalendarioDAX[Date] ) )
    )
)

Entenda mais sobre a função FILTER no artigo “5 funções DAX para usar muito no Power BI”.

Observe na figura abaixo que o resultado é o mesmo. Os três contextos utilizados trazem o mesmo valor, porque são formas diferentes para buscar um mesmo resultado. Em duas utilizamos funções de inteligência de dados temporais, nos dois grupos que destacamos no início deste tópico.

Funções de inteligência de tempo comparativo

Passamos agora a falar das funções de inteligência de tempo dividas pelos resultados que retornam.

 

Funções que retornam uma única data

Como nesta categoria as funções retornam uma única data, podem ser utilizadas como argumentos para outras funções. Abaixo colocamos alguns exemplos de funções deste grupo. De qualquer forma citamos todas disponíveis no texto.

FIRSTDATE

Retorna a primeira data da coluna de datas utilizadas no contexto atual.

Estrutura da fórmula: FIRSTDATE (<coluna_datas>)

Exemplo:

FIRSTDATE( CalendarioDAX[Date] )

LASTDATE

Retorna a última data da coluna de datas utilizadas no contexto atual.

Estrutura da fórmula: LASTDATE (<coluna_datas>)

Exemplo:

LASTDATE( CalendarioDAX[Date] )

As duas funções de inteligência de dados temporais acima são úteis em casos que deseje encontrar a primeira ou a última data em que foi feita uma venda, por exemplo. Dá para especificar qual produto, qual valor e mais, utilizando juntamente a função CALCULATE e/ou FILTER.

 

STARTOFMONTH

Retorna a primeira data do mês para uma coluna de datas utilizadas dentro do contexto atual.

Estrutura da fórmula: STARTOFMONTH (<coluna_datas>)

Exemplo:

STARTOFMONTH( CalendarioDAX[Date] )

 

ENDOFMONTH

Retorna a última data do mês para uma coluna de datas utilizadas dentro do contexto atual.

Estrutura da fórmula: ENDOFMONTH (<coluna_datas>)

Exemplo:

ENDOFMONTH( CalendarioDAX[Date] )

Além das duas funções acima temos ainda as funções STARTOFQUARTER e ENDOFQUARTER, que, nos mesmos moldes, são para datas em trimestres. Temos também as funções STARTOFYEAR e ENDOFYEAR que tratam o contexto na visão de ano.

Ao todo são 10 funções de inteligência de tempo que retornam um único valor de data, restou listar entre estas as funções FIRSTNOBLANK e LASTNOBLANK, que utilizadas em colunas de datas retorna valores (primeiro ou último) que não estão em branco.

Abaixo uma imagem dos resultados destas funções. Elas estão no arquivo que você fez o download acima (se não fez, faça agora pois ele contém vários exemplos das funções de inteligência de tempo em aplicações práticas).

 

Funções que retornam uma tabela de datas

Dentre às funções de inteligência de tempo há aquelas que retornam tabelas de datas. Estas, normalmente, são utilizadas como um argumento de filtro na função CALCULATE.

Estas funções, citaremos exemplos de algumas, mas ao todo são oito nesta situação, retornam um resultado a partir de uma coluna de data especificada antes.

 

PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTER e PREVIOUSYEAR

Vamos utilizar a função PREVIOUSDAY como principal exemplo para se basearem. Esta função retorna uma tabela que contém uma coluna com todas as datas que representam o dia anterior à primeira data da coluna de datas na tabela Calendário no contexto atual.

Estrutura da fórmula: PREVIOUSDAY (<coluna_datas>)

Exemplo:

CALCULATE (
     SUM ( Vendas[Total Venda] );
     PREVIOUSDAY ( CalendarioDAX[Date] )
)

Neste exemplo a função retornará o valor de vendas do dia anterior em relação à data atual. Para exemplificar, para o dia 05/08/2018 a função retornará as vendas do dia 04/08/2018. No arquivo disponibilizado temos um exemplo prático desta função e de todas logo abaixo, para você entender melhor. Não deixe de baixa-lo logo no início deste post.

Além desta função temos também as funções PREVIOUSMONTH, PREVIOUSQUARTER e PREVIOUSYEAR. Estas outras três funções tem a mesma estrutura e lógica da PREVIOUSDAY, só representam contextos diferentes.

PREVIOUSMONTH

Retorna uma tabela que contém uma coluna com todas as datas que representam o mês anterior à primeira data da coluna de datas na tabela. Esta função retorna a soma de valores do mês fechado. Ou seja, caso a linha contenha uma data do mês de agosto retornará a soma das vendas total do mês de julho.

CALCULATE (
     SUM ( Vendas[Total Venda] );
     PREVIOUSMONTH ( CalendarioDAX[Date] )
)
PREVIOUSQUARTER

Retorna uma tabela que contém uma coluna com todas as datas que representam o trimestre anterior à primeira data da coluna de datas na tabela. Esta função retorna a soma de valores do trimestre fechado. Ou seja, caso a linha contenha uma data do mês de agosto retornará a soma das vendas de todo trimestre anterior, no caso a soma dos meses abril, maio e junho.

CALCULATE (
     SUM ( Vendas[Total Venda] );
     PREVIOUSQUARTER ( CalendarioDAX[Date] )
)
PREVIOUSYEAR

Retorna uma tabela que contém uma coluna com todas as datas que representam o ano anterior à primeira data da coluna de datas na tabela. Esta função retorna a soma de valores do ano fechado. Ou seja, caso a linha contenha uma data do mês de agosto/17 retornará a soma das vendas de todo ano anterior, no caso a soma de todos os meses de 2016.

CALCULATE (
     SUM ( Vendas[Total Venda] );
     PREVIOUSYEAR ( CalendarioDAX[Date] )
)

 

NEXTDAY, NEXTMONTH, NEXTQUARTER e NEXTYEAR

Estas funções de inteligência de tempo tem a mesma lógica das funções citadas acima que começam com PREVIOUS. Essa palavra é substituída por NEXT, que significa próximo. Assim estas funções retornam uma tabela que contém uma coluna com todas as datas que representam um dia, um mês, um trimestre ou um ano seguinte à primeira data da coluna de datas.

Utilizaremos o exemplo da função NEXTDAY para ilustrar, mas as outras seguem a mesma estrutura. No arquivo de Power BI Desktop disponibilizado deste artigo tem todos as funções exemplificadas. Esta função retorna o resultado do dia posterior à primeira data da coluna.

Estrutura da fórmula: NEXTDAY (<coluna_datas>)

Exemplo:

CALCULATE (
     SUM ( Vendas[Total Venda] );
     NEXTDAY ( CalendarioDAX[Date] )
)

As explicações para as funções NEXTMONTH, NEXTQUARTER e NEXTYEAR são as mesmas de suas correspondentes PREVIOUS acima. Apenas substitua a palavra anterior por seguinte nas explicações.

 

DATESMTD, DATESQTD, DATESYTD e SAMEPERIODLASTYEAR

Estas funções de inteligência de tempo, ao invés de calcular um período anterior ou próximo, elas calculam o conjunto de datas no contexto. Melhor dizendo o resultado será do mês até o dia (DATESMTD), ou do trimestre até o dia (DATESQTD) ou do ano até o dia (DATESYTD). Todas essas funções executam seus cálculos usando a última data no contexto atual.

Para ilustrar utilizaremos a função DATESMTD, que retorna uma tabela que contém uma coluna de datas desde o início do mês até o dia atual no contexto.

Estrutura da fórmula: DATESMTD (<coluna_datas>)

Exemplo:

CALCULATE (
     SUM ( Vendas[Total Venda] );
     DATESMTD ( CalendarioDAX[Date] )
)

As funções DATESQTD e DATESYTD seguem a mesma lógica acima, mas retornam o total do trimestre ou ano respectivamente.

Já a função SAMEPERIODLASTYEAR requer um conjunto contínuo de datas, sem que as datas sejam contínuas esta função retornará um erro. Retorna uma tabela que contém uma coluna de datas com o atraso de um ano em relação às datas na coluna atual do contexto.

CALCULATE (
     SUM ( Vendas[Total Venda] );
     SAMEPERIODLASTYEAR ( CalendarioDAX[Date] )
)

 

DATEADD, DATESBETWEEN, DATESINPERIOD e PARALLELPERIOD

Estas últimas quatro funções na categoria de funções que retornam uma tabela de data são um pouco mais complexas, mas também mais poderosas. Estas funções são utilizadas para deslocar-se do conjunto de datas de forma mais dinâmica, obedecendo o contexto atual das datas.

DATEADD

Retorna uma tabela que contém uma coluna de datas, adiantadas ou atrasadas no tempo conforme o número especificado de intervalos das datas no contexto atual. É possível substituir a função SAMEPERIODLASTYEAR que descrevemos acima pela fórmula abaixo. Este é apenas um dos exemplos da utilização desta função. Ela serve para adiantar ou atrasar os cálculos para dias, meses, trimestres e o caso do exemplo, anos.

CALCULATE (
     SUM ( Vendas[Total Venda] );
     DATEADD ( CalendarioDAX[Date]; -1; YEAR )
)
DATESBETWEEN

Calcula um conjunto de datas entre uma data de início e uma data de término especificas nos argumentos. Esta função, bem como as próximas duas deslocam algum número de intervalo de tempo do contexto atual. Elas facilitam para deslocar os intervalos em dias, meses, trimestres e ano. Com elas é possível voltar 4 meses, adiantar um ano, voltar 2 semanas (14 dias), etc. No exemplo abaixo somamos os resultados de vendas nos primeiros 15 dias do mês.

CALCULATE (
    SUM ( Vendas[Total Venda] );
    DATESBETWEEN (
        CalendarioDAX[Date];
        STARTOFMONTH ( CalendarioDAX[Date] );
        STARTOFMONTH ( CalendarioDAX[Date] ) + 15
    )
)
DATESINPERIOD

Da mesma forma da função acima esta função desloca um número de intervalo de tempo do contexto atual. No exemplo abaixo fazemos o cálculo somando as vendas de 15 dias antes da data atual do contexto. Desta forma teremos as vendas -15 dias para cada data que apareça no contexto.

CALCULATE (
    SUM ( Vendas[Total Venda] );
    DATESINPERIOD (
        CalendarioDAX[Date];
        FIRSTDATE ( CalendarioDAX[Date] );
        -15;
        DAY
    )
)
PARALLELPERIOD

Esta função retorna uma tabela que contenha uma coluna de datas que representa um período paralelo na coluna de datas no contexto atual, com as datas deslocadas em vários intervalos no presente ou no passado. A função PARALLELPERIOD é bem parecida à função DATEADD, exceto pelo fato de que PARALLELPERIOD sempre retorna períodos completos. A função DATEADD retorna períodos parciais. Por exemplo, se você tiver uma seleção de datas começando em 05/04/2017 e terminando em 16/04/2017 e quiser deslocar essa seleção um mês à frente, a função PARALLELPERIOD retornará todas as datas do próximo mês (de 1º de maio a 31 de maio); no entanto, se DATEADD for usada, o resultado só incluirá datas de 05 a 16 de maio. Na fórmula abaixo, retorna a soma das vendas de todo o mês seguinte à data no contexto.

CALCULATE (
    SUM ( Vendas[Total Venda] );
    PARALLELPERIOD ( CalendarioDAX[Date]; 1; MONTH )
)

Abaixo uma imagem dos resultados de todas as funções deste tópico que disponibilizamos no arquivo com todos os exemplos das funções de inteligência de tempo em aplicações práticas. Não deixe de baixar o arquivo para um melhor entendimento do que falamos aqui. Você pode baixar utilizando os links no início ou no fim deste artigo.

Inteligência de tempo com uma tabela de datas

 

Funções que avaliam expressões ao longo de um período de tempo

Este tipo de funções de inteligência de dados temporais avaliam uma expressão durante um período de tempo específico. São funções para simplificar e deixar suas expressões mais curtas. São todas fórmulas que podem ser substituídas pela função CALCULATE juntamente com outra função de inteligência de tempo.

 

TOTALMTD, TOTALQTD e TOTALYTD

Estas três fazem a mesma coisa, mas em período de tempos diferentes.

Como exemplo analisaremos a função TOTALMTD.

Estrutura da fórmula: TOTALMTD (<expressão>; <coluna_datas>)

Exemplo:

TOTALMTD ( 
      SUM ( Vendas[Total Venda] );
      CalendarioDAX[Date] )

Esta fórmula traz o mesmo resultado da fórmula abaixo.

CALCULATE ( 
      SUM ( Vendas[Total Venda] );
      DATESMTD ( CalendarioDAX[Date] )
)

Mas é melhor utilizar a primeira por ser uma fórmula reduzida e com isso utilizamos menos recursos de memória. No exemplo acima, se colocar num gráfico diário, esta função irá somar as vendas acumulando dia a dia um novo valor. No arquivo que disponibilizamos você conseguirá ver este exemplo e outros na prática.

As funções TOTALQTD e TOTALYTD tem a mesma estrutura, mas fazem o acúmulo dos resultados por trimestre e por ano respectivamente. Temos um exemplo da TOTALYTD logo no começo deste artigo.

Dentro desta categoria existem também um grupo de funções que trabalham com balanços de abertura e fechamento. São funções com um apelo específico para área contábil e financeira, não vamos tratar em detalhes destas funções aqui. Coloquei abaixo o link direto ao site da Microsoft onde poderá saber os detalhes técnicos destas funções.

OPENINGBALANCEMONTH (<expressão>, <coluna_datas>)

OPENINGBALANCEQUARTER (<expressão>, <coluna_datas>)

OPENINGBALANCEYEAR (<expressão>, <coluna_datas>)

CLOSINGBALANCEMONTH (<expressão>, <coluna_datas>)

CLOSINGBALANCEQUARTER (<expressão>, <coluna_datas>)

CLOSINGBALANCEYEAR (<expressão>, <coluna_datas>)

Apenas explicando um pouco dos conceitos destas funções. Para alguns as explicações vão parecer meio obvias, mas é importante nivelar todos num mesmo patamar de conhecimento. As funções que começam com OPENING, de abertura, é baseado na última data do período anterior. Aquelas que começam com CLOSING, de fechamento, tratam a última data do período atual. O balanço de abertura para qualquer período é o mesmo que o balanço de fechamento do período anterior.

Há alguma das funções citadas e não detalhadas que queiram um maior detalhamento? Se sim deixe um comentário ao final neste artigo que daremos mais detalhes da função de inteligência de dados temporais solicitada.

Fonte: Office-Microsoft

Marcar como tabela de data. Entenda melhor.

Quando se aplica a configuração “Marcar como tabela de data” a uma tabela, o DAX automaticamente inclui uma função ALL sobre esta tabela em cada fórmula CALCULATE com um filtro sobre coluna utilizado dentro da expressão. Por exemplo, se marcar uma tabela de nome “Calendário” como tabela de data utilizando a coluna “Date” para isto, dá para escrever a seguinte expressão.

CALCULATE ( 
      SUM ( Vendas[Total Venda] );
      DATESYTD ( CalendarioDAX[Date] )
)

Automaticamente a lógica do DAX irá incluir uma função ALL para a tabela “Calendário”, removendo qualquer filtro das outras colunas da mesma tabela. Por trás a expressão ficaria assim.

CALCULATE ( 
      SUM ( Vendas[Total Venda] );
      DATESYTD ( CalendarioDAX[Date] )
      ALL ( CalendarioDAX )
)

Caso esteja utilizando a tabela Calendário com uma coluna de tipo de Data como chave primária para os relacionamentos, mesmo se não aplicar “Marcar como tabela de data” as funções de inteligência de tempo funcionarão normalmente. Isto porque é uma coluna de tipo Data no relacionamento.

Caso o relacionamento da tabela Calendário não seja a partir de uma coluna do tipo Data, aí sim será necessário utilizar a configuração “Marcar como tabela de data” para as funções de inteligência de tempo funcionarem. Ou então pode incluir manualmente a função ALL nas funções que irá utilizar em conjunto para que funcionem adequadamente.

Conclusão

As funções de inteligência do tempo são um dos grandes trunfos da linguagem DAX. Elas dão uma nova perspectiva no trabalho com datas dentro do Power BI ou Power Pivot, deixam esta atividade realmente mais inteligente.

Possibilitam comparativos e cálculos que não é possível com fórmulas de excel ou outras ferramentas de mercado. Deixam o Power BI ainda mais power.

Não deixe de baixar o arquivo do Power BI Desktop com a aplicação prática de todas as funções que falamos neste artigo. Com este arquivo é possível consultar a qualquer tempo como as funções de inteligência de dados temporais funcionam e com isso lhe garantir resolver suas dúvidas rapidamente. Aproveite e baixe o arquivo aqui.

 

Compartilhe este conteúdo nas suas redes sociais (utilize os botões abaixo) e ajude seus colegas a compreender melhor sobre o assunto. Ajude-nos também a espalhar bons conteúdos sobre o Power BI.

Tem dúvidas? Nos pergunte! Utilize a sessão de comentários deste artigo logo abaixo.

Até a próxima!

Aprenda a utilizar todas a função ALLSELECTED e as outras funções ALL disponíveis na linguagem DAX, com suas aplicações dentro do Power BI. As 4 funções tratadas neste artigo são ALL, ALLSELECTED, ALLNOBLANKROW, ALLEXCEPT. É só deslizar para baixo para aprender mais sobre estas funções e tirar aquela dúvida que está te mantando.

Estas funções são do grupo de funções de Filtro, além destas, há outras funções para filtrar informações que são interessantes de se aprender. Mas neste tópico trataremos somente das que levam ALL no nome.

Temos um e-book com outras funções. É gratuito e oferecemos a todos que querem aprender mais sobre linguagem DAX e Power BI. Clique na figura abaixo e baixe seus e-book, totalmente gratuito.

15 funções DAX mais usadas

Antes de mais nada baixe o arquivo do Power BI Desktop em que fizemos todas as fórmulas por este link.

Inserindo uma nova medida no Power BI

Caso ainda não saiba como criar uma medida, segue abaixo um pequeno passa a passo, simples. Todas as fórmulas que utilizaremos aqui seguirá este mesmo padrão.

No Power BI Desktop, conforme a tela abaixo, clique na faixa de opções Modelagem (1) em seguida clique em Nova Medida (2), será aberta uma linha para você digitar a nova medida que será criada (3). Muito simples, não é?

Funções DAX nova medida

Função ALL

Explicamos a função ALL no artigo: 5 funções DAX para usar muito no Power BI , clique e veja como esta função é utilizada geralmente.

Ela retorna todas as linhas de uma tabela, ou todos os valores de uma coluna. Ignora assim qualquer um dos filtros feitos na visualização. A função ALL é utilizada em casos que o cálculo não deve levar em conta nenhum dos filtros, precisando apresentar valor cheio. Ou mesmo quando se necessita dividir algum valor que responde ao filtro por um denominador que não responde.

Ela não pode ser utilizada sozinha e sim como uma função intermediária.

 

Função ALLSELECTED

Esta função faz com que seu cálculo respeite o contexto dos itens selecionados. Enquanto a função ALL remove todos os filtros do cálculo a função ALLSELECTED considera os filtros no cálculo, desconsiderando apenas os filtros e agrupamentos de colunas e linhas.

Vou me explicar melhor com base na figura abaixo:

Função ALLSELECTED e outras

Este é o exemplo que estamos disponibilizando para acompanhar todas as funções deste artigo. Clique para baixar o modelo em PBIX.

Veja acima que a tabela soma o Total de Vendas de produtos (Coluna: Total Venda). Nesta tabela temos o percentual das vendas de cada mês em relação ao ano todo (Coluna: % Vendas ALL), esta coluna foi feita utilizando a função ALL (2). Temos também o percentual das vendas de cada mês considerando somente os meses selecionados (Coluna: % Vendas ALLSELECTED), esta coluna foi feita utilizando a função ALLSELECTED (3).

Vejam que selecionamos 4 meses (1) e a fórmula que utilizamos (ALLSELECTED) respondeu a seleção e calculou o percentual somente em relação a esta seleção. Dividiu cada um dos meses nas linhas pela soma de todos os meses selecionados. Por isso falamos em contexto.

Estrutura da fórmula: ALLSELECTED (<tabela> ou <coluna>)

Nos parâmetros, podemos usar o nome de uma tabela ou coluna existente, neste caso não pode ser uma expressão.

Esta função retorna um valor que responde ao contexto, mas não considera filtros de coluna e linha, ou seja, retém todos os filtros de contexto que não sejam filtros de linhas e de colunas. Diferente da função ALL que não considera filtro algum.

Abaixo está como escrevemos a função que gerou a figura acima no exemplo disponibilizado:

Total Vendas ALLSELECTED =
CALCULATE ( SUM ( Vendas[Total Venda] ); ALLSELECTED ( Vendas ) )

No exemplo, utilizamos o resultado do % de vendas com a função ALLSELECTED, com um gráfico de cascata (waterfall). Este é um dos melhores gráficos para apresentar este tipo de resultado. Veja como ficou.

Grafico Waterfall com função ALLSELECTED

A função ALLSELECTED é complexa, tem diferenças em seu comportamento, neste artigo não entraremos em todas as variantes de resultados que a função pode trazer, mas futuramente teremos um artigo completo sobre esta função específica.

 

Função ALLEXCEPT

Esta função tem quase a mesma lógica do da função ALLSELECTED, mas com efeito contrário. A função ALLEXCEPT remove do resultado os filtros de contexto, exceto filtros que foram aplicados em colunas específicas no campo coluna da fórmula.

Estrutura da fórmula: ALLEXCEPT (<tabela>;[<coluna>])

Primeiro determina a tabela que os filtros de contexto não serão considerados, em seguida a coluna ou colunas que deseje que o filtro de contexto obedeça, ou seja, as colunas que especificar a frente serão consideradas no filtro. Logo mais abaixo exemplifico melhor.

Não é possível usar expressões de tabela ou coluna dentro da função ALLEXCEPT. É uma função que não pode ser utilizada sozinha e sim dentro de uma outra função. O valor de retorno será aquele em que a tabela colocada dentro desta função terá seus filtros removidos, exceto os filtros que estiverem contemplado nas colunas especificadas na continuação da função ALLEXCEPT.

Abaixo está como escrevemos a função utilizada no exemplo disponibilizado.

Total Vendas ALLEXCEPT =
CALCULATE (
    SUM ( Vendas[Total Venda] );
    ALLEXCEPT ( CalendarioDAX; CalendarioDAX[Date] )
)

Para um melhor entendimento desta função vamos analisar a figura abaixo.

Função ALLEXCEPT 1

Vemos os filtros selecionados, de Mês (1) e Categoria (2). A coluna “%Vendas ALL” não responde a nenhum filtro desses, pois utiliza a função ALL. A coluna “% Vendas ALLSELECTED” responde aos 2 campos de filtros, pois utiliza a função ALLSELECTED. Já a coluna “% Vendas ALLEXCEPT” (3) responde somente ao filtro Categoria.

O motivo é porque na fórmula que colocamos acima falamos para o Power BI não considerar a tabela Calendário DAX nos filtros. Isto a fórmula fez, exceto para a coluna “Date”. Caso fosse feito alguma segmentação de dados com a coluna Date, este seria considerado. Visto que está na função como uma coluna que será exceção ao ALLEXCEPT.

Parece complicado, mas não é.

Abaixo fizemos uma nova função usando ALLEXCEPT, mas colocando o nome do mês para ser considerado no cálculo. Veja como ficou a fórmula.

Total Vendas ALLEXCEPT_B =
CALCULATE (
    SUM ( Vendas[Total Venda] );
    ALLEXCEPT ( CalendarioDAX; CalendarioDAX[Date]; CalendarioDAX[NomeMês] )
)

Na tabela estão, lado a lado, o resultado das duas fórmulas ALLEXCEPT para que você compare.

Função ALLEXCEPT 2

Perceba que estão feitos os mesmos filtros que fizemos antes, mas a tabela mostra os valores absolutos e não em percentual. Na coluna “Total Vendas ALLEXCEPT” está o total de vendas da Categoria “Acessórios” (filtrada) sem considerar o filtro de mês. Na Coluna “Total Vendas ALLEXCEPT_B” consta o resultado dessa última fórmula que fizemos.

Observe que nesta última fórmula colocamos que a coluna “NomeMês” seria considerada no filtro, colocando esta coluna nos argumentos da função ALLEXCEPT. Assim dizemos a fórmula que esta coluna não deve entrar na remoção dos filtros. Como o nome do mês é um filtro este é considerado.

 

Função ALLNOBLANKROW

Esta função retorna, a partir de uma tabela determinada, todas as linhas, exceto as em branco. Ou também todos os valores diferentes de uma coluna, exceto a linha que está em branco. Desconsidera todos os filtros de contexto existentes.

Estrutura da fórmula: ALLNOBLANKROW (<tabela> ou <coluna>)

Somente um dos parâmetros é colocado, ou a tabela ou a coluna. Determine qual a tabela ou qual a coluna que os filtros de contexto serão removidos.

Esta função tem boa utilidade no caso de cruzamento entre tabelas, onde falta alguma informação entre as tabelas.

Por exemplo: Na tabela de Vendas há produtos vendidos pelo vendedor “XYZ”, mas este vendedor foi retirado da tabela Vendedores devido a desligamento.

Caso queira apresentar todas as vendas, por vendedores e dividir a proporção pelo total de vendas por vendedor, sem considerar as vendas do vendedor demitido. Esta função pode se aplicar. Assim a função vai desconsiderar as linhas em branco das vendas que foram feitas pelo vendedor “XYZ” do cálculo.

Ainda não temos um exemplo interessante e que resolva qualquer dúvida no assunto, assim que tivermos publicaremos aqui. Por enquanto, caso necessite de mais esclarecimentos sobre esta função entrar no site de referência da Microsoft clicando neste link.

Fique atento para mais artigos sobre o assunto aqui no nosso blog.

As funções de filtro têm papel importantíssimo na montagem de boas estruturas em DAX, elas resolvem muitas necessidades de comparações entre os totais, sem levar em conta o contexto ou mesmo levando este em conta. Utilizamos mais elas nestes casos, mas sempre há outras boas utilizações.

Compartilhe este conteúdo nas suas redes sociais (utilize os botões abaixo) e ajude seus colegas a compreender melhor sobre o assunto.

Tem dúvidas? Nos pergunte! Utilize a sessão de comentários deste artigo logo abaixo.

Até a próxima!

As funções lógicas no Power BI são bem semelhantes às utilizadas no excel. A linguagem DAX (Data Analysis Expression) é a utilizada para criar funções no Power BI.

Estas funções lógicas no Power BI são utilizadas para checar as possibilidades de uma expressão e retornar informações sobre um valor baseado numa condição ou conjunto de condições. Como exemplo temos a função IF (SE) que checa o resultado de uma expressão ou cria resultados condicionais.

Vamos tratar neste artigo mais detalhadamente as principais funções lógicas no Power BI. As que são frequentemente utilizadas nos modelos de dados. Disponibilizamos também um exemplo prático de cada uma. Assim você consegue ver na prática como são utilizadas. Baixe este exemplo para facilitar seu aprendizado.

 

Lista das funções lógicas no Power BI (DAX)

  • AND
  • FALSE
  • IF
  • IFERROR
  • NOT
  • OR
  • SWITCH
  • TRUE

Referência: MSDN MICROSOFT

Inserindo uma nova medida no Power BI

Caso ainda não saiba como criar uma medida, segue abaixo um pequeno passa a passo, simples. Todas as fórmulas que utilizaremos aqui seguirá este mesmo padrão.

No Power BI Desktop, conforme a tela abaixo, clique na faixa de opções Modelagem (1) em seguida clique em Nova Medida (2), será aberta uma linha para você digitar a nova medida que será criada (3). Muito simples, não é?

Funções DAX nova medida

 

IF

A função IF verifica se a condição fornecida como argumento foi atendida, caso seja retornará o valor atribuído como verdadeiro e se não atender retornará o valor atribuído para o falso.

Estrutura da fórmula: IF (<teste lógico>;<valor se verdadeiro>;<valor se falso>)

Termo Definição
teste lógico Qualquer valor ou expressão que possa ser avaliada como VERDADEIRO ou FALSO.
valor se verdadeiro O valor retornado quando o teste lógico é VERDADEIRO. Se ele for omitido, o termo “TRUE” será retornado.
valor se falso O valor retornado quando o teste lógico é FALSO. Se ele for omitido, o termo “FALSE” será retornado.

Caso o valor de <valor se verdadeiro> ou <valor se falso> for omitido, será tratado pelo IF como um valor vazio (“”). Se o valor referenciado na expressão for uma coluna, será retornado um valor que corresponde à linha atual.

Exemplo 1

Exemplo de Função IF 1 =
IF ( MAX ( Funcionarios[Data Status] ) = BLANK (); "Funcionário Ativo"; "" )

Neste exemplo, caso não tenha nenhuma data na coluna “Data Status”, significa que o funcionário está ativo. Veja no quadro o resultado.

Funções lógicas DAX - Função IF

Exemplo 2

Exemplo de Função IF 2 =
IF (
    'Funções'[01-Função IF 1] = BLANK ();
    "";
    IF (
        MAX ( Funcionarios[Status] ) <> "Demissão"
            && YEAR ( MAX ( Funcionarios[Admissão] ) ) < 2010;
        "Muito experiente";
        IF (
            MAX ( Funcionarios[Status] ) <> "Demissão"
                && YEAR ( MAX ( Funcionarios[Admissão] ) ) < 2016;
            "Experiente";
            "Pouco experiente"
        )
    )
)

Neste exemplo, utilizamos três funções IF aninhadas para retornar quatro condições diferentes. A primeira é que se o funcionário não for ativo retornará um valor em branco. Caso seja ativo tem mais outras três condições. Se tiver sido admitido antes de 2010, entre 2010 e 2015 e por fim a partir de 2016. Atendendo cada uma das condições retornará um texto diferente.

Funções lógicas DAX - Função IF 2

 

AND

Esta função verifica se os dois argumentos são verdadeiros, retorna um resultado VERDADEIRO se forem. Caso contrário retornará FALSO. Haverá assim dois resultados possíveis dependendo da combinação de valores disponíveis e testadas.

Estrutura da fórmula: AND (<lógica1>;<lógica2>)

<lógica1>,<lógica2>, corresponde aos valores a serem verificados, pode ser utilizado valores ou expressões.

Diferentemente da fórmula utilizada no excel, em DAX esta função aceita apenas dois argumentos. Para múltiplos argumentos será necessário criar uma série de cálculos combinando funções ou simplificar utilizando o operador && (é o mesmo que AND e note que utilizamos na hora de explicar a função IF acima) para unir as funções AND numa expressão mais simples.

Abaixo o exemplo utilizado no arquivo disponibilizado neste artigo:

 

Exemplo da função AND =
IF (
    AND (
        MAX ( Funcionarios[Data Status] ) <> BLANK ();
        YEAR ( MAX ( Funcionarios[Data Status] ) ) = 2017
    );
    "Inativos em 2017";
    ""
)

Neste exemplo, utilizamos a função juntamente com o IF, utilizada para verificar se o funcionário está inativo e se entrou como inativo em 2017. São duas condições verificadas e, sendo as duas verdadeiras retornará a mensagem de “Inativos em 2017”.

Veja o resultado.

Funções lógicas no Power BI - Função AND

 

OR

Nesta função basta um dos argumentos ser verdadeiro para retornar o resultado como VERDADEIRO. A função retornará FALSO se os dois argumentos não atendem nenhuma das condições.

Estrutura da fórmula: OR (<lógica1>;<lógica2>)

Serão avaliados os argumentos até que o primeiro VERDADEIRO apareça. O valor será VERDADEIRO se algum dos argumentos for atingido, caso nenhum deles seja atingido retornará FALSO.

Do mesmo jeito que AND a função OR em DAX aceita apenas dois argumentos. Se precisar executar uma operação OR em várias expressões, você poderá criar uma série de cálculos ou, melhor ainda, usar o operador OR (||) para unir tudo em uma expressão mais simples.

No nosso arquivo de exemplos você encontrará o seguinte em relação a esta função.

Exemplo da função OR =
IF (
    OR (
        MAX ( Funcionarios[Status] ) = "Licença Maternidade";
        MAX ( Funcionarios[Status] ) = "Auxílio Doença"
    );
    "Inativo";
    ""
)

Veja como ficou o quadro.

Funções lógicas DAX - Função OR

Além das funções lógicas no Power BI citadas neste artigo, há diversas outras funções, sejam matemáticas, estatísticas, dentre outras. Baixe pela figura abaixo nosso e-book contendo outras funções DAX.  Com certeza serão muito uteis para você.

15 funções DAX mais usadas

 

IFERROR

Esta função avalia uma expressão e retorna um valor especificado caso a expressão resulte em um erro; caso não tenha erro, retorna o valor da própria expressão.

Estrutura da fórmula: IFERROR (<valor>;<valor se erro>)

O trabalho desta função é retornar valores válidos em caso de erro no cálculo, por exemplo, uma divisão por zero resultará em erro, multiplicar valores por texto resultará em erro e assim por diante.

No caso de <valor> ou <valor se erro> for uma célula vazia, o IFERROR tratará como um valor vazio (“”).

Esta função se baseia na função IF, com as mesmas características mas com menos argumentos. Caso ocorra algum erro, ao invés de retornar uma mensagem de erro ele retorna o valor especificado.

Segue um exemplo simples para entenderem o funcionamento

Exemplo Simples = IFERROR (50/0; 1)

Observe que a divisão por zero dá erro, mas no caso retornará o valor 1 e não a mensagem de erro.

 

SWITCH

Dentre as funções lógicas no Power BI, esta é função puramente DAX. É de grande ajuda para simplificar o uso do IF. O que quero explicar aqui é que a função SWITCH evita utilizar um punhado de IFs. Entenderão melhor no exemplo que damos.

A função avalia uma expressão em relação a uma lista de opções e retorna um desses resultados de acordo com o contexto.

Estrutura da fórmula: SWITCH (<expressão>; <valor>; <resultado>; <valor1>; <resultado1>; …; <caso contrário>)

Termo Definição
expressão Qualquer expressão DAX que retorne um único valor escalar, onde a expressão será avaliada várias vezes (para cada linha/contexto).
valor Um valor constante a ser correspondido com os resultados.
resultado Qualquer expressão escalar a ser avaliada se os resultados coincidirem com o valor correspondente.
caso contrário Qualquer expressão escalar a ser avaliada se o resultado não coincidir com nenhum dos argumentos de valor.

 

Importante que as expressões de <resultado> e a expressão de <caso contrário> serem do mesmo tipo de dados.

Para facilitar o entendimento segue um exemplo simples.

Exemplo de Função SWITCH =
SWITCH (
    MAX ( CalendarioDAX[Mês] );
    1; "Janeiro";
    2; "Fevereiro";
    3; "Março";
    4; "Abril";
    5; "Maio";
    6; "Junho";
    7; "Julho";
    8; "Agosto";
    9; "Setembro";
    10; "Outubro";
    11; "Novembro";
    12; "Dezembro";
    "Mês não encontrado"
)

Veja o resultado gerado no arquivo que disponibilizamos para você acompanhar cada função.

Funções lógicas no Power BI - Função SWITCH

Se não existisse a função SWITCH seria necessário utilizar várias funções IF aninhadas, abaixo está como ficaria com o IF.

Usando IF ao INVÉS de SWITCH =
IF (
    MAX ( CalendarioDAX[Mês] ) = 1;
    "Janeiro";
    IF (
        MAX ( CalendarioDAX[Mês] ) = 2;
        "Fevereiro";
        IF (
            MAX ( CalendarioDAX[Mês] ) = 3;
            "Março";
            IF (
                MAX ( CalendarioDAX[Mês] ) = 4;
                "Abril";
                IF (
                    MAX ( CalendarioDAX[Mês] ) = 5;
                    "Maio";
                    IF (
                        MAX ( CalendarioDAX[Mês] ) = 6;
                        "Junho";
                        IF (
                            MAX ( CalendarioDAX[Mês] ) = 7;
                            "Julho";
                            IF (
                                MAX ( CalendarioDAX[Mês] ) = 8;
                                "Agosto";
                                IF (
                                    MAX ( CalendarioDAX[Mês] ) = 9;
                                    "Setembro";
                                    IF (
                                        MAX ( CalendarioDAX[Mês] ) = 10;
                                        "Outubro";
                                        IF (
                                            MAX ( CalendarioDAX[Mês] ) = 11;
                                            "Novembro";
                                            IF ( MAX ( CalendarioDAX[Mês] ) = 12; "Dezembro"; "Mês não encontrado" )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    )
)

Dá para ver claramente o quanto a função SWITCH resume e simplifica a fórmula e deixa ela mais enxuta obtendo o mesmo resultado.

 

OUTRAS FUNÇÕES LÓGICAS NO POWER BI

Além das que detalhamos acima temos as funções:

Função Descrição
TRUE Sintaxe: TRUE()

A fórmula retorna o valor lógico TRUE (VERDADEIRO).

FALSE Sintaxe: FALSE()

A fórmula retorna o valor lógico FALSE (FALSO).

NOT Sintaxe: NOT (<lógica>)

Altera o resultado TRUE para FALSE e FALSE para TRUE. Retorna a lógica oposta para estes valores.

 

Com isto falamos de todas as funções lógicas no Power BI disponíveis na linguagem DAX. São funções que serão bastante utilizadas no dia a dia, são bem simples de serem entendidas e utilizadas.

Compartilhe este conteúdo nas suas redes sociais (utilize os botões abaixo) e ajude seus colegas a compreender melhor sobre o assunto.

Tem dúvidas? Nos pergunte! Utilize a sessão de comentários deste artigo logo abaixo.

Até a próxima!

Por serem funções DAX simples, as funções que listamos neste artigo acabam não ganhando muito destaque em tutoriais na internet. Mas estas funções provavelmente serão utilizadas em quase todos os modelos de dados, tanto em Power BI quanto em Power Query.

Elas são imprescindíveis e é importante entender melhor o funcionamento destas funções DAX simples e quando é melhor utilizá-las.

Estas funções fazem parte do grupo de funções estatísticas e matemáticas da linguagem DAX e você pode encontrar essas e mais funções neste link. É claro que na página da Microsoft não terão explicações tão detalhadas e com exemplo que disponibilizamos aqui, mas vale como referência.

Quer aprender mais sobre funções DAX? No e-book que oferecemos abaixo falamos mais sobre a linguagem DAX e Power BI. Clique na figura e baixe seu e-book, totalmente gratuito.

15 funções DAX mais usadas

Antes de começarmos com as explicações baixe o arquivo do Power BI Desktop em que fizemos todas as funções DAX explicadas aqui.

4 FUNÇÕES DAX SIMPLES

Apesar de serem simples são de suma importância na confecção de um bom modelo de dados em Power BI e Power Query. Serão muito utilizadas, falaremos aqui sobre as funções AVERAGE (Média), MAX (Máximo), MIN (Mínimo) e SUM (Soma).

Apesar de serem simples são de suma importância na confecção de um bom modelo de dados em Power BI e Power Query. Serão muito utilizadas, falaremos aqui sobre as funções AVERAGE (Média), MAX (Máximo), MIN (Mínimo) e SUM (Soma).

Inserindo uma nova medida no Power BI

Caso ainda não saiba como criar uma medida, segue abaixo um pequeno passa a passo, simples. Todas as fórmulas que utilizaremos aqui seguirá este mesmo padrão.

No Power BI Desktop, conforme a tela abaixo, clique na faixa de opções Modelagem (1) em seguida clique em Nova Medida (2), será aberta uma linha para você digitar a nova medida que será criada (3). Muito simples, não é?

Funções DAX simples 1

AVERAGE

Esta é a primeira das funções DAX simples que tratamos no artigo. Pertence ao grupo de funções estatísticas.

Retorna o valor da MÉDIA (aritmética) de todos os números de uma coluna

Estrutura da fórmula: AVERAGE (<coluna>)

Utilize a função AVERAGE em colunas numéricas. Retorna um número decimal como resultado, que é a média aritmética (conhecida também como média simples) da coluna.

Ao calcular a média, lembre-se da diferença entre uma célula vazia e uma célula contendo o valor 0 (zero). Quando uma célula contiver 0, ela será adicionada à soma de números e a linha será contada entre o número de linhas usadas como o divisor. Porém, quando uma célula contiver um espaço em branco, a linha não será contada.

Em caso de células que contenham somente texto a função retornará espaços em branco.

Abaixo o exemplo utilizado no arquivo disponibilizado neste artigo:

Média diária de vendas = AVERAGE(Vendas[Valor])

 

MAX

Pertence ao grupo de funções estatísticas. Esta função retorna o maior valor numérico de uma coluna.

Estrutura da fórmula: MAX (<coluna>)

Retorna um número decimal como resultado. Deve ser utilizada em colunas numéricas. Caso a coluna não contenha números a função retornará um espaço em branco. Células vazias, valores lógicos e texto são ignorados.

Abaixo o exemplo utilizado no arquivo disponibilizado neste artigo:

Maior valor de venda num dia = MAX(Vendas[Valor])

 

MIN

Pertence ao grupo de funções estatísticas. Ao contrário da função anterior, retorna o menor valor numérico de uma coluna.

Estrutura da fórmula: MIN (<coluna>)

Retorna um número decimal como resultado. Deve ser utilizada em colunas numéricas. Caso a coluna não contenha números a função retornará um espaço em branco. Células vazias, valores lógicos e texto são ignorados.

Abaixo o exemplo utilizado no arquivo disponibilizado neste artigo:

Menor valor de venda num dia = MIN(Vendas[Valor])

 

SUM

Pertence ao grupo de funções matemáticas e trigonométricas. Faz a adição de todos os valores de uma coluna.

Estrutura da fórmula: SUM (<coluna>)

Com certeza esta é, das funções DAX simples, a que mais será utilizada.

Retorna um número decimal como resultado. Para linha que não são números retornará espaços em branco.

Abaixo o exemplo utilizado no arquivo disponibilizado neste artigo:

Total de vendas = SUM(Vendas[Valor])

 

Estas foram as 4 funções DAX simples consideradas por nós. São funções essenciais e presentes para todos que usam a linguagem DAX. Temos mais artigos sobre DAX aqui no site.

No artigo 5 funções DAX para usar muito no Power BI temos mais funções DAX para aprender. E se quiser saber sobre as funções de contar linhas temos as 4 funções DAX para contar essenciais no Power BI.

Compartilhe este conteúdo nas suas redes sociais (utilize os botões abaixo) e ajude seus colegas a compreender melhor sobre o assunto.

Tem dúvidas? Nos pergunte! Utilize a sessão de comentários deste artigo logo abaixo.

Até a próxima!

As funções DAX para contar são de extrema importância em aplicações que tratam banco de dados, como o Power BI. São por estas funções que podemos saber quantos registros há para cada critério que queremos desenvolver.

Geralmente cada linha corresponde a um registro, que pode ser uma venda, um resultado, um dia contendo uma soma de resultados, um produto, uma definição, etc. As funções DAX para contar fazem o papel de contar cada um destes registros. Com isto conseguimos saber, quantos produtos, quantas vendas, quantos dias, quantas ocorrências, etc…

Trataremos aqui as quatro funções mais utilizadas nos modelos de dados do Power BI. Existem outras, que tratamos aqui no blog em outros artigos. As funções DAX para contar fazem parte do grupo de funções estatísticas da linguagem DAX e você pode encontrar todas as outras funções deste grupo no link.

Algumas destas funções e mais você terá no e-book gratuito que oferecemos a todos que querem aprender mais sobre linguagem DAX e Power BI. Clique na figura abaixo e baixe seu e-book, totalmente gratuito.

15 funções DAX mais usadas

 

Antes de mais nada baixe o arquivo do Power BI Desktop em que fizemos todas as fórmulas por este link.

FUNÇÕES DAX PARA CONTAR

Inserindo uma nova medida no Power BI

Caso ainda não saiba como criar uma medida, segue abaixo um pequeno passa a passo, simples. Todas as fórmulas que utilizaremos aqui seguirá este mesmo padrão.

No Power BI Desktop, conforme a tela abaixo, clique na faixa de opções Modelagem (1) em seguida clique em Nova Medida (2), será aberta uma linha para você digitar a nova medida que será criada (3). Muito simples, não é?

funções DAX para contar 1

Função COUNT

Conta o número de células de uma coluna que contém números. Esta função não conta células vazias ou em branco.

Estrutura da fórmula: COUNT (<coluna>)

Utilize a função COUNT em colunas numéricas, mas uma aplicação interessante é usar em colunas que possuem mais de um tipo de valor. Ou seja, se uma mesma coluna tem campos de números e textos, essa função contará apenas a quantidade de células que estão preenchidas com números.

Abaixo o exemplo utilizado no arquivo disponibilizado neste artigo:

Contando números = COUNT(Vendas[Data Compra])

 

Função COUNTA

Conta o número de células, que não estão vazias, de uma coluna. Esta função conta todos os valores da coluna, exceto células vazias. Conta células com números, texto, datas, valores lógicos, etc.

Estrutura da fórmula: COUNTA (<coluna>)

Se precisar contar colunas que contenham somente números é melhor usar a função COUNT, dentre as funções DAX para contar utilize esta quando a coluna conter dados não numéricos.

Abaixo o exemplo utilizado no arquivo disponibilizado neste artigo:

Contando valores = COUNTA(Local[Cidade])

 

Função COUNTROWS

Conta o número de linhas na tabela especificada ou em uma tabela definida por uma expressão.

Estrutura da fórmula: COUNTROWS (<tabela>)

Esta fórmula conta todas as linhas de uma tabela, independentemente se há células ou colunas vazias. Diferentemente das duas anteriores que tratam a coluna e célula esta trata a tabela como um todo.

A fórmula COUNTROWS é muito útil para tabelas em que cada linha representa um registro único, ou seja, se contarmos as linhas, teremos exatamente o resultado desejado.

Abaixo o exemplo utilizado no arquivo disponibilizado neste artigo:

Contando linhas = COUNTROWS(Calendario)

 

Função DISTINCTCOUNT

Esta função conta o número de células diferentes em uma coluna de números.

Estrutura da fórmula: DISTINCTCOUNT (<coluna>)

Das funções DAX para contar esta é extremamente útil para identificar a quantidade de valores únicos. Numa coluna pode haver o mesmo valor repetindo 5, 10 ou mais vezes, ela contará este valor somente uma vez.

É possível usar colunas que contêm qualquer tipo de dados. Quando a função não localizar nenhuma linha para contar, ela retornará BLANK; caso contrário, retornará a contagem de valores distintos.

Abaixo o exemplo utilizado no arquivo disponibilizado neste artigo:

Valores distintos = DISTINCTCOUNT(Vendas[Quantidade])

 

Com isto tratamos das 4 funções DAX para contar que consideramos essenciais a todos aqueles que trabalham com Power BI ou Power Pivot. Há outras funções DAX para contar disponíveis que são tratadas aqui no site também.

No artigo 5 funções DAX para usar muito no Power BI temos mais sobre as funções DAX, confira, tenho certeza que vai aprender algo que ainda não sabe.

Compartilhe este conteúdo nas suas redes sociais (utilize os botões abaixo) e ajude seus colegas a compreender melhor sobre o assunto.

Tem dúvidas? Nos pergunte! Utilize a sessão de comentários deste artigo logo abaixo.

Até a próxima!