Solved

Integração Pipefy e PowerBI


Userlevel 4

Olá, gostaria de puxar os dados do meu processo e disponibiliza-los no PowerBi em dashboards interativos. Dessa forma, consigo controlar SLAs e KPIs de uma forma mais efetiva. Alguém aqui já fez algo do tipo? 

icon

Best answer by Felipe Scholz 5 June 2020, 12:56

View original

38 replies

Olá pessoal, como vocês conseguiram configurar o Gateway? Não aparece a opção Pipefy Connector no campo “Tipo de fonte de dados”. Abraços!

@consultoria24 conseguiu me ajudar, pessoal! Eu estava com o mesmo problema da maioria de não conseguir ativar a atualização automática usando gateway. O meu problema foi que precisava ativar dois detalhes da configuração das credenciais da fonte de dados no power bi online. Importante: só conseguir usando o gateway no modo pessoal e isso já resolvia o meu problema. Mas também aprendi a configurar com o outro modo.

Ele foi super gentil e conseguimos resolver rapidinho o meu problema hehe muito obrigada pela disponibilidade e pela ajuda, @consultoria24 :)

 

Bom dia, a todos. Atualmente, eu uso o conector Pipefy (beta) provido e configurei um Gateway para conectar automaticamente de forma diária. Assim, basta manter o gateway ativo que o Powebi online conecta no horário agendado. https://docs.microsoft.com/pt-br/power-bi/connect-data/service-gateway-onprem para maiores detalhes sobre como instalar o gateway.

Fernando, obrigado pelo apoio.

 

Fiz uma call com ele e resolvi os problemas, agora está atualizando automaticamente através de um gateway no meu computador!! Para quem te PC web é só instalar o getway la que funcionará online tbm.

Userlevel 1

Olá Pessoal,

alguem já passou por esse problema: quando importo pelo conector dentro do PowerBI, o campo numerico que esta com “ponto” não é identificado no PowerBI ou seja, 18.75 ele puxa 1875, sem o ponto. Eu mudei a localizade pra Inglês, porem arredondou o numero para 19. Alguem consegue me ajudar ??

 

Yves PeixotoJorge Sampaio 

Para poder acessar os dados, será necessário primeiro inserir o Organization ID 

depois ele irá pedir uma chave de acesso ou chave de conta que nada mais é do que um token que deve ser gerando no Pipefy, que vocês pode fazer através do link disponibilizado na documentação:

https://developers.pipefy.com/reference/authentication

 

Alguém sabe como resolver isso?

Userlevel 2

 Boa noite a todos! 

Por aqui estou encontrando este erro, com alguem ja aconteceu ou sabem como resolver?

obrigado

 

Pessoal, graças a ajuda do @consultoria24, consegui uma versão atualizada do conector mencionado, onde é possível realizar a carga de dados do pipefy para o PBI (inclusive esse conector traz informações de relações entre pipes!!!!), assim como realizar a atualização no PBI Service, uma vez configurado o Gateway (Inclusive consegui atualizar via gateway padrão e no modo pessoal).

 

Segue anexado o conector atualizado.

 

Obrigado demais @consultoria24 !!!!!



O Conector não aceita a “API Key” do pipefy para conectar as tabelas, o problema é como conector?

tem alguma extensão ou arquivo que deve estar junto do conector lá na pasta para efetivar essa conexão? Ou esta senha referida é alguma outra? 

Userlevel 2

 Bom dia a todos,

Nosso colaborador Pedro Kronberg aqui da Market4u.com.br conseguiu escrever um script para importar os cards. Basta fazer uma Consulta Nula no Power Query e depois colar o codigo abaixo no editor avançado. As duas primeiras linhas são onde deve informar sua chave da API e o pipe a puxar.
 

let
TOKENAUTH = "Bearer xxxxxxxx", // Inserir sua Chave da API
PipeAnalisado = "xxxxxxxxxx", // Usar os numeros que seguem depois da URL: https://app.pipefy.com/pipes/______

