Forum Discussion

theusorla's avatar
theusorla
Frequent Visitor
4 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(2nullnull)
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.