# What is the bucket that you are saving all the data? It should be
# an unique name.
bucket_name = "playground-399304"
[gcloud-projects]
[gcloud-projects.staging]
name = "playground-399304"
credentials_path = "/home/pedro/bd-storage-test/credentials/staging.json"
[gcloud-projects.prod]
name = "playground-399304"
credentials_path = "/home/pedro/bd-storage-test/credentials/prod.json"
[api]
url = "https://staging.api.basedosdados.org/api/v1/graphql"
Um exemplo reprodutivel
python -m pip show basedosdados
Name: basedosdados
Version: 2.0.0b13
Summary: Organizar e facilitar o acesso a dados brasileiros através de tabelas públicas no BigQuery.
Home-page: https://github.com/basedosdados/mais
Author: Joao Carabetta
Author-email: joao.carabetta@gmail.com
License: MIT
Location: /home/pedro/Desktop/bd/bd-test-diff-project/.venv/lib/python3.9/site-packages
Requires: google-api-python-client, google-cloud-bigquery, google-cloud-bigquery-connection, google-cloud-bigquery-sto
rage, google-cloud-storage, loguru, pandas, pandas-gbq, pydata-google-auth, tomlkit, tqdm
Required-by:
import basedosdados as bd
DATASET_ID = "dataset_example"
TABLE_ID = "table_test_staging"
CONFIG_PATH = "bd-storage-test"
BUCKET_NAME = "playground-399304"
tb = bd.Table(
dataset_id=DATASET_ID,
table_id=TABLE_ID,
config_path=CONFIG_PATH,
bucket_name=BUCKET_NAME
)
# Não quero criar um dataset_staging apenas uma tabela staging em `dataset_example`
tb.table_full_name = dict(
prod=f"{tb.client['bigquery_prod'].project}.{tb.dataset_id}.{tb.table_id}",
staging=f"{tb.client['bigquery_staging'].project}.{tb.dataset_id}.{tb.table_id}",
)
tb.table_full_name["staging"] # 'playground-399304.dataset_example.table_test_staging'
tb.create("data.csv")
Primeiro erro:
Uploading files: 0%| | 0/1 [00:00<?, ?it/s]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/pedro/Desktop/bd/bd-test-diff-project/.venv/lib/python3.9/site-packages/bas
edosdados/upload/table.py", line 573, in create
Storage(self.dataset_id, self.table_id).upload(
File "/home/pedro/Desktop/bd/bd-test-diff-project/.venv/lib/python3.9/site-packages/bas
edosdados/upload/storage.py", line 218, in upload
raise BaseDosDadosException(
basedosdados.exceptions.BaseDosDadosException: Data already exists at basedosdados-dev/st
aging/dataset_example/table_test_staging/data.csv. If you are using Storage.upload then s
et if_exists to 'replace' to overwrite data
If you are using Table.create then set if_storage_data_exists to 'replace' to overwrite d
ata.
Descrição
Table.create
não envia o arquivo para o storage quando utilizo um projeto pessoal. Na verdade ele envia para o storagebasedosdados-dev
Reproduzir
Tenho uma configuração local para meu projeto em
~/bd-storage-teste
e da basedosdados em~./basedosdados
O pessoal:
Meu
~/bd-storage-test/config.toml
:Um exemplo reprodutivel
Primeiro erro:
Vou adicionar
if_storage_data_exists="replace"
O log reporta sucesso
A tabela foi criada:
A URI de origem da tabela aponta para
gs://playground-399304/staging/dataset_example/table_test_staging/*
, mas está vazioSem dados
Na verdade o arquivo tá sendo criado no bucket
basedosdados-dev
Se eu uso
Storage
passandos os parâmtetros o arquivo é enviado para o local certoComportamento esperado Ele deve enviar para o storage da conta pessoal