Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

    • Home
    • Padroneggiare la Piattaforma
    • Analitiche

    Condivisione dati via Python

    Documentazione tecnica su come i clienti possono acquisire tabelle di condivisione dati tramite Python

    Contact Us

    If you still have questions or prefer to get help directly from an agent, please submit a request.
    We’ll get back to you as soon as possible.

    Please fill out the contact form below and we will reply as soon as possible.

    Italian
    FR French
    IT Italian
    JP Japanese
    DE German
    US English (US)
    ES Spanish
    • Padroneggiare la Piattaforma
      Vicino a me 360 IA Analitiche Directory Homepage Hub Ubicazione Localizzatore + Pagine Messaggi App Mobile Stato della Piattaforma e Domande Frequenti Gestione delle Recensioni Sociale La Dashboard Novità
    + More

    Contesto

    Per i clienti che dispongono di strumenti di visualizzazione dei dati che non funzionano con il metodo di condivisione dei dati da databricks, utilizzeremo questa implementazione Python per supportare un inserimento dati efficace.

    Introduzione

    Delta Sharing è un protocollo aperto sviluppato da Databricks per la condivisione sicura dei dati in tempo reale tra organizzazioni. Consente a un fornitore di dati di condividere i set di dati con i destinatari senza richiedere loro di utilizzare Databricks o qualsiasi piattaforma specifica.

    Questa guida ti spiega come consumare i dati condivisi tramite Delta Sharing e inserirli nel tuo database. Forniamo uno script di riferimento Python pronto all'uso che legge una tabella Delta condivisa e la scrive in un database PostgreSQL.

    Per chi è pensato?

    Questa guida è per i clienti che ricevono dati attraverso Delta Sharing e desiderano caricarli in un sistema che non supporta nativamente il formato Delta — come PostgreSQL, MySQL, o qualsiasi database SQL.

    Panoramica dell'architettura

    Il flusso di acquisizione è semplice:

    ┌──────────────────────┐ ┌────────────────────┐ ┌──────────────────────┐ │ Databricks │ │ Python Script │ │ Your Database │ │ Delta Sharing │──────▶│ (this repository) │──────▶│ (e.g. PostgreSQL) │ │ │ HTTPS │ │ SQL │ │ │ Shared tables are │ │ 1. Reads data via │ │ Data is written to │ │ accessed via a │ │ Delta Sharing │ │ the target table │ │ .share profile │ │ 2. Loads into a │ │ using standard SQL │ │ │ │ Pandas DataFrame│ │ (INSERT / REPLACE) │ └──────────────────────┘ └────────────────────┘ └──────────────────────┘

    Non è necessario un account Databricks per il destinatario.

    Nessun driver speciale — lo script utilizza la libreria Python open-source delta-sharing.

    I dati rimangono sotto il tuo controllo — una volta acquisiti, i dati risiedono nel tuo database.

    Prerequisiti

    Prima di iniziare, assicurati di avere quanto segue:

    Requisito

    Dettagli

    Python

    Versione 3.9 o superiore. Verifica con python --version.

    Git

    Per clonare il repository. Verifica con git --version.

    Docker (facoltativo)

    Serve solo se vuoi avviare un PostgreSQL locale per i test.

    PostgreSQL

    Un'istanza in esecuzione a cui hai accesso in scrittura – personale oppure la configurazione Docker inclusa nel repository.

    Profilo Delta Sharing

    Un file .share fornito dal tuo provider di dati (Uberall). Vedi il Passaggio 1.

     

     

    Passaggio 1 — Ottieni il tuo profilo Delta Sharing

    Il tuo fornitore di dati (Uberall) ti fornirà un file di profilo Delta Sharing. Si tratta di un piccolo file JSON con estensione .share che contiene i dettagli di connessione e il token di autenticazione.

    Il file è simile a questo:

     
     
    {
      "shareCredentialsVersion": 1,
      "endpoint": "https://<databricks-host>/api/2.0/delta-sharing/",
      "bearerToken": "<your-token>"
    }

    Salva questo file in una posizione sicura sulla tua macchina. Farai riferimento al suo percorso durante la configurazione dello script.

    Importante:

    Questo file contiene un bearer token che consente l'accesso ai dati condivisi. Trattalo come una password.

    Non inserirlo nel controllo della versione.

    Limita le autorizzazioni del file in modo che solo il tuo utente possa leggerlo:

     

    chmod 600 /path/to/your/profile.share

    Se non hai ricevuto il tuo file di profilo, contatta il team Uberall Data Engineering.

    Passaggio 2 — Clona il Repository

    Apri un terminale e clona il repository:

    git clone https://gitlab.com/momentfeed/uberall/development/ar/data-lake/lakehouse/databricks/delta-sharing-code-examples.git

    Accedi alla directory del progetto:

    cd delta-sharing-code-examples

    Il repository contiene i seguenti file:

    File

    Descrizione

    delta_sharing_to_postgres.py

    Lo script di acquisizione principale.

    requirements.txt

    Dipendenze di Python.

    compose.yaml

    File Docker Compose per avviare un PostgreSQL locale per i test.

    README.md

    Guida di avvio rapido e documentazione di riferimento.

    Passaggio 3 – Configurare un ambiente Python

    Ti consigliamo di usare un ambiente virtuale per evitare conflitti con altri progetti Python.

    Crea e attiva un ambiente virtuale:

    # Create the virtual environment
    python -m venv venv
    
    # Activate it (Linux / macOS)
    source venv/bin/activate
    
    # Activate it (Windows PowerShell)
    .\venv\Scripts\Activate.ps1

    Installa le dipendenze richieste:

    pip install -r requirements.txt

    Questo installa i seguenti pacchetti:

    Pacchetto

    Scopo

    delta-sharing

    Libreria ufficiale Databricks per la lettura delle tabelle Delta Sharing.

    pandas

    Manipolazione dei dati – i dati condivisi vengono caricati come un DataFrame Pandas.

    sqlalchemy

    Livello di astrazione dei database per scrivere dati in PostgreSQL (o altri database).

    psycopg2-binary

    Driver PostgreSQL utilizzato da SQLAlchemy.

    Passaggio 4 – Configura un database PostgreSQL

    Hai due opzioni:

    Opzione A: Usa la configurazione Docker inclusa (consigliata per i test)

    Se hai Docker installato, il repository include un file compose.yaml che avvia un'istanza PostgreSQL 16 con un singolo comando.

    Avvia il database:

    docker compose up -d

    Verifica che sia in esecuzione:

    docker compose logs db

    Cerca database system is ready to accept connections nell'output.

    Test di connettività rapido:

    docker compose exec db psql -U postgres -d testdb -c "SELECT 1;"

    L'istanza Docker di PostgreSQL utilizza i seguenti valori predefiniti:

    Impostazione

    Valore

    Host

    localhost

    Porta

    5432

    Database

    testdb

    Utente

    postgres

    Password

    example

    Questi corrispondono alla configurazione predefinita nello script, quindi non sono necessarie modifiche aggiuntive.

    Quando hai finito i test, arresta il database con:

    # Stop containers (data is preserved)
    docker compose down
    
    # Stop and delete all data
    docker compose down -v

    Opzione B: Usa la tua istanza PostgreSQL

    Se disponi già di un database PostgreSQL, annota semplicemente i dettagli di connessione (host, porta, database, utente, password). Li inserrai nel Passaggio 5.

    Passaggio 5 — Configura lo script

    Apri delta_sharing_to_postgres.py in un editor di testo qualsiasi. All'inizio del file troverai la sezione USER CONFIGURATION:

     

    # =============================================================================
    # USER CONFIGURATION — Edit the values below to match your environment.
    # =============================================================================
    
    DELTA_SHARING_PROFILE_PATH = "/path/to/your/profile.share"
    DELTA_SHARING_TABLE = "<share_name>.<schema_name>.<table_name>"
    
    PG_HOST = "localhost"
    PG_PORT = 5432
    PG_DATABASE = "testdb"
    PG_USER = "postgres"
    PG_PASSWORD = "example"
    
    PG_TARGET_SCHEMA = "public"
    PG_TARGET_TABLE = "delta_sharing_data"
    
    WRITE_MODE = "replace"

    Modifica i seguenti valori:

    Variabile

     

    Cosa impostare

     

    Esempio

     

    DELTA_SHARING_PROFILE_PATH

    Percorso del file .share che hai ricevuto al Passaggio 1.

    "./config.share"

    DELTA_SHARING_TABLE

    Il nome della tabella completo. Formato: <share>.<schema>.<table>. Se non sei sicuro del nome, vedi la sezione «Come scoprire le tabelle disponibili» di seguito.

    "my_share.analytics.sales_data"

    PG_HOST

    Il tuo host PostgreSQL. Usa "localhost" per Docker.

    "localhost"

    PG_PORT

    La tua porta PostgreSQL.

    5432

    PG_DATABASE

    Il nome del tuo database di destinazione.

    "testdb"

    PG_USER

    Il nome utente del tuo database.

    "postgres"

    PG_PASSWORD

    La tua password del database.

    "example"

    PG_TARGET_SCHEMA

    Lo schema dove verrà creata la tabella.

    "public"

    PG_TARGET_TABLE

    Il nome della tabella da creare/scrivere.

    "delta_sharing_data"

    WRITE_MODE

    Come gestire i dati esistenti. Vedi «Modalità di scrittura» qui sotto.

    "replace"

     
     
     

    Come scoprire le tabelle disponibili

    Se non conosci il nome esatto della tabella, puoi eseguire uno script di individuazione rapida. Crea un file Python temporaneo o usa una shell Python:

     
     
    import delta_sharing
    
    client = delta_sharing.SharingClient("/path/to/your/profile.share")
    
    for table in client.list_all_tables():
        print(f"{table.share}.{table.schema}.{table.name}")

    In questo modo vengono visualizzate tutte le tabelle a tua disposizione. Usa la stringa <share>.<schema>.<table> completa come valore per DELTA_SHARING_TABLE.

    In alternativa, esegui semplicemente lo script principale – registra tutte le tabelle disponibili all'inizio prima di tentare di leggere i dati.

    Modalità di scrittura

    L'impostazione WRITE_MODE controlla il modo in cui lo script gestisce i dati esistenti nella tabella di destinazione:

    Modalità

    Comportamento

    Caso di utilizzo tipico

    replace

    Rimuove e ricrea la tabella di destinazione a ogni esecuzione. Tutti i dati precedenti vengono eliminati.

    Aggiornamento completo – vuoi sempre lo snapshot completo più recente.

    append

    Inserisce nuove righe nella tabella esistente. Non viene eseguita nessuna deduplicazione.

    Accumulazione di dati nel tempo (ad es. esportazioni giornaliere).

    fail

    Lo script si interrompe se la tabella di destinazione esiste già.

    Rete di protezione – per evitare sovrascritture accidentali.

    Passaggio 6 — Esegui lo Script

    Assicurati che il tuo ambiente virtuale sia attivato (vedi Passaggio 3), quindi esegui:

    python delta_sharing_to_postgres.py

    Cosa Aspettarsi

    Un'esecuzione riuscita produce un output simile al seguente:

    2026-02-20 17:20:00,000 [INFO] ============================================================
    2026-02-20 17:20:00,000 [INFO] Delta Sharing to PostgreSQL — Ingestion Script
    2026-02-20 17:20:00,000 [INFO] ============================================================
    2026-02-20 17:20:00,001 [INFO] Loading Delta Sharing profile from: ./config.share
    2026-02-20 17:20:00,002 [INFO] Available shares and tables:
    2026-02-20 17:20:01,500 [INFO]   my_share.analytics.sales_data
    2026-02-20 17:20:01,500 [INFO] Reading table: my_share.analytics.sales_data
    2026-02-20 17:20:05,000 [INFO] Read 15000 rows and 12 columns.
    2026-02-20 17:20:05,001 [INFO] Preview of the data (first 5 rows):
    2026-02-20 17:20:05,002 [INFO]
       col_a  col_b  col_c ...
    0  ...    ...    ...
    1  ...    ...    ...
    2026-02-20 17:20:05,100 [INFO] Connecting to PostgreSQL...
    2026-02-20 17:20:05,200 [INFO] PostgreSQL connection successful.
    2026-02-20 17:20:05,201 [INFO] Writing 15000 rows to public.delta_sharing_data (mode=replace)...
    2026-02-20 17:20:08,000 [INFO] Write complete.
    2026-02-20 17:20:08,100 [INFO] Validation: public.delta_sharing_data now contains 15000 rows.
    2026-02-20 17:20:08,101 [INFO] ============================================================
    2026-02-20 17:20:08,101 [INFO] Ingestion completed successfully.
    2026-02-20 17:20:08,101 [INFO] ============================================================

    Lo script:

    Si connette a Delta Sharing e elenca tutte le tabelle disponibili.

    Legge la tabella specificata in memoria.

    Mostra un'anteprima delle prime 5 righe.

    Scrive i dati nella tua istanza PostgreSQL.

    Convalida l'ingestion contando le righe nella tabella di destinazione.

    Passaggio 7 — Verifica i dati

    Dopo un'esecuzione riuscita, puoi verificare i dati in PostgreSQL.

    Usando la riga di comando (setup Docker):

    docker compose exec db psql -U postgres -d testdb -c "SELECT COUNT(*) FROM public.delta_sharing_data;"

    Usando un client SQL (DataGrip, DBeaver, pgAdmin, ecc.):

    Connettiti alla tua istanza PostgreSQL con le stesse credenziali del Passaggio 5, quindi esegui:

    -- Row count
    SELECT COUNT(*) FROM public.delta_sharing_data;
    
    -- Preview rows
    SELECT * FROM public.delta_sharing_data LIMIT 10;
    
    -- Check column types
    SELECT column_name, data_type
    FROM information_schema.columns
    WHERE table_schema = 'public' AND table_name = 'delta_sharing_data';

    Casi d'uso

    Aggiornamento completo dello snapshot

    Imposta WRITE_MODE = "replace" ed esegui lo script secondo una pianificazione (ad es., giornalmente tramite un cron job). Ogni esecuzione sostituisce l'intera tabella con i dati più recenti dalla condivisione.

    # Example cron entry: run every day at 2:00 AM
    0 2 * * * /path/to/venv/bin/python /path/to/delta_sharing_to_postgres.py

     

    Aggiungi / accumula dati nel tempo

    Imposta WRITE_MODE = "append" per continuare ad aggiungere righe a ogni esecuzione. Questo è utile quando la tabella condivisa contiene nuovi record (ad es., eventi giornalieri o log) e vuoi creare una cronologia nel tuo database.

    Nota: Questa modalità non esegue la deduplicazione. Se esegui lo script due volte con gli stessi dati, avrai righe duplicate. Valuta l'aggiunta di logica di deduplicazione nel tuo database o nello script se questo è un problema.

    Carica in un database diverso

    Lo script utilizza SQLAlchemy, che supporta molti database. Per utilizzare un database diverso, modifica la stringa di connessione in build_pg_connection_string() e installa il driver appropriato:

    Database di destinazione

    Formato della stringa di connessione

    Driver da installare

    PostgreSQL

    postgresql+psycopg2://user:pass@host:port/db

    psycopg2-binary (incluso)

    MySQL

    mysql+pymysql://user:pass@host:port/db

    pip install pymysql

    Microsoft SQL Server

    mssql+pyodbc://user:pass@host:port/db?driver=ODBC+Driver+18+for+SQL+Server

    pip install pyodbc

    SQLite (file locale)

    sqlite:///path/to/database.db

    Incorporato (nessuna installazione necessaria)

    Incorpora in un data warehouse o database cloud

    Lo stesso approccio funziona con database ospitati su cloud (Amazon RDS, Google Cloud SQL, Azure Database for PostgreSQL, ecc.). Aggiorna semplicemente i parametri di connessione per puntare alla tua istanza cloud.

    Guida alla personalizzazione

    Lo script è intenzionalmente semplice e pensato per essere adattato alle tue esigenze. Di seguito troverai le modifiche più comuni.

    Filtrare o trasformare i dati prima del caricamento

    Dopo aver letto i dati, puoi manipolare il DataFrame di Pandas prima di scriverlo nel database. Ad esempio, per mantenere solo colonne specifiche:

    df = read_delta_sharing_table(DELTA_SHARING_PROFILE_PATH, DELTA_SHARING_TABLE)
    
    # Keep only the columns you need
    df = df[["column_a", "column_b", "column_c"]]
    
    # Rename columns to match your schema
    df = df.rename(columns={"column_a": "id", "column_b": "name"})
    
    # Filter rows
    df = df[df["status"] == "active"]
    
    ingest_to_postgres(df, connection_string, PG_TARGET_SCHEMA, PG_TARGET_TABLE, WRITE_MODE)

     

    Caricamento incrementale (carica solo i nuovi dati)

    Se la tabella condivisa dispone di una colonna di timestamp o data, puoi filtrare per caricare solo i nuovi record:

    df = read_delta_sharing_table(DELTA_SHARING_PROFILE_PATH, DELTA_SHARING_TABLE)
    
    # Only load data from the last 7 days
    from datetime import datetime, timedelta
    cutoff = datetime.now() - timedelta(days=7)
    df = df[df["updated_at"] >= cutoff]
    
    ingest_to_postgres(df, connection_string, PG_TARGET_SCHEMA, PG_TARGET_TABLE, "append")

    Carica più tabelle

    Duplica il blocco di configurazione o scorri un elenco di tabelle:

    TABLES_TO_INGEST = [
        {"delta_table": "my_share.schema.table_a", "pg_table": "table_a"},
        {"delta_table": "my_share.schema.table_b", "pg_table": "table_b"},
    ]
    
    for entry in TABLES_TO_INGEST:
        df = read_delta_sharing_table(DELTA_SHARING_PROFILE_PATH, entry["delta_table"])
        ingest_to_postgres(df, connection_string, PG_TARGET_SCHEMA, entry["pg_table"], WRITE_MODE)

    Usa variabili di ambiente al posto di valori hardcoded

    Per un uso in produzione, evita di codificare i segreti nello script. Usa invece le variabili di ambiente:

    import os
    
    DELTA_SHARING_PROFILE_PATH = os.environ["DELTA_SHARING_PROFILE_PATH"]
    PG_HOST = os.environ.get("PG_HOST", "localhost")
    PG_PASSWORD = os.environ["PG_PASSWORD"]

    Quindi impostali prima di eseguire:

    export DELTA_SHARING_PROFILE_PATH="./config.share"
    export PG_PASSWORD="your_password"
    python delta_sharing_to_postgres.py

    Procedure consigliate per la sicurezza

    Argomento

    Consiglio

    File di profilo (.share)

    Conserva in modo sicuro. Non eseguire il commit nel controllo versione. Limita i permessi del file (chmod 600).

    Scadenza del token Bearer

    I token possono avere una data di scadenza. Se ricevi errori 401 Unauthorized, richiedi un nuovo profilo al tuo fornitore di dati.

    Password del database

    Non codificarle nel script per la produzione. Utilizza variabili d'ambiente o un gestore di segreti.

    Accesso alla rete

    Assicurati che il tuo computer possa raggiungere sia l'endpoint Databricks (HTTPS) che la tua istanza PostgreSQL.

    Dati inattivi

    Una volta acquisiti, i dati sono sotto tuo controllo. Applica i criteri di governance dei dati della tua organizzazione al database di destinazione.

    Risoluzione dei problemi

    Errore

    Causa

    Soluzione

    FileNotFoundError sul profilo

    Il percorso del file .share è errato o il file non esiste.

    Verifica DELTA_SHARING_PROFILE_PATH. Utilizza un percorso assoluto se non sei sicuro.

    HTTPError 401 Unauthorized

    Il token bearer è scaduto o non valido.

    Contatta il tuo provider di dati (Uberall) per ottenere un nuovo file di profilo.

    HTTPError 403 Forbidden

    Non hai i permessi per accedere a questa condivisione o tabella.

    Verifica il nome della tabella. Contatta il tuo provider di dati per controllare i permessi dei destinatari.

    HTTPError 404 Not Found / SHARE_DOES_NOT_EXIST

    Il nome della condivisione in DELTA_SHARING_TABLE è errato.

    Esegui il passaggio di scoperta della tabella (vedi Passaggio 5) per elencare le condivisioni disponibili e utilizza il nome esatto stampato.

    DS_MATERIALIZATION_QUERY_FAILED

    Il provider di dati non ha configurato la materializzazione per la condivisione. Questo è un problema lato server.

    Contatta il tuo provider di dati (Uberall) e condividi questo messaggio di errore. Non può essere risolto dal lato destinatario.

    psycopg2.OperationalError: could not connect

    PostgreSQL non è raggiungibile.

    Verifica host, porta e credenziali. Se utilizzi Docker, assicurati che i container siano in esecuzione (docker compose ps). Verifica che la porta 5432 non sia bloccata da un firewall.

    psycopg2.OperationalError: password authentication failed

    Nome utente o password errati.

    Verifica PG_USER e PG_PASSWORD. Per la configurazione Docker, i valori predefiniti sono postgres / example.

    Empty DataFrame (0 rows)

    La tabella condivisa esiste ma non contiene dati.

    Controlla con il tuo provider di dati se la tabella dovrebbe contenere dati.

    ModuleNotFoundError: No module named 'delta_sharing'

    Le dipendenze non sono installate o l'ambiente virtuale non è attivato.

    Esegui pip install -r requirements.txt e assicurati che il tuo ambiente virtuale sia attivo.

    Assistenza

    Se riscontri problemi relativi a:

    I dati condivisi, i token di accesso o i permessi — contatta il team Uberall Data Engineering.

    Lo script di acquisizione — consulta questa guida e il README.md nel repository. Lo script è fornito come implementazione di riferimento; sei responsabile dell'adattamento e della manutenzione per il tuo ambiente.

    trasferimento scambio

    Was this article helpful?

    Yes
    No
    Give feedback about this article

    Related Articles

    • Che cos'è Advanced Analytics?
    • Rapporto Sulle Prestazioni Del Post Su Facebook
    • Report Sull'Esperienza del Cliente
    • Reputation Insights (precedentemente Customer Feedback/Experience)
    • Reach di Facebook Rilasciato giugno 2025

    Copyright 2026 – uberall.

    Expand