Вы находитесь на странице: 1из 45

paulorsantos.

com
Sobre me

• Profissional da área de Tecnologia da Informação com mais de 10 anos de


experiência e vivência no exterior.
• Graduado em Tecnologia em Análise e Desenvolvimento de Sistemas
• Pós Graduando em Business Intelligence e Big Data.
• Palestrante de inovação e tecnologia nacional e internacional.
• Experiência em todos os aspectos de administração de banco de dados.
• Experiência em todas as etapas de um projeto de BI e Big Data, desde a sua
concepção a sua implantação.
• Experiências em clientes dos mais diversos ramos de atividades: Educacional,
TV,Financeiro, Varejo, Suprimentos, Automobilístico, Saúde, Alimentos e Bebidas.
paulorsantos.com
Pesquisa

•Seu nome / empresa / departamento


•Sua experiência com o Power BI?
•Como você deseja usar o Power BI no seu trabalho?
•Sua experiência em programação geral / BI / Excel?
•O que você espera deste treinamento?
paulorsantos.com
Organização deste curso

• Início: das 09: 00h às 18: 00h

• Parada
• 2 pausas de 15 minutos
• Almoço 30 minutos

• Telefones (quieto por gentileza)

• Sinta-se à vontade para perguntar em QUALQUER momento

• Estilo de Treinamento:
• Ouça e veja então AÇÃO
paulorsantos.com
Funções DAX
• DAX DATA ANALYSIS EXPRESSIONS • Funções de agregação
• Coleção de funções, operadores e • Funções de contagem
constantes que podem ser usados • Funções lógicas
em uma fórmula ou expressão, para
calcular e retornar um ou mais • Funções de informações
valores. • Funções de texto
• Funções de data
• Funções semelhantes às do Excel
paulorsantos.com

• Linguagem do Power • Linguagem voltada para


Query, voltada para análise de dados
manipulação, limpeza e
preparação de dados
• Voltado para
modelagem de negócio
• Voltado para ETL
M vs DAX
• Pode referenciar colunas
• Sempre que possível é de quaisquer
preferível criar colunas e • tabelas através de
tabelas pelo Power Query relacionamentos e
devido à melhor Lookup
compressão

• Pode referenciar apenas


colunas da mesma tabela
paulorsantos.com

• Contexto de linha • Contexto de filtro


Coluna • Valor calculado para cada • Calculada somente para
Calculada x linha da tabela as linhas visíveis nos
• Utilizado quando se visuais do relatório
Medida deseja expor os valores em • Mais eficientes
um eixo do gráfico ou computacionalmente
quando se deseja fazer • Utilizada sempre que
classificar os dados com tivermos valores para
base nos valores calculados expor em um gráfico
• Consomem memória e • Consomem CPU apenas
são recalculadas a cada
atualização
paulorsantos.com

1
2

• 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.
Operadores
Operadores O que faz? Exemplo Resultado
+ Somar =2+5 7
- Subtrair =8-3 5
* Multiplicar = 15 * 3 45
/ Dividir = 20 / 2 10
^ Potência =2^3 8
& Concatenar = “Paulo" & " " & “Santos" Paulo Santos
Comparadores
Comparadores O que faz? Exemplo Resultado
= Igual =4=6 False
< Menor =3<6 True
> Maior =3>8 False
<= Menor ou Igual = 3 <= 5 True
>= Maior ou igual = 3 >= 5 False
<> Diferente = 3 <> 5 False
&& E = 3 < 5 && 3 < 4 False
|| OU = 3 < 5 || 3 < 2 True

IN Está contido na = "SP" IN {"RJ", "SP", "MG", "ES"} True


lista
paulorsantos.com
O que é um Contexto de Filtro em Medidas?

• O que essa fórmula faz?

Total Vendas=
Sum(Tabela[Venda]) Total de Vendas por Total Vendas

XX $ 1.530,00

