top of page

Alguns Exemplos de funções básicas DAX

Atualizado: 4 de set. de 2023


-- Exemplo de classificação utilizando o SWITCH


NovaColuna =

SWITCH (

TRUE (),

A_QP_SQL[TEMPO_CASA_DIA] < 3650, "Entre 0 a 10 anos",

A_QP_SQL[TEMPO_CASA_DIA] < 7300, "Entre 10 a 20 anos",

"Maior que 20 anos de empresa"

)


--- Extrair e concatenar texto e posteriormente transformá-lo em formato de data:

data_ref = DATEVALUE(MID([Nome da Origem], 7,2) & "/" & MID([Nome da Origem], 4,2) & "/20" & MID([Nome da Origem], 1,2))


data_ref = MID([Data], 7,4) & MID([Data], 4,2) & MID([Data], 1,2)


--- Pegar a data final do mês anterior:

Medida = CONCATENATE("Data Ref.: ",EOMONTH(TODAY(),-1))


--- Pegar o mês de 12 meses atras:

Medida = EOMONTH(TODAY(),-13)



--- CALCULATE com DISTINCTCOUNT e FILTER


% SEDE = CALCULATE(DISTINCTCOUNT('layout power bi'[NOME]),FILTER('layout power bi','layout power bi'[SEDE OU UNID]="Sede"))


--- SOMAR com filtro

Medida = CALCULATE(SUM('tabela'[coluna]),FILTER('tabela', 'tabela'[colunaComCriterio] = "texto para filtrar"))


SOMA EIXO COMPOTAMENTAL = CALCULATE(SUM('BASE_T&D'[PREVISÃO]),FILTER('BASE_T&D', 'BASE_T&D'[EIXO DO TREIN.] = "COMPORTAMENTAL"))


AUTONOMOS_PJ_HORAS = CALCULATE(SUM(PJ_ARMG317[horas]))


COLAB FEMININO N GESTORAS = CALCULATE(COUNTROWS('A_QP_SQL'),'A_QP_SQL'[SEXO]="FEMININO",'A_QP_SQL'[GESTOR]="0")


Abono_Liberalidade = CALCULATE([Abono_Total],ABONO[CLASSIFICACAO_ABS]="LIBERALIDADE")



--- SOMAR tudo por coluna

Abono_Total = SUM(ABONO[HORA FINAL])



--- SOMAR com variável


SOMA LIBERALIDADE = VAR _qntLIBERALIDADE = COUNTAX(FILTER('ABONO',[CLASSIFICACAO_ABS]="LIBERALIDADE"),[CLASSIFICACAO_ABS]) RETURN IF(ISBLANK(_qntLIBERALIDADE),0,_qntLIBERALIDADE)


--- CONTAR com filtro


Medida = COUNTAX(FILTER('tabela',[colunaComCriterio]="texto para filtrar"),[colunaFiltro])


TOTAL EIXO COMPORTAMENTAL = COUNTAX(FILTER('BASE_T&D',[EIXO DO TREIN.]="COMPORTAMENTAL"),[EIXO DO TREIN.])


M.% GESTOR x F = COUNTAX(FILTER('A_QP_SQL',[SEXO]="FEMININO"),[GESTOR]) / COUNTAX(FILTER('A_QP_SQL',[SEXO]="FEMININO"),[SEXO])


--- CONTAR com 2 filtros ou +


M.QNT ESTAGIARIO TOTAL = CALCULATE(COUNTROWS('A_QP_SQL'),'A_QP_SQL'[CARGO]="ESTAGIARIO",'A_QP_SQL'[COD_SIT]="A")


--- CONTAR linhas


AUTONOMOS_CPSA = COUNTROWS(CPSA_ARMG317)


MEDIDA = COUNTX(FILTER('BASE_TAB', [RECEBIMENTO] IN {"mensalista", "horista"} && [demissao_ano] = 2023), 1)


O valor 1 é usado como segundo argumento da função COUNTX para contar o número de linhas não vazias na tabela filtrada.


--- MÉDIA


M.ATESTADOS.MEDIA.DIA = AVERAGE(BASE_ATESTADOs[DIAS DE ATESTADO])



--- DISTINCT COUNT


M.ATESTADOS.MEDIA.MENSAL = DIVIDE([M.ATESTADOS.TOTAL.ATESTADOS],DISTINCTCOUNT(BASE_ATESTADOs[MES_ANO]))


M.ATESTADOS.TOTAL.FUNC = DISTINCTCOUNT(BASE_ATESTADOs[CHAPA])



--- RANKING


M.ATESTADOS.TOTAL.ATESTADOS ranking = RANKX(ALL(BASE_ATESTADOs[DIAS DE ATESTADO]),[M.ATESTADOS.TOTAL.DIAS])



--- ARRENDONDAMENTO


M.PDC.SALDO = ROUND([M.QNT COLAB PCD]-[M. COTA PCD EXIGIDA],+0)


--- LINGUAGEM


Medida 2 = USERCULTURE()


--- NOME USUÁRIO


NomeUser = USERNAME()



--- divisão


QNT.DEMISSAO_% = ((([QNT.DEMISSAO_VOLUNTARIA]+[QNT.DEMISSAO_INVOLUNTARIA]) / [M.QNT COLABORADORES]) -1)



