Vai al contenuto

API Python

Catalog

python
Catalog(
    *,
    app_path=None,
    metadata_path=None,
    depth="value",
    refresh=False,
    on_scan_error="warn",
    on_metadata_error="warn",
    freq_threshold=100,
    auto_enumerations=True,
    csv_encoding=None,
    sample_size=100_000,
    preview_rows=100,
    csv_skip_copy=False,
    app_config=None,
    quiet=False,
    verbose=False,
    log_file=None,
)
AttributoTipoDescrizione
app_pathstr | Path | NonePercorso per l'esportazione dell'app autonoma; se contiene già data/db, viene riutilizzato per le scansioni incrementali
metadata_pathstr | Path | list[str | Path] | NoneCartella sorgente dei metadati, URI di database o lista di sorgenti
depth"dataset" | "variable" | "stat" | "value"Profondità di scansione predefinita (predefinito: "value")
refreshboolForza la riscansione completa ignorando la cache (predefinito: False)
on_scan_error"warn" | "fail"La scansione è sempre continue-on-error (un file/tabella fallito viene registrato e saltato). "warn" (predefinito) esce con 0; "fail" fa uscire la CLI con 2 quando un dataset è fallito, così la CI non pubblica in verde un catalogo troncato
on_metadata_error"warn" | "fail"Anche il caricamento dei metadati è continue-on-error (una tabella non valida viene registrata e saltata, le tabelle valide vengono comunque applicate). "warn" (predefinito) esce con 0; "fail" fa uscire la CLI con 3 quando una tabella di metadati ha fallito la validazione, così la CI non pubblica in verde un catalogo privato della sua curatela
freq_thresholdintNumero massimo di valori distinti per il rilevamento delle frequenze e delle enumerazioni automatiche. Le stringhe oltre questa soglia ricevono frequenze dei pattern
auto_enumerationsboolCrea enumerazioni automatiche dalle frequenze dei valori e le collega alle variabili (predefinito: True)
csv_encodingstr | NoneEncoding CSV predefinito (utf-8, cp1252, ecc.)
sample_sizeint | NoneDimensione predefinita del campione per il rilevamento delle frequenze e delle enumerazioni automatiche (predefinito: 100_000)
preview_rowsint | Literal[False]Numero massimo predefinito di righe esportate nelle anteprime dei dataset alle profondità stat/value (predefinito: 100; 0 o false disabilita)
csv_skip_copyboolSalta la copia temporanea UTF-8 per i CSV locali (predefinito: False)
app_configdict[str, str] | NoneConfigurazione chiave-valore per la web app
quietboolSopprime i log di avanzamento (predefinito: False)
verboseboolMostra i traceback completi in caso di errore (predefinito: False)
log_filestr | Path | NoneScrive il log completo di scansione su file (troncato a ogni esecuzione)
folderTable[Folder]Tabella delle cartelle (.all(), .count, .get_by(...))
datasetTable[Dataset]Tabella dei dataset
variableTable[Variable]Tabella delle variabili
enumerationTable[Enumeration]Tabella delle enumerazioni
valueTable[Value]Tabella dei valori di enumerazione
frequencyTable[Frequency]Tabella delle frequenze (calcolata)
organizationTable[Organization]Tabella delle organizzazioni
tagTable[Tag]Tabella dei tag
docTable[Doc]Tabella dei documenti
conceptTable[Concept]Tabella dei concetti del glossario di business
configTable[Config]Tabella chiave-valore di configurazione della web app

Catalog.add_folder()