Total Vendas XY 4.000,00


$ 10.530 XXY $5.000,00

Total $10.530,00
Coluna Calculada x Medida paulorsantos.com

Produto Vendas Lucro Margem Produto SUM SUM SUM


XX 200 20 0,10 Venda Lucro Margem
XX 100 15 0,15 XX 380 55 0,50
XX 80 20 0,25 XY 220 32 0,30
XY 120 12 0,10
XY 100 20 0,20

[Margem Correta] =
SUM ( Tabela[Lucro] ) / SUM ( Tabela[Venda] )

Tabela[Margem] =
Tabela[Lucro] / Tabela[Venda]
paulorsantos.com

Funções de Data e Hora


paulorsantos.com

Funções de Data e Hora


Essas funções ajudam você a criar cálculos com
base em datas e horas. Muitas das funções no
DAX são semelhantes às funções de data e hora
do Excel. No entanto, as funções do DAX usam
um tipo de dados datetime e podem obter
valores de uma coluna como um argumento.
• Função DATE = DATE(2018,1,01)
Retorna o dia 01/Jan/2018

• Função TODAY = TODAY()


Retorna a data atual
• Função YEAR = YEAR(dCalendario[Data])
Retorna o ano referente á data
• Função MONTH = MONTH(dCalendario[Data])
Retorna o mês referente á data
• Função DAY = DAY(dCalendario[Data])
Retorna o dia referente á data
• Função Nome Mês = FORMAT(dCalendario[Data]; ”mmmm”)
Retorna o Mês Nome
• Função Nome Dia = FORMAT(dCalendario[Data]; ”dddd”)
Retorna o Dia
• Função Mês-Ano = FORMAT(dCalendario[Data]; ”mmm,yy”)

• F. CALENDAR = CALENDAR (DATE(2019;1;1); DATE (2019;12;31)) Retorna o Mês-Ano

paulorsantos.com
paulorsantos.com

Funções de Calculo
COUNTROWS paulorsantos.com

• Conta o número de linhas na tabela especificada ou em uma tabela


definida por uma expressão.
• Sintaxe: COUNTROWS(<COLUNA>)
• Como cada registro de nossa base de dados equivale ao registro de uma
venda, se contarmos a quantidade de linhas, estaremos contando a
quantidade de vendas. A função COUNTROWS é muito utilizada para
tabelas em que cada linha representa um registro único, ou seja, se
contarmos as linhas, estaremos contando os registros. É importante
ressaltar que essa fórmula conta as linhas de toda a tabela e não
somente de uma coluna específica.
• Total de Vendas = COUNTROWS(Vendas)
• Valor retornado: 388.992
COUNT paulorsantos.com

• Conta o número de células de uma coluna que contêm números.


• Sintaxe: COUNT(<coluna>)
• A função COUNT é muito similar com a COUNTROWS, porém ela é mais
usada com 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 campos que estão preenchidas com números.
• No nosso caso, o resultado é 388,990, pois temos dois campos que estão
sem preenchimento, ou seja, não são números.

• Qtd de Operações =COUNT(Vendas[Quantidade])


• Valor retornado: 388.992
COUNTA paulorsantos.com

• Conta o número de campos de uma coluna que não estão vazias. Ela conta
não somente as linhas contendo valores numéricos, mas também as linhas
contendo valores não vazios, inclusive texto, datas e valores lógicos.
• Sintaxe: COUNTA(<coluna>)
• Para finalizarmos as funções de Contagem, temos a função COUNTA. Ela
basicamente conta todos os tipos de campo de uma coluna.
• Diferente da função COUNT (que conta apenas números), a função
COUNTA conta textos, datas, números, contanto os campos que não
estejam vazias.
• Total de Registros = COUNTA(Vendas[ID Cliente])
• Valor retornado: 388.992
MAX paulorsantos.com

• Retorna o maior valor numérico de uma coluna.


