Forum Discussion

theusorla's avatar
theusorla
Frequent Visitor
5 years ago

Dependency cycle was detected

Estou tentando salvar meu fuxo de dados porem apresenta esse erro:

 

 

 

 

tenhos as seguintes funções:

fn_loopChamados

 

let
  Fonte = (
     
    optional MaxPag as number,
    optional LoopsRealizados as number,
    optional TabelaAnterior as table
) =>
let
    //Cada vez que o algoritimo passar por aqui, ele incrementa +1
    Loop = 
        if LoopsRealizados = null
        then 1
        else LoopsRealizados +1,

    //tentamos buscar os dados da págia, e se der erro, carrega a varável com null
    TabelaAtual =
        try fn_ConsultaChamado(Loop) //1
        otherwise null,

    // Essa tabela será carregada a cada passagem que o Algorítimo fizer por ela
    TabelaAnterior =
        if TabelaAnterior = null //será null apenas na primeria passagem
        then Table.FromRecords({[]})
        else TabelaAnterior,

    // Aqui vamos colar cada tabela encontrada, abaixo da outra
    TabelaFim =
        if
                TabelaAtual = null
            or  Table.RowCount(TabelaAtual) = 0
        then TabelaAnterior
        else if Loop = 1
        then TabelaAtual 
        else Table.Buffer(  Table.Combine({TabelaAnterior,  TabelaAtual})),

    // Condição para voltar ao início (tipo jogo da vida) ou sair do Loop), finalizand-o
    out =
        if
                TabelaAtual = null  
            or  Table.RowCount(TabelaAtual) = 0
            or  Loop = MaxPag
        then TabelaFim
        else FN_loopChamados(MaxPag, Loop, TabelaFim)
in
    out
in
  Fonte

 

fn_ConsultaChamado

 

let
  Fonte = (pagina as number) =>

let
  Origem = Json.Document(Web.Contents(api_TT_url_chamados & api_TT_token & "/", [RelativePath= Text.From(pagina)&"/"])),
  #"Convertido em tabela" = Table.FromRecords({Origem}),
  #"Expandido data" = Table.ExpandListColumn(#"Convertido em tabela", "data"),
  #"Expandido data1" = Table.ExpandRecordColumn(#"Expandido data", "data", {"idchamado", "protocolo", "titulo", "mensagem", "mimetype", "email_cliente", "prioridade", "tempotrabalho", "tempoabertura", "data_criacao", "deadline", "valoritemhora", "valoritemhoraextra", "valorfinal", "valorfinalextra", "valorfinalbruto", "nomecliente", "tipochamado", "avaliadoproblemaresolvido", "avaliadoatendimento", "avaliacaocomentario", "dataprimeiraresposta", "dataencerramento", "ultimasituacao", "dataultimasituacao", "sla_inicio", "sla_deadline", "sla_inicializacao_cumprido", "sla_deadline_cumprido", "descsituacao", "categoria", "departamento", "atendente", "id_cliente", "status", "dataultimostatus", "nomeorganizacao", "campospersonalizados", "campospersonalizados_finalizados"}, {"data.idchamado", "data.protocolo", "data.titulo", "data.mensagem", "data.mimetype", "data.email_cliente", "data.prioridade", "data.tempotrabalho", "data.tempoabertura", "data.data_criacao", "data.deadline", "data.valoritemhora", "data.valoritemhoraextra", "data.valorfinal", "data.valorfinalextra", "data.valorfinalbruto", "data.nomecliente", "data.tipochamado", "data.avaliadoproblemaresolvido", "data.avaliadoatendimento", "data.avaliacaocomentario", "data.dataprimeiraresposta", "data.dataencerramento", "data.ultimasituacao", "data.dataultimasituacao", "data.sla_inicio", "data.sla_deadline", "data.sla_inicializacao_cumprido", "data.sla_deadline_cumprido", "data.descsituacao", "data.categoria", "data.departamento", "data.atendente", "data.id_cliente", "data.status", "data.dataultimostatus", "data.nomeorganizacao", "data.campospersonalizados", "data.campospersonalizados_finalizados"}),
  #"Tipo de coluna alterado" = Table.TransformColumnTypes(#"Expandido data1", {{"erro", type logical}, {"data.idchamado", type text}, {"data.protocolo", Int64.Type}, {"data.titulo", type text}, {"data.mensagem", type text}, {"data.mimetype", type text}, {"data.email_cliente", type text}, {"data.prioridade", Int64.Type}, {"data.tempotrabalho", Int64.Type}, {"data.tempoabertura", Int64.Type}, {"data.data_criacao", type datetime}, {"data.deadline", type datetime}, {"data.valoritemhora", Int64.Type}, {"data.valoritemhoraextra", Int64.Type}, {"data.valorfinal", Int64.Type}, {"data.valorfinalextra", Int64.Type}, {"data.valorfinalbruto", Int64.Type}, {"data.nomecliente", type text}, {"data.tipochamado", type text}, {"data.avaliadoproblemaresolvido", type text}, {"data.avaliadoatendimento", type text}, {"data.avaliacaocomentario", type text}, {"data.dataprimeiraresposta", type datetime}, {"data.dataencerramento", type datetime}, {"data.ultimasituacao", Int64.Type}, {"data.dataultimasituacao", type datetime}, {"data.sla_inicio", type datetime}, {"data.sla_deadline", type datetime}, {"data.sla_inicializacao_cumprido", type logical}, {"data.sla_deadline_cumprido", type logical}, {"data.descsituacao", type text}, {"data.categoria", type text}, {"data.departamento", type text}, {"data.atendente", type text}, {"data.id_cliente", type any}, {"data.status", type text}, {"data.dataultimostatus", type datetime}, {"data.nomeorganizacao", type text}, {"data.campospersonalizados", type any}, {"data.campospersonalizados_finalizados", type any}, {"total_itens", Int64.Type}}),
  #"Transformar colunas" = Table.TransformColumnTypes(#"Tipo de coluna alterado", {{"data.id_cliente", type text}, {"data.campospersonalizados", type text}, {"data.campospersonalizados_finalizados", type text}}),
  #"Substituir erros" = Table.ReplaceErrorValues(#"Transformar colunas", {{"data.id_cliente", null}, {"data.campospersonalizados", null}, {"data.campospersonalizados_finalizados", null}})
in
  #"Substituir erros"
in
  Fonte
 
 
 
 
E a tabela fazendo a chamada da função:
 
Função invocada
 
let
  Origem = fn_loopChamados(2, null, null)
in
  Origem
 
 

 

 

1 Reply

  • Your two functions call each other.

     

    ...
        TabelaAtual =
            try fn_ConsultaChamado(Loop) //1
            otherwise null,
    ...

    Alsio note that Power Query uses List.Generate or recursive function calls to do "looping".  You can refactor your query accordingly to avoid the circular dependency.