BigQuery
A plataforma Carol disponibiliza o BigQuery como camada de armazenamento dos dados por padrão. Você pode utilizar a documentação do BigQuery para obter mais detalhes quanto aos recursos disponíveis e como implementar em suas consultas.
PyCarol
Para ter acesso ao BigQuery através do PyCarol você vai precisar:
- PyCarol ≥ 2.47.4
- Uma Service Account com acesso ao BigQuery
Ambos registros de staging e data model podem ser consultados. Abaixo temos um exemplo de consulta aos modelos:
import pycarol
SA_FILEPATH = "/home/jro/wk/totvs/sa.json"
TEST_QUERY1 = """
SELECT *
FROM `dm_clockinrecords`
LIMIT 100
"""
with open(SA_FILEPATH, "r") as file:
service_account = json.loads(file.read())
return service_account
carol = Carol()
sql = pycarol.SQL(carol)
result = sql.query(TEST_QUERY1, method="bigquery", service_account=service_account, dataframe=True)
Abaixo temos um exemplo de consulta para staging tables:
TEST_QUERY1 = """
SELECT *
FROM `stg_CONNECTORID_TABLENAME`
LIMIT 100
"""
Você pode usar o syntactic sugar para não ter que inserir o connector id:
test_query = """
SELECT mdmId
FROM {{clockinmobile.clockinrecords}}
UNION ALL
SELECT mdmId
FROM {{clockinrecords}}
LIMIT 100
"""
Na consulta acima, o PyCarol vai substituir {{clockinmobile.clockinrecords}}
por stg_CONNECTORID_clockinrecords
automaticamente.
API de consulta de CNPJ
Este tutorial descreve como efetuar a consulta de dados na Carol para obter dados mestres de empresas provenientes da Receita Federal do Brasil.
Para usar a API de consulta de CNPJs é necessário criar acesso na plataforma Carol. Para conseguir o acesso, abrir um ticket em suporte.carol@totvs.com.br com assunto “Acesso API CNPJ”. Você irá receber um email com um convite para criar um usuário e senha na plataforma Carol.
Para consultar o CNPJ (53113791000122) da TOTVS por exemplo, podemos usar a seguinte chamada:
curl -X POST "https://app.carol.ai/api/v3/queries/named/findCompany?indexType=MASTER&pageSize=10&sortOrder=ASC&scrollable=false" -H "accept: application/json" -H "Authorization: TOKEN" -H "content-type: application/json" -d "{\"cnpj\":\"53113791000122\"}"
A resposta será:
{
"count": 1,
"totalHits": 1,
"took": 6,
"hits": [
{
"mdmGoldenFieldAndValues": {
"mdmsituationdate": "2005-11-03T00:00:00.000Z",
"mdmisheadquarters": true,
"industrybr": "6201501",
"mdmsituationdescription": "",
"mdmaddress": [
{
"mdmstate": "SP",
"mdmzipcode": "02511000",
"mdmaddress3": "CASA VERDE",
"mdmaddress2": "",
"mdmcity": "SAO PAULO",
"mdmaddress1": "AVENIDA BRAZ LEME 1000"
}
],
"situationreasoncode": "00",
"registerdate": "1983-12-13T00:00:00.000Z",
"empty_registerdate": false,
"mdmisactive": true,
"sharecapital": 1382508564.43,
"mdmtaxid": "53113791000122",
"empty_mdmsituationdate": false,
"mdmphone": [
{
"mdmphonenumber": "",
"mdmphonetype": "phone2"
},
{
"mdmphonenumber": "1139817000",
"mdmphonetype": "phone1"
}
],
"cnaebr": "6201501",
"legalnaturecode": "2046",
"roottaxid": "53113791",
"legalnaturedescription": "Sociedade Anônima Aberta",
"mdmdba": "TOTVS S/A",
"mdmname": "TOTVS S.a.",
"companysize": "DEMAIS"
}
}
],
"aggs": {}
}
O resultado estará em $.hits.[].mdmGoldenFieldAndValues
.
Note que na chamada da API é necessário enviar um TOKEN. Você pode ver como gerar esse token → clicando aqui
O connector ID pra gerar o TOKEN é 47b343909f214230b81195aa37a733bb
Os dados dessa API são os mesmo encontrados no portal da receita federal → clicando aqui
Estes dados são atualizados a cada mês. Significa que os dados de reposta podem estar em até um mês de atraso.