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.

    Sign In
    • Home
    • Maîtriser la Plateforme
    • Analytics

    Partage de données via Python

    Documentation technique sur la façon dont les clients peuvent ingérer des tables de partage de données via 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.

    French
    FR French
    IT Italian
    JP Japanese
    DE German
    US English (US)
    ES Spanish
    • Commencer
    • Maîtriser la Plateforme
      Locator + Pages Plateforme Guides Bonnes Pratiques IA Accueil Hub de localisation Localisateur + Pages Application Mobile Gestion des avis Réseaux sociaux Nouveautés Analytics Directories Messages Platform Status and General FAQs The Dashboard
    • Annuaires
      Google Facebook Instagram
    • Notes de version
    + More

    Contexte

    Pour les clients qui disposent d'outils de visualisation de données qui ne fonctionnent pas avec la méthode de partage de données de databricks, nous utiliserons cette implémentation Python pour soutenir une ingestion réussie.

    Introduction

    Delta Sharing est un protocole ouvert développé par Databricks pour le partage de données sécurisé et en temps réel entre organisations. Il permet à un fournisseur de données de partager des ensembles de données avec des destinataires sans les obliger à utiliser Databricks ou une plateforme spécifique.

    Ce guide vous montre comment consommer des données partagées via Delta Sharing et les intégrer dans votre propre base de données. Nous fournissons un script de référence Python prêt à l'emploi qui lit un tableau Delta partagé et l'écrit dans une base de données PostgreSQL.

    Pour qui est ce guide ?

    Ce guide s'adresse aux clients qui reçoivent des données via Delta Sharing et souhaitent les charger dans un système qui ne supporte pas nativement le format Delta — comme PostgreSQL, MySQL, ou toute autre base de données SQL.

    Aperçu de l'architecture

    Le flux d'ingestion est direct :

    ┌──────────────────────┐ ┌────────────────────┐ ┌──────────────────────┐ │ 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) │ └──────────────────────┘ └────────────────────┘ └──────────────────────┘

    Aucun compte Databricks requis côté destinataire.

    Aucun pilote spécial — le script utilise la bibliothèque Python open-source delta-sharing.

    Tes données restent sous ton contrôle — une fois ingérées, les données vivent dans ta base de données.

    Prérequis

    Avant de commencer, assurez-vous d'avoir ce qui suit :

    Condition requise

    Détails

    Python

    Version 3.9 ou supérieure. Vérifiez avec python --version.

    Git

    Pour cloner le référentiel. Vérifiez avec git --version.

    Docker (facultatif)

    Nécessaire uniquement si vous souhaitez exécuter une PostgreSQL locale pour les tests.

    PostgreSQL

    Une instance en cours d'exécution à laquelle vous avez accès en écriture — soit la vôtre, soit la configuration Docker incluse dans le référentiel.

    Profil Delta Sharing

    Un fichier .share fourni par votre fournisseur de données (Uberall). Consultez l'étape 1.

     

     

    Étape 1 — Obtenir votre profil Delta Sharing

    Votre fournisseur de données (Uberall) vous fournira un fichier de profil Delta Sharing. Il s'agit d'un petit fichier JSON avec une extension .share qui contient les détails de connexion et le jeton d'authentification.

    Le fichier ressemble à ceci :

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

    Enregistrez ce fichier dans un emplacement sécurisé sur votre machine. Vous référencerez son chemin lors de la configuration du script.

    Important :

    Ce fichier contient un jeton bearer qui accorde l'accès aux données partagées. Traitez-le comme un mot de passe.

    Ne le validez pas dans le contrôle de version.

    Restreignez les permissions du fichier pour que seul votre utilisateur puisse le lire :

     

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

    Si vous n'avez pas reçu votre fichier de profil, contactez l'équipe Uberall Data Engineering.

    Étape 2 — Cloner le dépôt

    Ouvrez un terminal et clonez le dépôt :

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

    Accédez au répertoire du projet :

    cd delta-sharing-code-examples

    Le dépôt contient les fichiers suivants :

    Fichier

    Description

    delta_sharing_to_postgres.py

    Le script d'ingestion principal.

    requirements.txt

    Les dépendances Python.

    compose.yaml

    Fichier Docker Compose pour démarrer un PostgreSQL local à des fins de test.

    README.md

    Guide de démarrage rapide et documentation de référence.

    Étape 3 — Configurer un environnement Python

    Nous vous recommandons d'utiliser un environnement virtuel pour éviter les conflits avec d'autres projets Python.

    Créer et activer un environnement virtuel :

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

    Installer les dépendances requises :

    pip install -r requirements.txt

    Cela installe les packages suivants :

    Package

    Objectif

    delta-sharing

    Bibliothèque officielle Databricks pour lire les tables Delta Sharing.

    pandas

    Manipulation de données — les données partagées sont chargées en tant que DataFrame Pandas.

    sqlalchemy

    Couche d'abstraction de base de données pour écrire des données dans PostgreSQL (ou d'autres bases de données).

    psycopg2-binary

    Pilote PostgreSQL utilisé par SQLAlchemy.

    Étape 4 — Configurer une base de données PostgreSQL

    Vous avez deux options :

    Option A : Utiliser la configuration Docker incluse (recommandée pour les tests)

    Si Docker est installé, le dépôt inclut un compose.yaml qui lance une instance PostgreSQL 16 avec une seule commande.

    Démarrer la base de données :

    docker compose up -d

    Vérifier qu'elle est en cours d'exécution :

    docker compose logs db

    Recherchez database system is ready to accept connections dans la sortie.

    Test de connectivité rapide :

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

    L'instance Docker PostgreSQL utilise les valeurs par défaut suivantes :

    Paramètre

    Valeur

    Hôte

    localhost

    Port

    5432

    Base de données

    testdb

    Utilisateur

    postgres

    Mot de passe

    example

    Celles-ci correspondent à la configuration par défaut dans le script, donc aucune modification supplémentaire n'est nécessaire.

    Une fois vos tests terminés, arrêtez la base de données avec :

    # Arrêter les conteneurs (les données sont conservées)
    docker compose down
    
    # Arrêter et supprimer toutes les données
    docker compose down -v

    Option B : Utiliser votre propre instance PostgreSQL

    Si vous avez déjà une base de données PostgreSQL, notez simplement vos paramètres de connexion (hôte, port, base de données, utilisateur, mot de passe). Vous les entrerez à l'étape 5.

    Étape 5 — Configurer le script

    Ouvrez delta_sharing_to_postgres.py dans n'importe quel éditeur de texte. En haut du fichier, vous trouverez la section 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"

    Modifiez les valeurs suivantes :

    Variable

     

    Valeur à définir

     

    Exemple

     

    DELTA_SHARING_PROFILE_PATH

    Chemin vers le fichier .share reçu à l'étape 1.

    "./config.share"

    DELTA_SHARING_TABLE

    Le nom de table complet. Format : <share>.<schema>.<table>. Si vous n'êtes pas sûr du nom, consultez la section « Comment découvrir les tables disponibles » ci-dessous.

    "my_share.analytics.sales_data"

    PG_HOST

    Votre hôte PostgreSQL. Utilisez "localhost" pour Docker.

    "localhost"

    PG_PORT

    Votre port PostgreSQL.

    5432

    PG_DATABASE

    Votre nom de base de données cible.

    "testdb"

    PG_USER

    Votre nom d'utilisateur de base de données.

    "postgres"

    PG_PASSWORD

    Votre mot de passe de base de données.

    "example"

    PG_TARGET_SCHEMA

    Le schéma dans lequel la table sera créée.

    "public"

    PG_TARGET_TABLE

    Le nom de la table à créer/écrire.

    "delta_sharing_data"

    WRITE_MODE

    Comment gérer les données existantes. Voir « Modes d'écriture » ci-dessous.

    "replace"

     
     
     

    Comment découvrir les tables disponibles

    Si vous ne connaissez pas le nom exact de la table, vous pouvez exécuter un script de découverte rapide. Créez un fichier Python temporaire ou utilisez un 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}")

    Ceci affiche toutes les tables qui vous sont accessibles. Utilisez la chaîne complète <share>.<schema>.<table> comme valeur pour DELTA_SHARING_TABLE.

    Sinon, exécutez simplement le script principal — il enregistre toutes les tables disponibles au démarrage avant de tenter de lire les données.

    Modes d'écriture

    Le paramètre WRITE_MODE contrôle la manière dont le script traite les données existantes dans la table cible :

    Mode

    Comportement

    Cas d'usage typique

    replace

    Supprime et recrée la table cible à chaque exécution. Toutes les données précédentes sont supprimées.

    Actualisation complète — vous souhaitez toujours l'instantané complet le plus récent.

    append

    Insère les nouvelles lignes dans la table existante. Aucune déduplication n'est effectuée.

    Accumulation de données au fil du temps (par exemple, exportations quotidiennes).

    fail

    Le script s'arrête si la table cible existe déjà.

    Filet de sécurité — pour éviter les écrasements accidentels.

    Étape 6 — Exécuter le script

    Assurez-vous que votre environnement virtuel est activé (voir Étape 3), puis exécutez :

    python delta_sharing_to_postgres.py

    À quoi s'attendre

    Une exécution réussie produit une sortie similaire à celle-ci :

    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] ============================================================

    Le script :

    Se connecte à Delta Sharing et répertorie tous les tableaux disponibles.

    Lit le tableau spécifié en mémoire.

    Affiche un aperçu des 5 premières lignes.

    Écrit les données dans votre instance PostgreSQL.

    Valide l'ingestion en comptant les lignes du tableau cible.

    Étape 7 — Vérifier les données

    Après une exécution réussie, vous pouvez vérifier les données dans PostgreSQL.

    Utiliser la ligne de commande (configuration Docker) :

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

    Utiliser un client SQL (DataGrip, DBeaver, pgAdmin, etc.) :

    Connectez-vous à votre instance PostgreSQL avec les mêmes identifiants de l'étape 5, puis exécutez :

    -- Nombre de lignes
    SELECT COUNT(*) FROM public.delta_sharing_data;
    
    -- Aperçu des lignes
    SELECT * FROM public.delta_sharing_data LIMIT 10;
    
    -- Vérifier les types de colonnes
    SELECT column_name, data_type
    FROM information_schema.columns
    WHERE table_schema = 'public' AND table_name = 'delta_sharing_data';

    Cas d'usage

    Actualisation complète des données

    Définissez WRITE_MODE = "replace" et lancez le script selon un calendrier (par exemple quotidiennement via une tâche cron). À chaque exécution, la table entière est remplacée par les dernières données du partage.

    # Exemple d'entrée cron : exécution tous les jours à 2:00 AM
    0 2 * * * /path/to/venv/bin/python /path/to/delta_sharing_to_postgres.py

     

    Ajout / accumulation des données au fil du temps

    Définissez WRITE_MODE = "append" pour continuer à ajouter des lignes à chaque exécution. C'est utile lorsque la table partagée contient de nouveaux enregistrements (par exemple, des événements ou des journaux quotidiens) et que vous souhaitez constituer un historique dans votre base de données.

    Remarque : Ce mode n'effectue pas de déduplications. Si vous lancez le script deux fois avec les mêmes données, vous aurez des lignes en double. Envisagez d'ajouter une logique de déduplication dans votre base de données ou dans le script si cela constitue un problème.

    Charger dans une base de données différente

    Le script utilise SQLAlchemy, qui prend en charge de nombreuses bases de données. Pour cibler une base de données différente, modifiez la chaîne de connexion dans build_pg_connection_string() et installez le pilote approprié :

    Base de données cible

    Format de la chaîne de connexion

    Pilote à installer

    PostgreSQL

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

    psycopg2-binary (inclus)

    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 (fichier local)

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

    Intégré (aucune installation requise)

    Ingérer dans un entrepôt de données ou une base de données cloud

    La même approche fonctionne avec les bases de données hébergées dans le cloud (Amazon RDS, Google Cloud SQL, Azure Database for PostgreSQL, etc.). Mettez simplement à jour les paramètres de connexion pour pointer vers votre instance cloud.

    Guide de personnalisation

    Le script est volontairement simple et conçu pour être adapté à vos besoins. Voici les modifications les plus courantes.

    Filtrer ou transformer les données avant le chargement

    Après la lecture des données, vous pouvez manipuler le DataFrame Pandas avant de l'écrire dans la base de données. Par exemple, pour ne conserver que des colonnes spécifiques :

    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)

     

    Ingestion incrémentielle (charger uniquement les nouvelles données)

    Si la table partagée dispose d'une colonne timestamp ou date, vous pouvez filtrer pour charger uniquement les nouveaux enregistrements :

    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")

    Charger plusieurs tables

    Dupliquez le bloc de configuration ou effectuez une boucle sur une liste de tables :

    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)

    Utiliser des variables d'environnement au lieu de valeurs codées en dur

    Pour une utilisation en production, évitez de coder en dur les secrets dans le script. Utilisez plutôt des variables d'environnement :

    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"]

    Ensuite, définissez-les avant l'exécution :

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

    Bonnes pratiques de sécurité

    Sujet

    Recommandation

    Fichier de profil (.share)

    Stockez de manière sécurisée. Ne validez jamais dans le contrôle de version. Limitez les permissions du fichier (chmod 600).

    Expiration du jeton Bearer

    Les jetons peuvent avoir une date d'expiration. Si vous obtenez 401 Unauthorized erreurs, demandez un nouveau profil à votre fournisseur de données.

    Mots de passe de la base de données

    Ne les codez pas en dur dans le script pour la production. Utilisez des variables d'environnement ou un gestionnaire de secrets.

    Accès au réseau

    Assurez-vous que votre machine peut atteindre le point de terminaison Databricks (HTTPS) et votre instance PostgreSQL.

    Données au repos

    Une fois ingérées, les données sont sous votre contrôle. Appliquez les politiques de gouvernance des données de votre organisation à la base de données cible.

    Dépannage

    Erreur

    Cause

    Solution

    FileNotFoundError sur le profil

    Le chemin du fichier .share est incorrect ou le fichier n'existe pas.

    Vérifiez le chemin DELTA_SHARING_PROFILE_PATH. Utilisez un chemin absolu en cas de doute.

    HTTPError 401 Unauthorized

    Le jeton porteur est invalide ou expiré.

    Contactez votre fournisseur de données (Uberall) pour obtenir un nouveau fichier de profil.

    HTTPError 403 Forbidden

    Vous n'avez pas la permission d'accéder à ce partage ou à cette table.

    Vérifiez le nom de la table. Contactez votre fournisseur de données pour vérifier les autorisations du destinataire.

    HTTPError 404 Not Found / SHARE_DOES_NOT_EXIST

    Le nom du partage dans DELTA_SHARING_TABLE est incorrect.

    Exécutez l'étape de découverte de table (voir étape 5) pour lister les partages disponibles et utilisez le nom exact affiché.

    DS_MATERIALIZATION_QUERY_FAILED

    Le fournisseur de données n'a pas configuré la matérialisation pour le partage. C'est un problème côté serveur.

    Contactez votre fournisseur de données (Uberall) et partagez ce message d'erreur. Ce problème ne peut pas être résolu du côté du destinataire.

    psycopg2.OperationalError: could not connect

    PostgreSQL est inaccessible.

    Vérifiez l'hôte, le port et les identifiants. Si vous utilisez Docker, assurez-vous que les conteneurs sont en cours d'exécution (docker compose ps). Vérifiez que le port 5432 n'est pas bloqué par un pare-feu.

    psycopg2.OperationalError: password authentication failed

    Nom d'utilisateur ou mot de passe incorrect.

    Vérifiez PG_USER et PG_PASSWORD. Pour la configuration Docker, les valeurs par défaut sont postgres / example.

    DataFrame vide (0 lignes)

    La table partagée existe mais ne contient aucune donnée.

    Vérifiez auprès de votre fournisseur de données si la table est censée contenir des données.

    ModuleNotFoundError: No module named 'delta_sharing'

    Les dépendances ne sont pas installées ou l'environnement virtuel n'est pas activé.

    Exécutez pip install -r requirements.txt et assurez-vous que votre environnement virtuel est actif.

    Assistance

    Si vous rencontrez des problèmes liés à :

    Aux données partagées, aux jetons d'accès ou aux autorisations — contactez l'équipe Uberall Data Engineering.

    Au script d'ingestion — consultez ce guide et le fichier README.md du dépôt. Le script est fourni comme implémentation de référence ; vous êtes responsable de son adaptation et de sa maintenance pour votre environnement.

    données partage

    Was this article helpful?

    Yes
    No
    Give feedback about this article

    Related Articles

    • Qu'est-ce qu'Advanced Analytics ?
    • Rapport de Performance des Publications Facebook
    • Rapport d'expérience client
    • Reputation Insights (anciennement Avis clients/Expérience)
    • Portée Facebook Publiée en juin 2025
     

    Copyright 2026 – uberall.

    Expand