Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Processo de ETL Power BI - utilizando M apresenta erro

Boa tarde, Gostaria se possivel de ajuda para corrigir o do código abaixo, estou utilizando o mesmo para substuir dados que estão como "Não disponível" em uma coluna que está como datetime. A correção funciona, porem sempre ao atualizar a base continua a apresentar o erro: (DataFormat.Error: Não foi possível analisar a entrada fornecida como um valor DateTime. Detalhes: Não disponível) Teria alguma forma de toda vez que a base seja importada para o Power BI seja feito o processo do código abaixo e não apresente mais erros nas atualizações ?

let
    Origem = Excel.Workbook(File.Contents("C:\base-de-dados-Hermex.xlsx"), null, true),
    Pedidos_Sheet = Origem{[Item="Pedidos",Kind="Sheet"]}[Data],
    #"Cabeçalhos Promovidos" = Table.PromoteHeaders(Pedidos_Sheet, [PromoteAllScalars=true]),
    #"Tipo Alterado" = Table.TransformColumnTypes(
        #"Cabeçalhos Promovidos",
        {
            {"ID Pedido", Int64.Type},
            {"ID Produto", Int64.Type},
            {"Quantidade", Int64.Type},
            {"ID Veículo", type text},
            {"Status do pedido", type text},
            {"Data da compra", type datetime},
            {"Data de entrega", type datetime},
            {"Data previsão", type datetime},
            {"UF", type text},
            {"ESTADO", type any}
        }
    ),
    // Substituir "Não disponível" por vazio (null) na coluna "Data de entrega"
    substituirNaoDisponivel = Table.ReplaceValue(
        #"Tipo Alterado",
        "Não disponível",
        null,
        Replacer.ReplaceValue,
        {"Data de entrega"}
    ),
    tabelaDestino = substituirNaoDisponivel
in
    tabelaDestino

Obrigado pela ajuda

2 respostas
solução!

Oi, John, tudo bem?

Desculpe pela demora em te responder.

Como o texto "Não disponível" é o "causador" de erros, podemos usar uma função que lida justamente com o tratamento de erros! Assim, por meio de uma abordagem diferenciada, também conseguir trabalhar com substituição de valores, observe:

substituirNaoDisponivel = Table.ReplaceErrorValues(#"Tipo Alterado", {{"Data de entrega", null}}),

A lógica é bastante parecida com aquela que você estava utilizando. Após identificar campos com erros na coluna Data de entrega, faz-se um tratamento substituindo o valor presente por null.

John, é importante enfatizar que, caso a base de dados seja importada novamente, você terá que adicionar de novo todo esse código, uma vez que o Power BI entenderá que se trata de um arquivo novo. No entanto, se você mantiver o mesmo arquivo (base-de-dados-Hermex.xlsx) e apenas utilizar o recurso de "Atualizar dados", o tratamento acontecerá normalmente, removendo erros, atualizando valores e deixando a coluna Data de entrega com o tipo Datetime.

Espero ter ajudado com a explicação! Contudo, vale ressaltar que como é um assunto externo ao curso e que não tenho acesso ao cenário completo do projeto, outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema!

John, caso queira explorar mais de perto a função Table.ReplaceErrorValues, deixo como dica de leitura o seguinte material:

Um abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Muito obrigado pela explicação Andrieli, ficou claro.