GeradorDeCards =
(TOKENAUTH as text, PRIMEIROCARD as text) =>
let
query = "{""query"" : ""{ cards(pipe_id: "&PipeAnalisado&" "& PRIMEIROCARD &") { pageInfo { startCursor endCursor hasNextPage hasPreviousPage } edges { node { id title creatorEmail created_at finished_at updated_at due_date comments { text created_at } assignees { id name } labels { id name } created_by { id name } parent_relations { cards { id }} current_phase { id name } phases_history { phase { id name sequentialId } firstTimeIn lastTimeIn lastTimeOut duration } pipe { id name } fields { name report_value updated_at } } } } }""}",
authURL = "https://app.pipefy.com/graphql",
getToken = Web.Contents(
authURL,
[
Headers=[
#"Method" = "POST",
#"Accept" = "application/json",
#"Authorization" =TOKENAUTH ,
#"Content-Type" = "application/json; charset=utf-8"
],
Content=Text.ToBinary(query)
]
),
pipefyResponse = Json.Document(getToken),
data = pipefyResponse[data],
cards = data[cards],
edges = cards[edges]
in
edges,

GeradorDePaginas =
(TOKENAUTH as text, PrimeiroCard as text) => let
query = "{""query"" : ""{ cards(pipe_id: "&PipeAnalisado&" "& PrimeiroCard &") { pageInfo { startCursor endCursor hasNextPage hasPreviousPage } edges { node { id title creatorEmail created_at finished_at updated_at due_date comments { text created_at } assignees { id name } labels { id name } created_by { id name } current_phase { id name } phases_history { phase { id name sequentialId } firstTimeIn lastTimeIn lastTimeOut duration } pipe { id name } fields { indexName report_value name updated_at } } } } }""}",
authURL = "https://app.pipefy.com/graphql",
getToken = Json.Document(Web.Contents(authURL, [Headers=[Method="POST", Accept="application/json", Authorization=TOKENAUTH, #"Content-Type"="application/json; charset=utf-8"], Content=Text.ToBinary(query)])),
data = getToken[data],
cards = data[cards],
#"Convertido para Tabela" = Record.ToTable(cards),
Value = #"Convertido para Tabela"{0}[Value],
#"Convertido para Tabela1" = Record.ToTable(Value),
Nextpage = #"Convertido para Tabela1"{2}[Value],
STARTFROM = #"Convertido para Tabela1"{1}[Value],
res = [maispagina = Nextpage, cursorstart = STARTFROM]
in
res,

Fonte = List.Generate(
() =>
[Consulta = GeradorDePaginas(TOKENAUTH, ""), PG = 1, newstart = "", TOKENAUTH = TOKENAUTH],
each [newstart] <> null,
each [PG = [PG]+1, newstart = ("after: \#(0022)"& [Consulta][cursorstart] &"\#(0022)"), Consulta = GeradorDePaginas(TOKENAUTH, newstart), TOKENAUTH = [TOKENAUTH] ],
each [[TOKENAUTH], [PG], [newstart]]
),
#"Convertido para Tabela" = Table.FromList(Fonte, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Column1 Expandido" = Table.ExpandRecordColumn(#"Convertido para Tabela", "Column1", {"TOKENAUTH", "PG", "newstart"}, {"Column1.TOKENAUTH", "Column1.PG", "Column1.newstart"}),
#"Função Personalizada Invocada" = Table.AddColumn(#"Column1 Expandido", "GeradorDeCards", each GeradorDeCards([Column1.TOKENAUTH], [Column1.newstart])),
#"GeradorDeCards Expandido" = Table.ExpandListColumn(#"Função Personalizada Invocada", "GeradorDeCards"),
#"GeradorDeCards Expandido1" = Table.ExpandRecordColumn(#"GeradorDeCards Expandido", "GeradorDeCards", {"node"}, {"GeradorDeCards.node"}),
#"GeradorDeCards.node Expandido" = Table.ExpandRecordColumn(#"GeradorDeCards Expandido1", "GeradorDeCards.node", {"id", "title", "creatorEmail", "created_at", "finished_at", "updated_at", "due_date", "comments", "assignees", "labels", "created_by", "current_phase", "phases_history", "pipe", "fields"}, {"GeradorDeCards.node.id", "GeradorDeCards.node.title", "GeradorDeCards.node.creatorEmail", "GeradorDeCards.node.created_at", "GeradorDeCards.node.finished_at", "GeradorDeCards.node.updated_at", "GeradorDeCards.node.due_date", "GeradorDeCards.node.comments", "GeradorDeCards.node.assignees", "GeradorDeCards.node.labels", "GeradorDeCards.node.created_by", "GeradorDeCards.node.current_phase", "GeradorDeCards.node.phases_history", "GeradorDeCards.node.pipe", "GeradorDeCards.node.fields"}),
#"Linhas Filtradas" = Table.SelectRows(#"GeradorDeCards.node Expandido", each ([GeradorDeCards.node.id] <> null)),
#"Colunas Removidas" = Table.RemoveColumns(#"Linhas Filtradas",{"Column1.TOKENAUTH", "Column1.PG", "Column1.newstart"})
in
#"Colunas Removidas"

 
 

Userlevel 2

Bom dia a todos,

Nosso colaborador Pedro Kronberg aqui da Market4u.com.br conseguiu escrever um script para importar os cards. Basta fazer uma Consulta Nula no Power Query e depois colar o codigo abaixo no editor avançado. As duas primeiras linhas são onde deve informar sua chave da API e o pipe a puxar.
 

let
TOKENAUTH = "Bearer xxxxxxxx", // Inserir sua Chave da API
PipeAnalisado = "xxxxxxxxxx", // Usar os numeros que seguem depois da URL: https://app.pipefy.com/pipes/______

GeradorDeCards =
(TOKENAUTH as text, PRIMEIROCARD as text) =>
let
query = "{""query"" : ""{ cards(pipe_id: "&PipeAnalisado&" "& PRIMEIROCARD &") { pageInfo { startCursor endCursor hasNextPage hasPreviousPage } edges { node { id title creatorEmail created_at finished_at updated_at due_date comments { text created_at } assignees { id name } labels { id name } created_by { id name } parent_relations { cards { id }} current_phase { id name } phases_history { phase { id name sequentialId } firstTimeIn lastTimeIn lastTimeOut duration } pipe { id name } fields { name report_value updated_at } } } } }""}",
authURL = "https://app.pipefy.com/graphql",
getToken = Web.Contents(
authURL,
[
Headers=[
#"Method" = "POST",
#"Accept" = "application/json",
#"Authorization" =TOKENAUTH ,
#"Content-Type" = "application/json; charset=utf-8"
],
Content=Text.ToBinary(query)
]
),
pipefyResponse = Json.Document(getToken),
data = pipefyResponse[data],
cards = data[cards],
edges = cards[edges]
in
edges,

GeradorDePaginas =
(TOKENAUTH as text, PrimeiroCard as text) => let
query = "{""query"" : ""{ cards(pipe_id: "&PipeAnalisado&" "& PrimeiroCard &") { pageInfo { startCursor endCursor hasNextPage hasPreviousPage } edges { node { id title creatorEmail created_at finished_at updated_at due_date comments { text created_at } assignees { id name } labels { id name } created_by { id name } current_phase { id name } phases_history { phase { id name sequentialId } firstTimeIn lastTimeIn lastTimeOut duration } pipe { id name } fields { indexName report_value name updated_at } } } } }""}",
authURL = "https://app.pipefy.com/graphql",
getToken = Json.Document(Web.Contents(authURL, [Headers=[Method="POST", Accept="application/json", Authorization=TOKENAUTH, #"Content-Type"="application/json; charset=utf-8"], Content=Text.ToBinary(query)])),
data = getToken[data],
cards = data[cards],
#"Convertido para Tabela" = Record.ToTable(cards),
Value = #"Convertido para Tabela"{0}[Value],
#"Convertido para Tabela1" = Record.ToTable(Value),
Nextpage = #"Convertido para Tabela1"{2}[Value],
STARTFROM = #"Convertido para Tabela1"{1}[Value],
res = [maispagina = Nextpage, cursorstart = STARTFROM]
in
res,

Fonte = List.Generate(
() =>
[Consulta = GeradorDePaginas(TOKENAUTH, ""), PG = 1, newstart = "", TOKENAUTH = TOKENAUTH],
each [newstart] <> null,
each [PG = [PG]+1, newstart = ("after: \#(0022)"& [Consulta][cursorstart] &"\#(0022)"), Consulta = GeradorDePaginas(TOKENAUTH, newstart), TOKENAUTH = [TOKENAUTH] ],
each [[TOKENAUTH], [PG], [newstart]]
),
#"Convertido para Tabela" = Table.FromList(Fonte, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Column1 Expandido" = Table.ExpandRecordColumn(#"Convertido para Tabela", "Column1", {"TOKENAUTH", "PG", "newstart"}, {"Column1.TOKENAUTH", "Column1.PG", "Column1.newstart"}),
#"Função Personalizada Invocada" = Table.AddColumn(#"Column1 Expandido", "GeradorDeCards", each GeradorDeCards([Column1.TOKENAUTH], [Column1.newstart])),
#"GeradorDeCards Expandido" = Table.ExpandListColumn(#"Função Personalizada Invocada", "GeradorDeCards"),
#"GeradorDeCards Expandido1" = Table.ExpandRecordColumn(#"GeradorDeCards Expandido", "GeradorDeCards", {"node"}, {"GeradorDeCards.node"}),
#"GeradorDeCards.node Expandido" = Table.ExpandRecordColumn(#"GeradorDeCards Expandido1", "GeradorDeCards.node", {"id", "title", "creatorEmail", "created_at", "finished_at", "updated_at", "due_date", "comments", "assignees", "labels", "created_by", "current_phase", "phases_history", "pipe", "fields"}, {"GeradorDeCards.node.id", "GeradorDeCards.node.title", "GeradorDeCards.node.creatorEmail", "GeradorDeCards.node.created_at", "GeradorDeCards.node.finished_at", "GeradorDeCards.node.updated_at", "GeradorDeCards.node.due_date", "GeradorDeCards.node.comments", "GeradorDeCards.node.assignees", "GeradorDeCards.node.labels", "GeradorDeCards.node.created_by", "GeradorDeCards.node.current_phase", "GeradorDeCards.node.phases_history", "GeradorDeCards.node.pipe", "GeradorDeCards.node.fields"}),
#"Linhas Filtradas" = Table.SelectRows(#"GeradorDeCards.node Expandido", each ([GeradorDeCards.node.id] <> null)),
#"Colunas Removidas" = Table.RemoveColumns(#"Linhas Filtradas",{"Column1.TOKENAUTH", "Column1.PG", "Column1.newstart"})
in
#"Colunas Removidas"

 

 

Bom dia!

 

Estou tentando realizar a integração pelo método fácil, utilizando um conector, mas não estou conseguindo finalizar, pois não aparece a opção Pipefy na obtenção dos dados. É como se a conexão não tenha sido realmente realizada.

 

Estou utilizando o conector que foi enviado nesse tópico e um vídeo do Pipefy com o passo a passo de como realizar essa conexão mas até o momento não tive êxito.

 

Alguém passou pelo mesmo problema? Se sim, como conseguiu resolver?

 

Link do vídeo: https://screencast-o-matic.com/watch/cYV3lhvLvU

Estou com o mesmo problema. Alguém sabe me dizer como resolver?

Userlevel 1

Boa tarde, pessoal, tudo bem ?

  Estou trabalhando praticamente nesta mesma integração, porém estou com dificuldades na atualização do dash na nuvem. @consultoria24 se puder me ajudar agradeceria, já baixei e instalei o conector, no power bi desktop, consigo trazer as informações do pipe, consigo publicar, mais na hora de atualizar tenho o seguinte erro 

“Falha ao atualizar as credenciais da fonte de dados: Não há suporte para o tipo de fonte de dados especificado. Tipo de fonte de dados: Pipefy.”

Onde posso baixar a versão 3000.66.8, citada acima, atualmente estou usando a versão mais recente 3000.110.3

 

Obrigado pela atenção,

 

Olá pessoal tudo bem ?

 Gostaria de deixar registrado meu agradecimento @consultoria24 pela atenção e disponibilidade, graças a Deus consegui resolver minha atividade integrar pipefy ao Power BI via api.

Userlevel 1

Boa tarde, pessoal, tudo bem ?

  Estou trabalhando praticamente nesta mesma integração, porém estou com dificuldades na atualização do dash na nuvem. @consultoria24 se puder me ajudar agradeceria, já baixei e instalei o conector, no power bi desktop, consigo trazer as informações do pipe, consigo publicar, mais na hora de atualizar tenho o seguinte erro 

“Falha ao atualizar as credenciais da fonte de dados: Não há suporte para o tipo de fonte de dados especificado. Tipo de fonte de dados: Pipefy.”

Onde posso baixar a versão 3000.66.8, citada acima, atualmente estou usando a versão mais recente 3000.110.3

 

Obrigado pela atenção,

 

Userlevel 3
Badge +1

Pessoal, graças a ajuda do @consultoria24, consegui uma versão atualizada do conector mencionado, onde é possível realizar a carga de dados do pipefy para o PBI (inclusive esse conector traz informações de relações entre pipes!!!!), assim como realizar a atualização no PBI Service, uma vez configurado o Gateway (Inclusive consegui atualizar via gateway padrão e no modo pessoal).

 

Segue anexado o conector atualizado.

 

Obrigado demais @consultoria24 !!!!!

olá @bruno-cunha , foi um prazer apoiá-lo nesta jornada. Forte abraço :)

@bruno-aarao … quis dizer :)   \o/

Userlevel 3
Badge +1

Pessoal, graças a ajuda do @consultoria24, consegui uma versão atualizada do conector mencionado, onde é possível realizar a carga de dados do pipefy para o PBI (inclusive esse conector traz informações de relações entre pipes!!!!), assim como realizar a atualização no PBI Service, uma vez configurado o Gateway (Inclusive consegui atualizar via gateway padrão e no modo pessoal).

 

Segue anexado o conector atualizado.

 

Obrigado demais @consultoria24 !!!!!

olá @bruno-cunha , foi um prazer apoiá-lo nesta jornada. Forte abraço :)

Userlevel 1

Pessoal, graças a ajuda do @consultoria24, consegui uma versão atualizada do conector mencionado, onde é possível realizar a carga de dados do pipefy para o PBI (inclusive esse conector traz informações de relações entre pipes!!!!), assim como realizar a atualização no PBI Service, uma vez configurado o Gateway (Inclusive consegui atualizar via gateway padrão e no modo pessoal).

 

Segue anexado o conector atualizado.

 

Obrigado demais @consultoria24 !!!!!

Userlevel 1

Olá Arthur,

Este erro ocorreu comigo também. Eu instalei o Gateway on premise data gateway versão 3000.66.8 (já tem uma mais recente) e refiz a configuração. Mas antes, é importante você ter a versão correta do conector também e apontar para o diretório correto onde está este arquivo no gateway (às vezes, o local do arquivo fica mascarado no windows com outro nome - tivemos isso com um colega da Vale que , depois de revisar este ponto, passou a funcionar). Se vc quiser, podemos fazer um call via zoom (email [email protected] ) para revisarmos os passos.

grande abraço,

Fernando

Eu consegui configurar o gateway corretamente, mas na hora de inserir as credenciais para atualização, não é evidenciada os campos de login, nem consigo selecionar nenhum método de autenticação.

Por um acaso, saberia me dizer oq pode ser, por favor?

 

 

Userlevel 1

Olá, Estou usando o Connector, mas estou notando bastante demora ao carregar as informações ou em tratar os dados no editor do Power BI, existe alguma forma de deixar a conexão mais rápida?

@Caio , essa lentidão acontece porque o Connector traz tudo da base. Se você tiver campos com anexos ele vai trazer o anexo em si ao invés do link, isso deixa a conexão ultra lenta.

Userlevel 3
Badge +1

Olá Arthur,

Este erro ocorreu comigo também. Eu instalei o Gateway on premise data gateway versão 3000.66.8 (já tem uma mais recente) e refiz a configuração. Mas antes, é importante você ter a versão correta do conector também e apontar para o diretório correto onde está este arquivo no gateway (às vezes, o local do arquivo fica mascarado no windows com outro nome - tivemos isso com um colega da Vale que , depois de revisar este ponto, passou a funcionar). Se vc quiser, podemos fazer um call via zoom (email [email protected] ) para revisarmos os passos.

grande abraço,

Fernando

Bom dia, a todos. Atualmente, eu uso o conector Pipefy (beta) provido e configurei um Gateway para conectar automaticamente de forma diária. Assim, basta manter o gateway ativo que o Powebi online conecta no horário agendado. https://docs.microsoft.com/pt-br/power-bi/connect-data/service-gateway-onprem para maiores detalhes sobre como instalar o gateway.

Boa tarde.

Gostaria de saber mais detalhes sobre como vc configurou o gateway para o pipefy.

Hoje já uso esse gateway para bases externas como access e excel e para um banco de dados no ORACLE, mas quando tento configurar o Pipefy por meio do API Pipefy Conector ele me apresenta o seguinte erro:

Não é possível conectar: Encontramos um erro ao tentar conectar a . Detalhes: "Não foi possível registrar essa fonte de dados para nenhuma instância de gateway nesse cluster. Veja mais detalhes abaixo sobre erros específicos para cada instância de gateway."

Userlevel 3
Badge +1

Que eu saiba, via conector, não é possivel de forma incremental. Mas automatizar, basta instalar o Gateway on premise do pwbi e configurar a sincronização no dataset no pwbi online.

Userlevel 7
Badge +4

Olá João, existe o jeito fácil e o difícil.

Difícil
Existem duas formas de atuar com API's do Pipefy: Query ou Mutation.


Mutation: Manipular o Pipefy com dados exteriores (Não é o que você quer) e as Query's: Extrair dados do Pipefy para alguma base de dados (É o que você quer).

  • Esse link contém o passo a passo de como trabalhar com isso no Power Query do Power BI (https://gist.github.com/petrsvihlik/cc34a6cf1882d515139c5b27f37cf99e )
  • Esse link é uma IDE para testar os códigos (https://app.pipefy.com/graphiql
  • Esse link tem as funções para montar o código API (https://api-docs.pipefy.com/reference/objects/TableField/), testar na IDE e depois montar com o primeiro código (primeiro link), substituindo essa parte: { organization(login: \""github\"") { name }} Pelo código montado.

Obs: Deve-se colocar o código montado, e não o resultado do código obtido na IDE.

 

Fácil

Existe um conector do Power BI (essa não é uma funcionalidade desenvolvida por nosso time e sim um terceiro, por isso não oferecemos suporte para ativar essa integração) com o código já montado. Se você precisar de uma informação que o conector não te de, ai você precisará montar o código do jeito acima (o difícil), mas não acho que seja um problema. Você entenderá melhor por esse link.

 

 

Olá Felipe, tudo bem??

 

Existe alguma possibilidade de fazer o conector funcionar de maneira incrementativa, não baixando toda base de dados todas as vezes? Ou uma maneira de automatizar a atualização usando o conector??

Userlevel 3
Badge +1

Olá ,

Acabei de realizar um apoio ao pessoal da Vale.com para usarem o conector. Fiz uma call direta e eles conseguiram conectar com sucesso. Adoraram o apoio ;)

abcs

Fernando

 

Userlevel 2

Bom dia!

 

Estou tentando realizar a integração pelo método fácil, utilizando um conector, mas não estou conseguindo finalizar, pois não aparece a opção Pipefy na obtenção dos dados. É como se a conexão não tenha sido realmente realizada.

 

Estou utilizando o conector que foi enviado nesse tópico e um vídeo do Pipefy com o passo a passo de como realizar essa conexão mas até o momento não tive êxito.

 

Alguém passou pelo mesmo problema? Se sim, como conseguiu resolver?

 

Link do vídeo: https://screencast-o-matic.com/watch/cYV3lhvLvU

Userlevel 2

Olá, Pessoal! 

Querida deixar a minha contribuição. Mais uma maneira pra não ter que usar a API.
Para trabalhar com esses dados usei a integração do Zapier. 

Pipefy > Zapier > Google Sheets

Trazendo os dados que queria através de uma ação (mover card) ou (criar card), isso alimenta minha planilha em tempo real. 

Ponto positivo: Dados atualizados em tempo real, de acordo com a ação, é claro. 
Ponto negativo: Os dados passando por muitos lugares.

https://zapier.com/apps/pipefy/integrations

Oi Ana, 

Tira uma dúvida, por favor?!

Usar API esta sendo complicado para mim. Sua alternativa é simples e atende o que eu gostaria. Dessa maneira eu conseguiria extrair todas as informações de um pipe? Por exemplo, cada uma das etapas e tudo que esta contido nelas?

 

Reply