• Sintaxe: MAX(<coluna>)
• A função MAX é utilizada quando se quer obter o maior valor de uma
coluna. No nosso caso, o maior valor para Preço de Venda.
• Outras aplicações seria: Maior Desconto, Maior Preço de Custo, Maior
Unidades Vendidas em uma única operação de Venda. É possível descobrir
também o último dia disponível. Ou seja, se aplicarmos a função MAX na
coluna Data, o valor retornado será a maior data da tabela.

• Maior Preço de Venda = MAX(Vendas[Valor Venda])


• Valor retornado: 92.255,71
MIN paulorsantos.com

• Retorna o menor valor numérico de uma coluna. Ignora valores lógicos e


texto.
• Sintaxe: MIN(<coluna>)
• A função MIN é inversa da função MAX. Ela retorna o menor valor de uma
coluna. No nosso caso, estamos buscando a menor quantidade vendida em
uma operação.
• Além do uso com números, essa função também pode ser usada para
datas. Dessa forma, se precisar descobrir a data mais antiga de uma
coluna, basta aplicar a função MIN.
• Menor Qtd Vendida = MIN(Vendas[Quantidade])
• Valor retornado: 1
SUM paulorsantos.com

• Adiciona todos os números de uma coluna.


• Sintaxe: SUM(<coluna>)
• Uma das fórmulas mais utilizadas em base de dados com valores é a
função SUM. Ela soma todos os valores de uma coluna.
• Então é possível totalizar as Quantidades Vendidas (como no exemplo), ou
o Valor Total de Vendas, ou ainda o Valor Total de Desconto, entre outros.

• Quantidade Vendida = SUM(Vendas[Quantidade])


• Valor retornado: 2.966.212
SUMX paulorsantos.com

• Retorna a soma de uma expressão avaliada para cada linha de uma tabela.
• Sintaxe: SUMX (<tabela>;<expression>)
• A função SUMX é um mestre na linguagem DAX. Supondo que você quer
multiplicar/dividir uma coluna por outra, ou somar/subtrair uma por outra,
ou ainda elevar uma coluna ao quadrado da outra, é só usar a função
SUMX!
• Ela recebe como parâmetro principal, na qual você informa qual operação
deverá ser efetuada em cada linha. Com isso, cria-se uma “coluna
temporária” que é somada para retornar o resultado final.
• Neste caso, apuramos o Lucro subtraindo o Preço de Venda e o Preço de
Custo em cada linha, e depois totalizando.
• Total Lucro X = Sumx(Vendas;[Vlr Total Vendas]-[Total Custo X])
• Valor retornado: 90.702
AVERAGE paulorsantos.com

• Retorna a média (aritmética) de todos os números de uma coluna.


• Sintaxe: AVERAGE (<coluna>)
• A função AVERAGE calcula e retorna a média dos valores de uma coluna.
• A aplicação dessa fórmula é muito utilizada para saber Média de Vendas,
Preço Médio, Custo Médio dos Produtos, entre outras cálculos.
• Média do Preço de Custo = AVERAGE(Total Custo)
• Valor retornado: 777,79
ALL paulorsantos.com

• Retorna todas as linhas de uma tabela ou todos os valores de uma coluna,


ignorando qualquer filtro que possa ter sido aplicado. Esta função é usada para
limpar filtros e criar cálculos em todas as linhas em uma tabela.
Sintaxe: ALL ({<tabela>} | ;<coluna>[,<COLUNA>[,....]]]})

• A função ALL geralmente é utilizada dentro de um contexto, ou seja, dentro de


uma fórmula. Ela faz com que a expressão calculada ignore todos os filtros
aplicados no dashboard.
• Isso significa que se você precisa calcular uma medida que não pode ser
impactada pelos filtros disponíveis no relatório ou nos gráficos, é só empregar a
função ALL. Geralmente usa-se para o cálculo de Representatividade ou valor
Globais/Acumulados.
• .% Represent Unid X = sumx(Vendas;[Quantidade
Vendida])/Sumx(all(Vendas);[Quantidade Vendida])
ALLEXCEPT paulorsantos.com

