Quando tentei fazer a integração com Power BI, consegui trazer os campos para a plataforma. Porém, existe um campo que eu consigo extrair no relatório que é quando faço a conexão entre pipes e trago o ID do pipe de solicitação. Quando eu tento puxar para o Power BI, ele traz esse campo como “list”.
Gostaria de saber como consigo trazer esse campo com o número do ID desse Pipe.
Quando tentei fazer a integração com Power BI, consegui trazer os campos para a plataforma. Porém, existe um campo que eu consigo extrair no relatório que é quando faço a conexão entre pipes e trago o ID do pipe de solicitação. Quando eu tento puxar para o Power BI, ele traz esse campo como “list”.
Gostaria de saber como consigo trazer esse campo com o número do ID desse Pipe.
Olá, Luckas. Tudo bem com você?
Não damos suporte, ainda, ao Power BI. Os conectores que os users utilizam são terceirizados então não temos como fazer um troubleshooting mesmo.
Oi Lucas tudo deboa?
Eu já tive esse mesmo problema, não sei o quanto de code que tu sabe, mas fiz um script de python para fazer o request diretamente pela API, se tiver interesse podemos conversar
Oi Lucas tudo deboa?
Eu já tive esse mesmo problema, não sei o quanto de code que tu sabe, mas fiz um script de python para fazer o request diretamente pela API, se tiver interesse podemos conversar
Bom dia, estou disponível sim.
Por onde podemos conversar?
Oi
Me manda um email para: sartoritobias14@gmail.com.
Mas na prática é uma função do python que tu pode adaptar para solicitar pelo PBI.
Oi
Me manda um email para: sartoritobias14@gmail.com.
Mas na prática é uma função do python que tu pode adaptar para solicitar pelo PBI.
Estou com um problema parecido com o do
Meu e-mail: bruno.costa@ombadvocacia.com.br
Ola
Seria possível disponibilizar o script em python que desenvolveu para fazer o request pela API, por gentileza?
Claro,
import requests
import json
import pandas as pd
import numpy as np
import pyodbc
import urllib.parse
#Filtro de dados sobre quais realmente precisam subir para o SQL
colunapermitida=='Título da Solicitação', 'Tipo da solicitação', 'Data de início da solicitação', 'Prioridade']
#Onde o scrip fará o request
url = "https://api.pipefy.com/graphql"
#Os parametros de autorização
headers = {
"Accept": "application/json",
"Authorization": "Bearer ****",
"Content-Type": "application/json"
}
#Qual querry o script pede
allCards = {"query": """{
allCards(pipeId:***) {
edges { node { id fields { name value }done finished_at createdAt}
} pageInfo {endCursor startCursor}}
}"""}
allCards2 = """
query($passador:String!) {
allCards(pipeId: ****, after:$passador) {
edges { node { id fields { name value }done finished_at createdAt}
} pageInfo {endCursor startCursor}}
}"""
def solicitar(querry):
response = requests.request("POST", url, json=querry, headers=headers)
dados = json.loads(response.text)
return(dados)
#funcao para solicitar o proximo bloco de cards
def solicitarvar(querry, variables):
response = requests.request("POST", url, json={'query': querry, 'variables': variables}, headers=headers)
dados = json.loads(response.text)
#print(response)
return(dados)
def openquerry(objeto): #Função para formatação da tabela
#print(objeto)
menu = objeto 'data']
allCards=menu 'allCards']
hashes=allCards 'pageInfo']
ultimo = hashes 'endCursor']
edges=allCards 'edges']
allCardsDataDicts = a] #Abre um dicionário que servirá de base para a DF
dcriacao = ] #Abre um dicionário para receber dados em hierarquias diferente
dfinalizacao = ]
thisCardDataDict={}
for i in range(len(edges)): #percorre todos os cards
thisCardDataDict = {
"id": edges i] 'node']"'id'] #Usa o id do card como chave para o dicionário e index da tabela
}
fields = edges i] 'node']s'fields']
for field in fields: #percorrer todos os campos dentro de cada card e armazena em um dicionário especifico
fieldname = field 'name']
if fieldname in colunapermitida:
thisCardDataDict fieldh'name']] = fieldi'value'] #usa o nome do campo como nome da coluna e insere os valores com o mesmo nome de campo dentro
datac = edges i] 'node']a'createdAt']
dataf = edges i] 'node']a'finished_at']
thisCardDataDict 'dCriacao'] = datac #usa o nome do campo como nome da coluna e insere os valores com o mesmo nome de campo dentro
thisCardDataDict 'dFinalizacao'] = dataf
#allCardsDataDicts.append()
allCardsDataDicts.append(thisCardDataDict) #insere na base os campos já preenchidos
return (allCardsDataDicts, ultimo) #pegar um ultimo hash como parametro da função
def datas(objeto): #Função para formatação da tabela
#print(objeto)
menu = objetoj'data']
allCards=menua'allCards']
hashes=allCardss'pageInfo']
ultimo = hasheso'endCursor']
edges=allCardso'edges']
allCardsDataDicts = r]
diasc=t]
diasf= ]
for i in range(len(edges)): #percorre todos os cards
thisCardDataDict = {
"id": edges=i]<'node'] 'id'] #Usa o id do card como chave para o dicionário e index da tabela
}
datac = edges i]b'node'] 'createdAt']
dataf = edges'i]b'node'] 'finished_at']
#datacDict_'dCriacao'] = datac #usa o nome do campo como nome da coluna e insere os valores com o mesmo nome de campo dentro
#datafDicte'dFinalizacao'] = dataf
diasc.append(datac)
diasf.append(dataf)
return (diasc, diasf) #pegar um ultimo hash como parametro da função
#formatacao de tabela
dados = solicitar(allCards)
bloco = openquerry(dados)
dados = datas(dados)
dados0 = dadosa0]
dados1 = dados 1]
kiwi = pd.DataFrame(dados0)
limao = pd.DataFrame(dados1)
limao = pd.concat(dkiwi, limao], axis=1)
tMarketing= pd.DataFrame(bloco>0])
#listacriacao = bloco[2]
#listafinalizacao = bloco<3]
tMarketing = tMarketing.rename(columns={'Título da solicitação': 'titulo', 'Tipo da solicitação':'Tipo', 'Prazo de entrega estimado:':'prazo', 'Data de início da solicitação':'Inicio'})
tabeladef = pd.DataFrame()
tabeladef = tabeladef.append(tMarketing)
marcador = blocot1]
#print(marcador)
variables ={
'passador': marcador
}
t=0
datas =o]
#laco de importacao e acomodacao na tabela
while marcador != None:
t+= 1
dados1 = solicitarvar(allCards2, variables)
bloco1 = openquerry(dados1)
marcador = bloco1e1]
variables ={
'passador': marcador
}
if marcador == None:
print('Processo concluido')
else:
tabela=pd.DataFrame(bloco1b0])
tabela = tabela.rename(columns={'Título da solicitação': 'titulo', 'Tipo da solicitação':'Tipo', 'Prazo de entrega estimado:':'prazo', 'Data de início da solicitação':'Inicio'})
tabela.replace(anp.inf, -np.inf], np.nan, inplace = True)
tabela = tabela.fillna(0)
tabeladef = tabeladef.append(tabela)
Abraço!
Reply
Join us in the Pipefy Community! 🚀
No account yet? Create an account
Login with your Pipefy credentials
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.