Catálogo Iceberg REST · DuckDB · Polars
API
Conecte o lake do dartic às suas ferramentas. O catálogo em https://dartic.io/catalog fala o protocolo Apache Iceberg REST (somente leitura) e lista as mesmas tabelas do console web. Os dados das tabelas são lidos direto do bucket público; o catálogo exige um token de acesso pessoal.
Tokens de acesso
Entre, abra a página API no console e crie um token. Ele começa com dpat_ e aparece uma única vez; guarde-o como uma senha (por exemplo em DARTIC_TOKEN). Você pode ter até 10 tokens, escolher a validade e revogar qualquer um a qualquer momento.
Criar um tokenHTTP
Toda requisição leva Authorization: Bearer <token>.
export DARTIC_TOKEN=dpat_...
# Namespaces
curl -H "Authorization: Bearer $DARTIC_TOKEN" https://dartic.io/catalog/v1/namespaces
# Tables in a namespace
curl -H "Authorization: Bearer $DARTIC_TOKEN" https://dartic.io/catalog/v1/namespaces/equities/tables
# Current Iceberg metadata of one table
curl -H "Authorization: Bearer $DARTIC_TOKEN" https://dartic.io/catalog/v1/namespaces/equities/tables/raw_cvm_cgvn_geralDuckDB
CLI ou Python. O ATTACH expõe cada tabela como lake.<namespace>.<tabela>, os mesmos nomes do editor web.
INSTALL iceberg; LOAD iceberg; INSTALL httpfs; LOAD httpfs;
-- Data files are public: an S3 secret without keys, pointed at the lake domain.
CREATE SECRET dartic_data (TYPE S3, KEY_ID '', SECRET '', REGION 'auto',
ENDPOINT 'data.dartic.io', URL_STYLE 'vhost', USE_SSL true);
-- Your personal access token for the catalog.
CREATE SECRET dartic (TYPE iceberg, TOKEN 'dpat_...');
ATTACH 'dartic' AS lake (TYPE iceberg, ENDPOINT 'https://dartic.io/catalog',
SECRET dartic, ACCESS_DELEGATION_MODE 'none');
SHOW ALL TABLES;
SELECT * FROM lake.equities.raw_cvm_cgvn_geral LIMIT 10;Polars
Via PyIceberg. scan_iceberg é lazy: filtros e projeções vão para a leitura.
# pip install polars 'pyiceberg[pyarrow]'
import os
import polars as pl
from pyiceberg.catalog.rest import RestCatalog
catalog = RestCatalog(
"dartic",
uri="https://dartic.io/catalog",
token=os.environ["DARTIC_TOKEN"],
**{
"s3.endpoint": "https://data.dartic.io",
"s3.force-virtual-addressing": "true",
"s3.anonymous": "true",
"s3.region": "auto",
},
)
print(catalog.list_tables("equities"))
df = pl.scan_iceberg(catalog.load_table("equities.raw_cvm_cgvn_geral")).head(10).collect()
print(df)Sem token
O lake é de dados abertos. A lista de tabelas e seus arquivos de metadados atuais é publicada em https://hyoko-raw.data.dartic.io/dartic/manifest.json e qualquer uma pode ser lida com iceberg_scan. O token acrescenta descoberta e ATTACH.
-- No token: read one table straight from its metadata file listed in manifest.json.
SELECT count(*) FROM iceberg_scan(
's3://hyoko-raw/__r2_data_catalog/.../metadata/00013-....gz.metadata.json',
metadata_compression_codec => 'gzip');Limites
120 requisições ao catálogo por minuto por token (um ATTACH custa cerca de dez). O catálogo é atualizado junto com o lake, uma vez por semana. Escritas recebem 405.