Assuntos relacionados a criação de medidas, fórmulas e funções DAX, relacionamentos etc
Por Tbrandao 15 Set 2020 às 23:55
Membro Novato
Mensagens: 1
Reputação: 0
#58892
Pessoal

É possível calcular a quantidade de dias que recaem dentro de cada Mês?

exemplo:
Imagem

Cada linha deste exemplo representará uma pessoa. A ideai é identificar o total de dias no mês e calcular o absenteísmo involuntário (dias de atestado)
Por osvaldomp 16 Set 2020 às 09:41
Excel Expert
Mensagens: 1837
Reputação: 923
#58898
Em F1 coloque 01/07/2020, que corresponde a MÊS FILTRADO

Cole uma cópia da fórmula abaixo em C2 e arraste para baixo.

Código: Selecionar todos=MÁXIMO(0;1+MÍNIMO(B2;FIMMÊS(F$1;0))-MÁXIMO(A2;F$1))


obs. o resultado correto para o seu terceiro exemplo é 31, e não 30 como você colocou, portanto o resultado final correto é 50 dias ~~~> =SOMA(C:C)
Por babdallas 16 Set 2020 às 10:46
Excel Expert
Mensagens: 3196
Reputação: 1384
#58902
Criei a fAbsenteismo:

Código: Selecionar todoslet
    Fonte = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcs0tKEpNT0zJN1TSUTIw1Dcw1zcyMDIAcYzgnFgdJIVGQDlDU30DU5hCQ3PsCo2hJprBFBoZ6BtYQBXGAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Empregado = _t, #"Data Início" = _t, #"Data Fim" = _t]),
    AlteraTipoColunas = Table.TransformColumnTypes(Fonte,{{"Empregado", type text}, {"Data Início", type date}, {"Data Fim", type date}}),
    AdicionaCol_ListaDatas = Table.AddColumn(AlteraTipoColunas, "Data", each List.Dates([Data Início], Number.From([Data Fim]-[Data Início])+1, #duration(1,0,0,0))),
    RemoveColunasDataIniFim = Table.SelectColumns(AdicionaCol_ListaDatas,{"Empregado", "Data"}),
    Expande_ListaDatas = Table.ExpandListColumn(RemoveColunasDataIniFim, "Data"),
    AlteraTipo_ColunaData = Table.TransformColumnTypes(Expande_ListaDatas,{{"Data", type date}})
in
    AlteraTipo_ColunaData



Criei a dCalendario:

Código: Selecionar todoslet
    pDataIni = Date.StartOfMonth(List.Min(fAbsenteismo[Data])),
    pDataFim = Date.EndOfMonth(List.Max(fAbsenteismo[Data])),
    TabelaDatas = Table.FromList(List.Dates(pDataIni, Number.From(pDataFim-pDataIni)+1, #duration(1,0,0,0)), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    Renomeia_ColunaData = Table.RenameColumns(TabelaDatas,{{"Column1", "Data"}}),
    AlteraTipo_ColunaData = Table.TransformColumnTypes(Renomeia_ColunaData,{{"Data", type date}}),
    Insere_ColunaAno = Table.AddColumn(AlteraTipo_ColunaData, "Ano", each Date.Year([Data]), Int64.Type),
    Insere_ColunaNumMes = Table.AddColumn(Insere_ColunaAno, "Num_Mes", each Date.Month([Data]), Int64.Type),
    Insere_ColunaNomeMes = Table.AddColumn(Insere_ColunaNumMes, "Nome_Mes", each Text.Proper(Text.Start(Date.MonthName([Data]),3)), type text),
    Insere_ColunaAnoMesNum = Table.AddColumn(Insere_ColunaNomeMes, "AnoMes_Num", each [Ano]*100+[Num_Mes], Int64.Type),
    Insere_ColunaNomeMesAno = Table.AddColumn(Insere_ColunaAnoMesNum, "NomeMes_Ano", each Text.Combine({[Nome_Mes], Text.From([Ano], "pt-BR")}, "-"), type text)
in
    Insere_ColunaNomeMesAno



Depois criei a seguinte medida:

Código: Selecionar todosNum_Dias:=VAR DataIni = MIN(fAbsenteismo[Data])
   VAR DataFim = MAX(fAbsenteismo[Data])
RETURN
   IF(HASONEVALUE(fAbsenteismo[Empregado]);DataFim-DataIni+1;COUNTROWS(fAbsenteismo))
Apenas usuários registrados podem ver ou baixar anexos.