Ir para conteúdo
  • 0

String


Robson

Pergunta

  • Membros

Fala galera, boa noite.

Estou amadurecendo meu nível na linguagem M, e recentemente peguei um projeto onde preciso puxar dados de uma API. Porém, essa API existem uma trava com data, ou seja, ela só permite extrair dados data por data. Mas, um colega me ajudou passando uma string, onde após 23:59 muda a data automaticamente.

https://test.empresa.com.br/servicos/operacional/local/2/20220708/pagamento/?detalhe=true  Esse é o endereço original da API (Modifiquei algumas informações da empresa) - Com esse endereço, consigo puxar apenas do dia 08/07/2022 (No link acima está invertido 20220708), caso queira outra data, necessário modificar a data.

Com a string, consigo extrai dados na data atual, ou D-1, D-2...

Exemplo abaixo, com a string para atualizar a data atual automaticamente.

 Data= Text.Start(Text.From(DateTimeZone.SwitchZone(DateTimeZone.LocalNow(),-3,0)),10),

    Mes = Text.Middle(Data,3,2),

    Dia = Text.Middle(Data,0,2),

    Ano = Text.Middle(Data,6,4),

    Periodo = Text.From(Ano&Mes&Dia),

https://test.empresa.com.br/servicos/operacional/local/2/"&Periodo&"/pagamento/?detalhe=true

image.png.3b1316ec36397cfca514ff91f628ea15.png

 

Com a mesma string, criei um jobs D-1, porém quando a data em que preciso puxar está entre dia 01 até 09, ocorre um erro.  Exemplo com erro da string D-3 (Data de hoje 12/07/2022). Aqui estou tentando puxar o dia 09/07/2022.

image.png.9e69ba6a1a6ed901f95f2b6836471c8a.png

DataSource.Error: Falha no Web.Contents ao obter conteúdo de 'https://test.empresa.com.br/servicos/operacional/local/2/2022079/pagamento/?detalhe=true' (500): 
Detalhes:
    DataSourceKind=Web
    DataSourcePath=https://test.empresa.com.br/servicos/operacional/local/2/2022079/pagamento
    Url=https://test.empresa.com.br/servicos/operacional/local/2/2022079/pagamento/?detalhe=true

Na imagem abaixo, o D-3 (09/07/2022) gera o erro descrito acima, e na imagem abaixo vejo que a data está faltando o "zero" na frente do nove.

image.png.5f47ba29cee3b8618dd4c9980769ad7c.png

 

 

Exemplo funcionando após o dia 10. Na imagem abaixo, modifiquei a string para puxar D-2, então trouxe os dados do dia 10.

image.png.8b0d983d14ab51ef6ee8af10ee8716c6.png

 abs

image.png

image.png

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
  • Membros

Boa Noite, @Robson!

 

Você não descreve o que exatamente você deseja, se pegar somente o dia atual e os 3 anteriores.

Olhando a sua fórmula vejo que você poderia trabalhar da seguinte maneira:

Usar a fórmula abaixo para obter a data de hoje em formato data e renomeie a etapa para hoje:

= Date.From(DateTimeZone.UtcNow() - #duration(0,3,0,0))

Depois você pode clicar no fx para criar uma nova etapa e criar uma lista começando de 0 e indo até 3:

= {0 .. 3}

Converte em tabela e tipa como número inteiro.

Depois, adiciona uma coluna personalizada com a fórmula:

Date.AddDays(Hoje, - [Column1])

Você vai ter algo como:

image.png.a1a26a803484b32dce86ee710c20ccc8.png

 

Agora, que viu que conseguimos alterar as datas, volte a coluna personalizada e altere para:

Date.ToText(Date.AddDays(Hoje, - [Column1]), [Format="yyyyMMdd"])

Você terá como resultado:

image.png.7fcf00d25497ccba7fdd95177c31aad4.png

Obs.: Aqui eu aumentei o número de linhas só para mostrar que vai funcionar quando o dia for menor que 10.

 

Agora, você pode usar a coluna como referência no seu código e retornar as informações para cada uma das suas datas.

 

Espero ter ajudado.

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Olá @Vitor Peralva, vdd.....preciso descrever o que realmente é.

Estou fazendo um projeto para um estacionamento, porém, para obter os dados registrados pelos equipamentos é preciso baixar pela API. Eles não liberar conectar diretamente do banco.

Então, acesso essa API para baixar os registros diários.

Um exemplo:  https://test.empresa.com.br/servicos/operacional/local/2/20220709/pagamento/?detalhe=true' 

Essa API tabela Pagamento, do jeito que ela está, só consigo baixar todos os registros do dia 09/07/2022. Então, dessa forma preciso entrar todos os dias no power query e mudar a data na mão. Mas, um amigo me ajudou construindo uma string para trocar a data automaticamente após 23:59. A string abaixo muda a data automaticamente após as 23:59.

image.png.3b1316ec36397cfca514ff91f628ea15.png

Mas, estou criando um painel para obter dados D-3, porém não consigo extrair quando a data cai entre 01 até 09.

Exemplo do erro: Hoje é dia 13/07/2022, se eu colocar D-3 na string, consigo trazer os registros tranquilo do dia 10, mas se eu colocar D-4, ele não traz, gera um erro.

Parece que a string elimina o numero zero antes do número, exemplo: se eu colocar D-4 na data de hoje (13/07/2022), teoricamente deveria trazer dia 09, mas parece que elimina o numero zero antes do nove. Na imagem abaixo tentei puxar os registro ontem (12/09/2022), então D-3 deveria trazer os registros do dia 09/07/2022.

Veja se consegui explicar.

Obrigado.

image.png.5f47ba29cee3b8618dd4c9980769ad7c.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Bom dia, se o problema for só não conseguir levar o 0 para a String de dia da api, tenta usar essa função no recebimento do seu dia. 
Text.PadStart(Text.From([Dia]),2,"0"))
ele vai completar os valores de 1  a 9 com 0 antes. 

pode solucionar para este caminho que já seguiu, mais pode ser que tenha outras formar mais eficientes de fazer como @Vitor Peralva explicou

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...