• Remove todos os filtros de contexto na tabela, exceto filtros que foram


aplicados às colunas especificadas.
Sintaxe: ALLEXCEPT ({<tabela>} | ;<coluna>[,<COLUNA>[,....]]]})
• A função ALLEXCEPT trabalha de forma similar à função ALL, ou seja, ela
também ignora todos os filtros aplicados no relatório. A diferença é que
com essa função é possível estabelecer colunas que podem ser filtradas e
são tratadas como exceção.
• Neste caso, calculamos a representatividade das unidades vendidas,
desconsiderando qualquer filtro, exceto o de ID cliente. Ou seja, filtros
realizados na coluna “Segmento” não serão aplicados, mas filtros na coluna
“País” afetarão os resultados.
• % Represent Unid 2 x =
SUMX(Vendas;Vendas[Quantidade])/SUMX(ALLEXCEPT(Vendas;Vendas[I
D Cliente]);Vendas[Quantidade])
FILTER paulorsantos.com

• Retorna uma tabela que representa um subconjunto de outra tabela ou


expressão.
Sintaxe: FILTER(<tabela>;<filtro>)
• A função FILTER é uma função que aplica filtros diretamente em uma
tabela e retorna um valor.
• Ela geralmente é usado dentro de uma outra função (como SUM, SUMX,
CALCULATE, etc).
• Neste caso, estamos usando a FILTER para que a SUMX seja efetuada
apenas quando o ID CLIENTE for igual a (10).
• Vendas id10 Shannon Carlson = sumx(filter(Vendas;Vendas[ID
Cliente]="10"); [Vlr Total Vendas])
• Valor retornado: 6172
RANKX paulorsantos.com

• Retorna a classificação de um número em uma lista de números para cada


linha no argumento ‘tabela’.
• Sintaxe: RANKX (<tabela>;<expressao>)
• A formula RANKX avalia uma expressão (que pode ser SUM, AVERAGE,
COUNTROWS, etc) e retorna um ranking.
• Neste caso, estamos pedindo o ranking das Quantidades Vendidas na
tabela Vendas.
• Obs: aplicamos o filtro ALL para que o Ranking não seja alterado por filtros
na coluna Produto.
• Ranking Vendas = RANKX(all(Protudo[Produto]);[Quantidade Vendida])
• Valor retornado: Ranking dos produtos vendidos
CALCULATE paulorsantos.com
• Avalia uma expressão em um contexto que é modificado pelos filtros
especificados.
• Sintaxe: CALCULATE (<expressao>;<FILTER1>;<FILTER2>...)
• A função CALCULATE é muito utilizada no Power BI, pois ela permite calcular
diversas expressões (SUM, AVERAGE, COUNTROWS, MAX, MIN, entre outros)
considerando filtros pré-definidos.
• Ou seja, é possível estabelecer em qual contexto você quer que a expressão seja
calculada.
• Neste caso, estamos calculando a soma das Unidades Vendidas ignorando
qualquer filtro na tabela Vendas. Então, aplicamos a operação matemática que
queremos fazer (SUM) e o filtro que deve ser aplicado (ALL).
• Assim, temos a quantidade global de vendas
• Quantidade Vendida Global =
CALCULATE(SUM(Vendas[Quantidade]);ALL(Vendas))
• Valor retornado: 2.966.212
IF paulorsantos.com
• Verifica se uma condição fornecida como o primeiro argumento foi
atendida. Retorna um valor se a condição é Verdadeiro; retorna outro valor
se a condição é Falso.
• Sintaxe: IF(teste_logico; valor_verdadeiro; valor_se_falso)
• Se você já trabalhou com o Excel, sabe que a função SE é muito utilizada
para verificação de informações e criação de colunas auxiliares.
• No Power BI, a função IF também tem esse objetivo. Ela realiza um teste
lógico e retorna valores Verdadeiros/Falso.
• Neste caso, queremos obter apenas os 3 primeiros itens do nosso Ranking
de Vendas. Para isso, aplicamos a função IF para verificar “se o Ranking de
Vendas for menor ou igual a 3, retornará o Ranking de Vendas, caso
contrário, retornará uma célula em branco (Blank)”).
• Top 3 Ranking = IF([Ranking Vendas]<=3;[Ranking Vendas];BLANK())
Declarando de variáveis DAX paulorsantos.com

