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).
1 |
= 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.
Depois, converta a Lista Criada em Tabela.
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:
- Adicionar Coluna -> Data -> Dia -> Dia da Semana
- Adicionar Coluna -> Data -> Dia -> Nome do Dia
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.
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
Expandimos a consulta mesclada, selecionando apenas a coluna Feriado.
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.
- Adicionar Coluna -> Coluna Condicional
O passo seguinte é adicionar uma coluna personalizada com a data atual:
- Adicionar Coluna -> Coluna Personalizada -> Inserir a fórmula DateTime.LocalNow()
Segue as linhas de códigos utilizada no processo (Consulta Avançada):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
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:
1 |
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:
1 |
Dias Úteis até final do mês = CALCULATE(SUM(dCalendario[Dias Úteis]),DATESBETWEEN(dCalendario[Data],TODAY(),EOMONTH(TODAY(),0)))-1 |
* 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!