RESULT.AGP.TXT000 = CALCULATE(COUNTROWS(QP_EXCEL_ANT),FILTER(QP_EXCEL_ANT,QP_EXCEL_ANT[CLASSIFICACAO]="ADMINISTRATIVO"),FILTER(QP_EXCEL_ANT,QP_EXCEL_ANT[fn]="Mar.23")) / CALCULATE(COUNTROWS(QP_EXCEL_ANT),FILTER(QP_EXCEL_ANT,QP_EXCEL_ANT[CLASSIFICACAO]="ADMINISTRATIVO"),FILTER(QP_EXCEL_ANT,QP_EXCEL_ANT[fn]="Mar.22")) -1



--- IF



Se um determinado campo for em branco será retornado 0, se não, será calculado os dias úteis entre duas datas:


TempoAprovacaoDO_g2 = IF(ISBLANK('BASE_GERAL_TOTVS'[NOME_PARECER_GRUPO2]), 0, VALUE(abs(NETWORKDAYS('BASE_GERAL_TOTVS'[DATAPARECERGRUPO2], 'BASE_GERAL_TOTVS'[DATAPARECERGRUPO1]))))


com texto:


TempoAprovacaoDO_g2 = IF('BASE_GERAL_TOTVS'[NOME_PARECER_GRUPO2] = BLANK(), "SIM","NÃO")



*** VERIFICAR SE AS CONDIÇÕES SÃO VERDADEIRAS:


Verificar Cota = SWITCH(TRUE(), [PCD_QNT] = [COTA PCD], "COTA OK", [PCD_QNT] < [COTA PCD], "COTA ABAIXO", [PCD_QNT] > [COTA PCD], "SUPERIOR A COTA" )


*** CONTAGEM DE FUNCIONÁRIOS ATIVOS


QP_ATUAL M.QNT NOME = CALCULATE( DISTINCTCOUNT('QP_ATUAL'[NOME_FUNCIONARIO]), ISBLANK('QP_ATUAL'[DATADEMISSAO]), 'QP_ATUAL'[DATAADMISSAO] <= TODAY(), NOT('QP_ATUAL'[COD_SIT] = "I" || 'QP_ATUAL'[COD_SIT] = "Z") )




OU



COLAB_QNT = COUNTROWS( FILTER( QP_ATUAL, NOT ( QP_ATUAL[COD_SIT] = "Z" || QP_ATUAL[COD_SIT] = "D" || QP_ATUAL[COD_SIT] = "I" ) && ISBLANK(QP_ATUAL[DATADEMISSAO]) ) )


*** CONTAGEM DE FUNCIONÁIRIOS DO GÊNERO MASCULINO


QP_ATUAL M.QNT COLAB M = CALCULATE( COUNTROWS('QP_ATUAL'), 'QP_ATUAL'[SEXO] = "MASCULINO", ISBLANK('QP_ATUAL'[DATADEMISSAO]), 'QP_ATUAL'[DATAADMISSAO] <= TODAY(), NOT('QP_ATUAL'[COD_SIT] = "I" || 'QP_ATUAL'[COD_SIT] = "Z") )



*** CONTAGEM DE PCDs


PCD_QNT = COUNTROWS( FILTER( QP_ATUAL, UPPER(QP_ATUAL[preenchecota]) = "SIM" && ISBLANK(QP_ATUAL[DATADEMISSAO]) ) )

*** COTA PCD COM ARREDONDAMENTO


COTA PCD = IF(MOD([COLAB_QNT] * 0.05, 1) < 0.5, FLOOR([COLAB_QNT] * 0.05, 1), CEILING([COLAB_QNT] * 0.05, 1))

*** OPÇÕES DE TITULOS DE ACORDO COM O QUE O USUÁRIO SELECIONA NO FILTRO


Título demografia 1 = IF( ISBLANK(SELECTEDVALUE(TABAGP[REGIONAL_ABR])) && ISBLANK(SELECTEDVALUE(TABAGP[UNIDADE])), "GLOBAL UNIDADES", "DEMOGRAFIA " & IF( NOT ISBLANK(SELECTEDVALUE(TABAGP[REGIONAL_ABR])), " REGIONAL " & SELECTEDVALUE(TABAGP[REGIONAL_ABR]) ) & " " & SELECTEDVALUE(TABAGP[UNIDADE]) )



Trimestre =

IF(QP_EXCEL_ANT[mes] <= 3, "1º trimestre",

IF(QP_EXCEL_ANT[mes] <= 6, "2º trimestre",

IF(QP_EXCEL_ANT[mes] <= 9, "3º trimestre",

IF(QP_EXCEL_ANT[mes] <= 12, "4º trimestre",

"Outro" ))))



Trimestre Of =

IF(CALENDARIO[Trimestre] = "1 Trimestre", "1º trimestre",

IF(CALENDARIO[Trimestre] = "2 Trimestre", "2º trimestre",

IF(CALENDARIO[Trimestre] = "3 Trimestre", "3º trimestre",

IF(CALENDARIO[Trimestre] = "4 Trimestre", "4º trimestre",

"Outro" ))))




*** ALERTA DE COR


Objetivo: Se o dia de hoje for entre os dias 17 a 22, retorna 3 se não, 1.

Ou seja, o período que quero alertar o usuário será 3 com isso, usarei a formatação condicional para que pinte o fundo de acordo com o valor de 3 ou 1.


Alerta Fechamento de Ponto = IF(AND(DAY(TODAY()) >= 17, DAY(TODAY()) <= 22), 3, 1)


Posts recentes

Ver tudo

NETWORKDAYS e DATEDIFF(dax)

Função DAX para retornar dias úteis entre duas datas. NETWORKDAYS Dias Uteis = NETWORKDAYS( 'Base Transportes'[Data do Pedido], 'Base...

bottom of page