• Organização
• Performance, melhorando o desempenho da medida.
• Os resultado não são recalculados Date vAR =
• Crie uma dcalandario com variável GENERATE(
CALENDAR ( DATE ( 2019; 1; 1 );DATE ( 2019; 12; 31
) );
VAR currentDay = [Date]
VAR day = DAY( currentDay )
VAR month = MONTH ( currentDay )
VAR year = YEAR ( currentDay )
RETURN ROW (
Vamos voltar SumX e Recriar Var "day"; day;
"month"; month;
"year"; year )
)
paulorsantos.com

•Funções lógicas
Função (IF) paulorsantos.com

• 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.
• Sintaxe: IF (<teste lógico>;<valor se verdadeiro>;<valor se
falso>)

=IF(AND (13>7;9<5),
“Verdade”; Retorna “Falso”
“Falso”
Função (IF) paulorsantos.com

• Verifique os status do funcionários.

• Neste caso, caso não tenha nenhuma data na coluna “Data Status”,
significa que o funcionário está ativo.

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

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"
)
)
)
Função (IF) paulorsantos.com

• Verifique os status do funcionários.

• Neste caso, 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ção (AND) paulorsantos.com

• 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.
• Sintaxe: AND (<lógica1>;<lógica2>)

=AND (12>7;10<5) Retorna False


Função (AND) paulorsantos.com

Verifique os status dos funcionários.

Neste caso, 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”.

Função AND =
IF (
AND (
MAX ( Funcionarios[Data Status] ) <> BLANK ();
YEAR ( MAX ( Funcionarios[Data Status] ) ) = 2017);
"Inativos em 2017";
"")
Função (OR) paulorsantos.com

• 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.
• Sintaxe: OR (<lógica1>;<lógica2>)

=OR (12>7,10<5)
=IF(OR (12>7;10<5) Retorna “Verdade”
“Verdade”;
“Falso”
Função (OR) paulorsantos.com

• Verifique os status do funcionários.

Função OR =
IF (
OR (
MAX ( Funcionarios[Status] ) = "Licença Maternidade";
MAX ( Funcionarios[Status] ) = "Auxílio Doença");
"Inativo";
"")
Função (IFERROR) paulorsantos.com

• 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.
• Sintaxe: IFERROR (<valor>;<valor se erro>)

=IFERRO (30/0,0) Retorna 0


Função (IFERROR) paulorsantos.com

• Verifique os status do funcionários.

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.
Função (SWITCH) paulorsantos.com

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.
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. Função SWITCH =
SWITCH (
Sintaxe: SWITCH (<expressão>; <valor>; <resultado>; MAX ( CalendarioDAX[Mês] );
1; "Janeiro";
<valor1>; <resultado1>; …; <caso contrário>) 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")
OUTRAS FUNÇÕES LÓGICAS paulorsantos.com

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.

Falamos de todas as funções lógicas disponíveis na linguagem DAX. São funções


que são bastante utilizadas no dia a dia.
Data Analysis Expressions (DAX) Reference paulorsantos.com

•https://docs.microsoft.com/pt-br/dax/data-
analysis-expressions-dax-reference
•https://dax.guide/

Вам также может понравиться