mais icon indicating copy to clipboard operation
mais copied to clipboard

[Infra] Version 2.0.0b15

Open d116626 opened this issue 2 years ago • 0 comments

Version 2.0.0b15 - Release Changelog

Added

  • Now divided the package into four extras for easier installation:
    • pip install basedosdados: Installs the core package.
    • pip install basedosdados[upload]: Installs modules for interacting with the backend.
    • pip install basedosdados[avro]: Installs modules for working with Avro.
    • pip install basedosdados[cli]: Installs modules for using the command-line interface.
    • pip install basedosdados[all]: Installs all modules.
  • Added suport to biglake tables
  • Added connection_id property to external data configuration.
  • Implemented automatic management of BigQuery connection.
  • Added service_account property to Connection.
  • Introduced backend class for handling interaction with GraphQL.
  • Added support for CSV delimiter customization with csv_delimiter
  • Added new parameter csv_skip_leading_rows and csv_allow_jagged_rows for handling CSV parsing.
  • Add new scopes to credentials: drive and bigquery

Fixed

  • Fixed datatype issues by adding connection ID for external configuration.
  • Improved error handling and optional setting of BigQuery permissions.

Changed

  • Refactored dependency management for improved performance.
  • Cleaned up code and linting issues.

Removed

  • Removed unnecessary dependencies and compressed R package.

Deprecated

  • Deprecated usage of YAML dependency from metadata handling.
  • CLI suport to upload methods

To-do

  • [ ] Tests
  • [ ] Docs
  • [ ] Revisar testes que usam YAML
  • [ ] melhorar descrição do dataset e table, incluindo mais metadados
  • [x] descontinuar CLI?
  • [x] remover referencias a pasta templates
  • [x] Adicionar original_name para modelo columns?
  • [x] Como triggrar actions para atualizar a tabela project_id.dataset_id.table_id que ja existe em dev? talvez branch name? Criar arquivo com esses parametros e last_update, talvez usar esse last_update para tambem criar mutation que atualiza esse campo na API. https://miro.com/app/board/uXjVMfYoD1I=/
  • [x] Revisar as menções a YAML em basedosdados/cli/cli.py
  • [x] Remover o método _load_yaml em basedosdados/upload/base.py
  • [x] Revisar a construção da URL do GraphQL no Base.__init__ em basedosdados/upload/base.py
  • [x] Revisar o conteúdo do README no Dataset._write_readme_file (basedosdados/upload/dataset.py)
  • [x] Implementar Metadata.create e remover try/except do Dataset.init (basedosdados/upload/dataset.py)
  • [x] Revisar Table._load_schema, Table._make_publish_sql, Table.init, Table.publish (basedosdados/upload/table.py)
  • [x] Descontinuar Table.update_columns (basedosdados/upload/table.py)?
  • [x] Descontinuar update_columns (basedosdados/upload/utils.py)?

Mapeamento dos YAML no pacote

  1. Config
    • [x] 1. Alterar o template do config.toml
    • [x] 2. Alterar os templates da configuração
    • [x] 3. Alterar, se necessário, o processo de inicialização
  2. Dataset
    • [x] 1. init: cria um objeto Metadata em self.metadata
    • [x] 2. dataset_config: carrega os metadados do yaml
    • [x] 3. _setup_dataset_object: atualizar a descrição (.txt) para o bigquery
    • [x] 4. _write_readme_file: gera o [README.md](http://README.md)
    • [x] 5. init: cria ou substitui o arquivo yaml do dataset
  3. Table
    • [x] 1. init: cria um objeto Metadata em self.metadata
    • [x] 2. table_config: carrega os metadados do yaml
    • [x] 3. _is_partitioned: verifica se a tabela é particionada pelos dados do yaml (campos de particionamento)
    • [x] 4. _load_schema: gera o json do schema da tabela e envia para o BQ
    • [x] 5. _make_publish_sql: cria o arquivo publish.sql baseado no yaml e salva na pasta da tabela
    • [x] 6. _make_template: cria o arquivo yaml e o publish.sql
    • [x] 7. update_columns: carrega os metadados do arquivo yaml, lê a planilha de arquitetura (google sheets ou arquivo csv, xls, xlsx, xlsm, xlsb, odf, ods, odt), insere em cols e salva o arquivo yaml com as colunas
    • [x] 8. init: gera os arquivos de configuração (table_config.yaml e publish.sql) com base em um sample dos arquivos de dados e, caso exista uma planilha de arquitetura, atualiza as colunas com base nela
    • [x] 9. create: cria a tabela no BQ e chama o init para gerar os arquivos de configuração
    • [x] 10. update: atualiza o schema do BQ, usando os metadados para renderizar o arquivo .txt de descrição da tabela
    • [x] 11. publish: cria a tabela em produção no BQ, usando o publish.sql para criar a view atual.
  4. Base
    • [x] 1. _load_yaml: método responsável por carregar os dados dos arquivos yaml

Workflow

  • Table.create

    • staging
      • publish.sql: usa dados do csv para criar a view em que todas as colunas são string
      • schema-staging.json: td como string
  • Se tabela n existe na API

    • raise: direciona para formulário de criação de metadados
  • Se tabela já existe,

    • Usa dados da API para preencher os arquivos necessários
      • atualiza publish.sql
      • atualiza schema-staging.json
      • cria schema-prod.json
      • cria table_description.txt

d116626 avatar Aug 30 '23 13:08 d116626