python
catalog.add_folder(
    path,
    metadata=None,
    *,
    depth=None,
    include=None,
    exclude=None,
    recursive=True,
    csv_encoding=None,
    sample_size=None,
    auto_enumerations=None,
    preview_rows=None,
    csv_skip_copy=None,
    storage_options=None,
    refresh=None,
    quiet=None,
    time_series=True,
    create_folders=True,
    on_unmatched="warn",
)
ParametroTipoPredefinitoDescrizione
pathstr | Path | list[str | Path]obbligatorioDirectory o lista di directory da scansionare
metadataEntityMetadata | NoneNoneIdentità, collegamento al padre e metadati per la cartella radice
depth"dataset" | "variable" | "stat" | "value" | NoneNoneProfondità di scansione (usa catalog.depth se None)
includelist[str] | NoneNonePattern glob da includere
excludelist[str] | NoneNonePattern glob da escludere
recursiveboolTrueScansiona le sottodirectory
csv_encodingstr | NoneNoneOverride dell'encoding CSV
sample_sizeint | NoneNoneRighe campionate per il rilevamento delle frequenze e delle enumerazioni automatiche (sovrascrive il catalogo)
auto_enumerationsbool | NoneNoneCrea enumerazioni automatiche dalle frequenze dei valori per questa cartella (sovrascrive il catalogo)
preview_rowsint | Literal[False] | NoneNoneNumero massimo di righe di anteprima per i dataset trovati in questa cartella (sovrascrive il catalogo; 0 o false disabilita)
csv_skip_copybool | NoneNoneSalta la copia temporanea UTF-8 (sovrascrive il catalogo)
storage_optionsdict | NoneNoneOpzioni per lo storage remoto (passate a fsspec)
refreshbool | NoneNoneForza la riscansione (sovrascrive l'impostazione del catalogo)
quietbool | NoneNoneSovrascrive l'impostazione quiet del catalogo
time_seriesboolTrueRaggruppa i file con pattern temporali
create_foldersboolTrueSe False, non crea cartelle dal disco; la struttura è affidata a metadata_path (metadata-first)
on_unmatched"skip" | "warn" | "error""warn"Politica quando un file scansionato non ha corrispondenza nei metadati (solo con create_folders=False)

Catalog.add_dataset()

python
catalog.add_dataset(
    path,
    *,
    metadata=None,
    depth=None,
    csv_encoding=None,
    sample_size=None,
    auto_enumerations=None,
    preview_rows=None,
    csv_skip_copy=None,
    storage_options=None,
    refresh=None,
    quiet=None,
)
ParametroTipoPredefinitoDescrizione
pathstr | Path | list[str | Path]obbligatorioFile (uno o più) o directory partizionata (locale/remota)
metadataEntityMetadata | NoneNoneIdentità del dataset, collegamento al padre e metadati
depth"dataset" | "variable" | "stat" | "value" | NoneNoneProfondità di scansione (usa catalog.depth se None)
csv_encodingstr | NoneNoneOverride dell'encoding CSV
sample_sizeint | NoneNoneRighe campionate per il rilevamento delle frequenze e delle enumerazioni automatiche (sovrascrive il catalogo)
auto_enumerationsbool | NoneNoneCrea enumerazioni automatiche dalle frequenze dei valori per questo dataset (sovrascrive il catalogo)
preview_rowsint | Literal[False] | NoneNoneNumero massimo di righe di anteprima per questo dataset (sovrascrive il catalogo; 0 o false disabilita)
csv_skip_copybool | NoneNoneSalta la copia temporanea UTF-8 (sovrascrive il catalogo)
storage_optionsdict | NoneNoneOpzioni per lo storage remoto (passate a fsspec)
refreshbool | NoneNoneForza la riscansione (sovrascrive l'impostazione del catalogo)
quietbool | NoneNoneSovrascrive l'impostazione quiet del catalogo

Catalog.add_database()

python
catalog.add_database(
    connection,
    metadata=None,
    *,
    depth=None,
    schema=None,
    include=None,
    exclude=None,
    sample_size=None,
    auto_enumerations=None,
    preview_rows=None,
    group_by_prefix=True,
    prefix_min_tables=2,
    time_series=True,
    storage_options=None,
    refresh=None,
    quiet=None,
    oracle_client_path=None,
    ssh_tunnel=None,
)
ParametroTipoPredefinitoDescrizione
connectionstr | ibis.BaseBackendobbligatorioStringa di connessione o oggetto backend ibis
metadataEntityMetadata | NoneNoneIdentità, collegamento al padre e metadati per la cartella radice
depth"dataset" | "variable" | "stat" | "value" | NoneNoneProfondità di scansione (usa catalog.depth se None)
schemastr | list[str] | NoneNoneSchema (uno o più) da scansionare
includelist[str] | NoneNonePattern glob confrontati con i nomi delle tabelle da includere
excludelist[str] | NoneNonePattern glob confrontati con i nomi delle tabelle da escludere
sample_sizeint | NoneNoneRighe campionate per il rilevamento delle frequenze e delle enumerazioni automatiche (sovrascrive il catalogo)
auto_enumerationsbool | NoneNoneCrea enumerazioni automatiche dalle frequenze dei valori per le tabelle scansionate (sovrascrive il catalogo)
preview_rowsint | Literal[False] | NoneNoneNumero massimo di righe di anteprima per i dataset delle tabelle scansionate (sovrascrive il catalogo; 0 o false disabilita)
group_by_prefixbool | strTrueRaggruppa le tabelle per prefisso in sottocartelle
prefix_min_tablesint2Numero minimo di tabelle per formare un gruppo di prefisso
time_seriesboolTrueRileva i pattern temporali delle tabelle
storage_optionsdict | NoneNoneOpzioni per SQLite/GeoPackage remoti
refreshbool | NoneNoneForza la riscansione (sovrascrive l'impostazione del catalogo)
quietbool | NoneNoneSovrascrive l'impostazione quiet del catalogo
oracle_client_pathstr | NoneNonePercorso delle librerie Oracle Instant Client
ssh_tunneldict | NoneNoneConfigurazione del tunnel SSH (host, user, port, ecc.)

Catalog.add_geodatabase()

python
catalog.add_geodatabase(
    path,
    metadata=None,
    *,
    depth=None,
    include=None,
    exclude=None,
    auto_enumerations=None,
    preview_rows=None,
    quiet=None,
    refresh=None,
    storage_options=None,
)
ParametroTipoPredefinitoDescrizione
pathstr | PathobbligatorioPercorso o URL remoto della directory .gdb
metadataEntityMetadata | NoneNoneIdentità, collegamento al padre e metadati per la cartella contenitore
depth"dataset" | "variable" | "stat" | "value" | NoneNoneProfondità di scansione (usa catalog.depth se None)
includelist[str] | NoneNonePattern glob confrontati con i nomi dei layer da includere
excludelist[str] | NoneNonePattern glob confrontati con i nomi dei layer da escludere
auto_enumerationsbool | NoneNoneCrea enumerazioni automatiche dalle frequenze dei valori per i layer scansionati (sovrascrive il catalogo)
preview_rowsint | Literal[False] | NoneNoneNumero massimo di righe di anteprima per i dataset dei layer scansionati (sovrascrive il catalogo; 0 o false disabilita)
quietbool | NoneNoneSovrascrive l'impostazione quiet del catalogo
refreshbool | NoneNoneForza la riscansione (sovrascrive l'impostazione del catalogo)
storage_optionsdict | NoneNoneOpzioni per lo storage remoto (passate a fsspec)

Catalog.export_db()

python
catalog.export_db(
    output_dir=None,
    *,
    track_evolution=True,
    copy_assets=None,
    base_dir=None,
    export_size_report=False,
    quiet=None,
)
ParametroTipoPredefinitoDescrizione
output_dirstr | Path | NoneNoneDirectory di output (usa app_path se None)
track_evolutionboolTrueTraccia le modifiche tra le esportazioni
copy_assetsdict | list[dict] | NoneNoneCopia file/directory locali aggiuntivi nell'esportazione con le stesse regole di copy_assets()
base_dirstr | Path | NoneNoneDirectory di base per i percorsi relativi copy_assets.from (predefinita: directory di lavoro corrente)
export_size_reportboolFalseStampa un report delle dimensioni di esportazione per tabella, incluse le dimensioni stimate dei .json gzip
quietbool | NoneNoneSovrascrive l'impostazione quiet del catalogo

Esporta i file di metadati JSON. Chiama finalize() automaticamente quando sono stati scansionati dei dati.

Catalog.export_app()

python
catalog.export_app(
    output_dir=None,
    *,
    open_browser=False,
    track_evolution=True,
    update_app=False,
    copy_assets=None,
    base_dir=None,
    export_size_report=False,
    quiet=None,
)
ParametroTipoPredefinitoDescrizione
output_dirstr | Path | NoneNoneDirectory di output (usa app_path se None)
open_browserboolFalseApre l'app nel browser dopo l'esportazione
track_evolutionboolTrueTraccia le modifiche tra le esportazioni
update_appboolFalseAggiorna i file front-end inclusi quando l'app esiste già
copy_assetsdict | list[dict] | NoneNoneCopia file/directory locali aggiuntivi nell'app esportata con le stesse regole di copy_assets()
base_dirstr | Path | NoneNoneDirectory di base per i percorsi relativi copy_assets.from (predefinita: directory di lavoro corrente)
export_size_reportboolFalseStampa un report delle dimensioni di esportazione per tabella per data/db, incluse le dimensioni stimate dei .json gzip
quietbool | NoneNoneSovrascrive l'impostazione quiet del catalogo

Esporta l'app datannur autonoma completa con i dati. Usa app_path per impostazione predefinita se impostato all'inizializzazione. Le app esistenti aggiornano data/db per impostazione predefinita; passare update_app=True per aggiornare i file front-end inclusi.

Catalog.finalize()

python
catalog.finalize()

Metodo avanzato del ciclo di vita. Rimuove le entità non più viste durante la scansione.

Nell'uso normale, di solito non è necessario chiamarlo direttamente: export_db() ed export_app() lo chiamano automaticamente dopo la scansione.

run_config()

python
from datannurpy import run_config

catalog = run_config(path)
ParametroTipoPredefinitoDescrizione
pathstr | PathobbligatorioFile di configurazione YAML da caricare ed eseguire

Esegue un flusso di lavoro catalog.yml e restituisce il Catalog risultante.

Chiavi YAML di primo livello riconosciute da run_config():

ChiaveTipoDescrizione
addlist[dict]Passi di scansione da eseguire con voci abbreviate come folder, dataset o database
envdict[str, str]Variabili d'ambiente da iniettare prima dell'espansione dei valori YAML
env_filestr | Path | list[str | Path]Uno o più file dotenv da caricare prima dell'espansione
output_dirstr | Path | NoneEsporta soltanto i metadati JSON in questa directory invece di esportare un'app completa
open_browserboolApre l'app generata nel browser dopo l'esportazione dell'app
copy_assetsdict | list[dict] | NoneCopia file o directory locali aggiuntivi nell'esportazione
track_evolutionboolAbilita o disabilita la generazione di evolution.json durante l'esportazione
export_size_reportboolAbilita il report delle dimensioni di esportazione per tabella dopo la scrittura del database
update_appboolAggiorna i file front-end inclusi quando l'esportazione avviene su un app_path esistente
post_exportstr | list[str] | NoneEsegue script Python al termine dell'esportazione

Tutte le altre chiavi di primo livello non riservate vengono passate a Catalog(...) con gli stessi nomi di parametro, come app_path, metadata_path, depth, refresh, sample_size, auto_enumerations, preview_rows, app_config, quiet, verbose e log_file.

Per mantenere concisa questa pagina API, il comportamento YAML dettagliato è documentato nelle guide tematiche:

  • opzioni di esportazione come output_dir, open_browser, track_evolution, update_app, copy_assets e post_export: vedere Output & esportazioni
  • opzioni di metadati e configurazione come metadata_path, env, env_file e app_config: vedere Metadati & configurazione

I valori basati su percorso sono risolti relativamente alla directory del file YAML, salvo diversa indicazione in quelle guide.

copy_assets()

python
from datannurpy import copy_assets

copy_assets(output_dir, rules, *, base_dir=None, quiet=False)
ParametroTipoPredefinitoDescrizione
output_dirstr | PathobbligatorioDirectory di esportazione da popolare
rulesdict | list[dict]obbligatorioRegole di copia con la stessa forma del copy_assets YAML
base_dirstr | Path | NoneNoneDirectory di base per i percorsi relativi from (predefinita: directory di lavoro corrente)
quietboolFalseSopprime i log di avanzamento della copia

Ogni regola accetta from, to, include opzionale e clean opzionale.

Catalog.export_db() e Catalog.export_app() accettano anche copy_assets= e base_dir= come wrapper di comodo attorno a questo helper.

EntityMetadata

python
EntityMetadata(
    id=None,
    parent_id=None,
    manager_organization_id=None,
    owner_organization_id=None,
    tag_ids=None,
    doc_ids=None,
    name=None,
    description=None,
    license=None,
    type=None,
    link=None,
    localisation=None,
    start_date=None,
    end_date=None,
    updating_each=None,
    no_more_update=None,
)
ParametroTipoDescrizione
idstr | NoneID esplicito dell'entità. Se omesso, vengono usati i valori derivati dalla scansione.
parent_idstr | NoneID della cartella padre (Folder.parent_id per le cartelle, Dataset.folder_id per i dataset).
manager_organization_idstr | NoneID dell'organizzazione che gestisce.
owner_organization_idstr | NoneID dell'organizzazione proprietaria.
tag_idslist[str] | NoneID dei tag correlati.
doc_idslist[str] | NoneID dei documenti correlati.
namestr | NoneNome visualizzato.
descriptionstr | NoneTesto della descrizione.
licensestr | NoneStringa di licenza.
typestr | NoneTipo/categoria dell'entità.
linkstr | NoneURL di riferimento esterno.
localisationstr | NoneCopertura geografica.
start_datestr | NoneInizio del periodo coperto.
end_datestr | NoneFine del periodo coperto.
updating_eachstr | NoneFrequenza di aggiornamento.
no_more_updatestr | NoneIndicatore che non sono previsti ulteriori aggiornamenti.

Nelle configurazioni YAML, gli stessi metadati si scrivono di solito come chiavi di primo livello su una voce add:

yaml
add:
  - folder: ./data
    id: source
    name: Source data
    description: Curated files used by the analytics team.

  - dataset: ./data/sales.csv
    id: source---sales
    folder_id: source
    name: Sales
    description: Monthly sales by product and region.

EntityMetadata è l'equivalente nell'API Python di quelle chiavi di metadati YAML.

Helper per gli ID

python
from datannurpy import sanitize_id, build_dataset_id, build_variable_id
FunzioneDescrizioneEsempio
sanitize_id(s)Pulisce una stringa per l'uso come ID"My File (v2)" → "My File v2"
build_dataset_id(folder_id, dataset_name)Costruisce l'ID di un dataset("src", "sales") → "src---sales"
build_variable_id(folder_id, dataset_name, var)Costruisce l'ID di una variabile("src", "sales", "amount") → "src---sales---amount"