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
    • La Plataforma
    • Analítica

    Intercambio de datos mediante Python

    Documentación técnica sobre cómo los clientes pueden ingerir tablas de datasharing mediante 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.

    Spanish
    FR French
    IT Italian
    JP Japanese
    DE German
    US English (US)
    ES Spanish
    • Uberall Basics
      Guías
    • La Plataforma
      Ubicaciones Analíticas Cerca de mí 360 IA Analítica Inicio Centro de ubicación Localizador + Páginas Mensajes Aplicación Móvil Estado de la Plataforma y Preguntas Frecuentes Gestión de Reseñas Social El Panel Novedades
    • Directorios
      Google Facebook Apple Directorios General Listado de Directorios
    + More

    Contexto

    Para los clientes que tienen herramientas de visualización de datos que no funcionan con el método de compartición de datos de databricks, utilizaremos esta implementación de Python para garantizar una ingesta exitosa.

    Introducción

    Delta Sharing es un protocolo abierto desarrollado por Databricks para compartir datos de forma segura y en tiempo real entre organizaciones. Permite que un proveedor de datos comparta conjuntos de datos con destinatarios sin requerir que utilicen Databricks ni ninguna plataforma específica.

    Esta guía te muestra cómo consumir datos compartidos a través de Delta Sharing e ingerirlos en tu propia base de datos. Proporcionamos un script de referencia Python listo para usar que lee una tabla Delta compartida y la escribe en una base de datos PostgreSQL.

    ¿Para quién es esto?

    Esta guía es para clientes que reciben datos a través de Delta Sharing y desean cargarlos en un sistema que no admita de forma nativa el formato Delta —como PostgreSQL, MySQL, o cualquier base de datos SQL.

    Descripción general de la arquitectura

    El flujo de ingesta es simple:

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

    No se requiere cuenta de Databricks en el lado del destinatario.

    Sin controladores especiales — el script utiliza la librería Python de código abierto delta-sharing.

    Tus datos permanecen bajo tu control — una vez ingeridos, los datos residen en tu base de datos.

    Requisitos previos

    Antes de comenzar, asegúrate de que tienes lo siguiente:

    Requisito

    Detalles

    Python

    Versión 3.9 o superior. Comprueba con python --version.

    Git

    Para clonar el repositorio. Comprueba con git --version.

    Docker (opcional)

    Solo es necesario si quieres ejecutar un PostgreSQL local para pruebas.

    PostgreSQL

    Una instancia en ejecución a la que tengas acceso de escritura — ya sea la tuya propia o la configuración de Docker incluida en el repositorio.

    Perfil Delta Sharing

    Un archivo .share proporcionado por tu proveedor de datos (Uberall). Consulta el Paso 1.

     

     

    Paso 1: Obtén tu Perfil de Delta Sharing

    Tu proveedor de datos (Uberall) te proporcionará un archivo de perfil de Delta Sharing. Es un pequeño archivo JSON con una extensión .share que contiene los detalles de la conexión y el token de autenticación.

    El archivo tiene este aspecto:

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

    Guarda este archivo en una ubicación segura en tu máquina. Harás referencia a su ruta cuando configures el script.

    Importante:

    Este archivo contiene un token de portador que otorga acceso a los datos compartidos. Trátalo como una contraseña.

    No lo hagas commit en el control de versiones.

    Restringe los permisos del archivo para que solo tu usuario pueda leerlo:

     

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

    Si no has recibido tu archivo de perfil, contacta al equipo de Data Engineering de Uberall.

    Paso 2 — Clonar el repositorio

    Abre una terminal y clona el repositorio:

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

    Accede al directorio del proyecto:

    cd delta-sharing-code-examples

    El repositorio contiene los siguientes archivos:

    Archivo

    Descripción

    delta_sharing_to_postgres.py

    El script principal de ingestión.

    requirements.txt

    Dependencias de Python.

    compose.yaml

    Archivo Docker Compose para ejecutar una instancia de PostgreSQL local para pruebas.

    README.md

    Guía de inicio rápido y documentación de referencia.

    Paso 3 — Configurar un entorno de Python

    Te recomendamos usar un entorno virtual para evitar conflictos con otros proyectos de Python.

    Crea y activa un entorno virtual:

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

    Instala las dependencias requeridas:

    pip install -r requirements.txt

    Esto instala los siguientes paquetes:

    Paquete

    Propósito

    delta-sharing

    Biblioteca oficial de Databricks para leer tablas de Delta Sharing.

    pandas

    Manipulación de datos: los datos compartidos se cargan como un DataFrame de Pandas.

    sqlalchemy

    Capa de abstracción de base de datos para escribir datos en PostgreSQL (u otras bases de datos).

    psycopg2-binary

    Controlador de PostgreSQL utilizado por SQLAlchemy.

    Paso 4 — Configurar una base de datos PostgreSQL

    Tienes dos opciones:

    Opción A: Usar la configuración Docker incluida (recomendado para pruebas)

    Si tienes Docker instalado, el repositorio incluye un compose.yaml que inicia una instancia de PostgreSQL 16 con un único comando.

    Inicia la base de datos:

    docker compose up -d

    Verifica que esté funcionando:

    docker compose logs db

    Busca database system is ready to accept connections en la salida.

    Prueba rápida de conectividad:

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

    La instancia de Docker PostgreSQL utiliza los siguientes valores predeterminados:

    Configuración

    Valor

    Host

    localhost

    Puerto

    5432

    Base de datos

    testdb

    Usuario

    postgres

    Contraseña

    example

    Estos coinciden con la configuración predeterminada en el script, así que no hay cambios adicionales necesarios.

    Cuando termines de hacer pruebas, detén la base de datos con:

    # Detener los contenedores (los datos se conservan)
    docker compose down
    
    # Detener y eliminar todos los datos
    docker compose down -v

    Opción B: Usar tu propia instancia de PostgreSQL

    Si ya tienes una base de datos PostgreSQL, simplemente anota tus detalles de conexión (host, puerto, base de datos, usuario, contraseña). Los ingresarás en el Paso 5.

    Paso 5 — Configurar el Script

    Abre delta_sharing_to_postgres.py en cualquier editor de texto. En la parte superior del archivo, encontrarás la sección 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"

    Edita los siguientes valores:

    Variable

     

    Qué configurar

     

    Ejemplo

     

    DELTA_SHARING_PROFILE_PATH

    Ruta al archivo .share que recibiste en el Paso 1.

    "./config.share"

    DELTA_SHARING_TABLE

    El nombre de tabla totalmente calificado. Formato: <share>.<schema>.<table>. Si no estás seguro del nombre, consulta la sección «Cómo descubrir las tablas disponibles» a continuación.

    "my_share.analytics.sales_data"

    PG_HOST

    Tu host de PostgreSQL. Usa "localhost" para Docker.

    "localhost"

    PG_PORT

    Tu puerto de PostgreSQL.

    5432

    PG_DATABASE

    El nombre de tu base de datos de destino.

    "testdb"

    PG_USER

    Tu nombre de usuario de la base de datos.

    "postgres"

    PG_PASSWORD

    Tu contraseña de la base de datos.

    "example"

    PG_TARGET_SCHEMA

    El esquema donde se creará la tabla.

    "public"

    PG_TARGET_TABLE

    El nombre de la tabla que crear/escribir.

    "delta_sharing_data"

    WRITE_MODE

    Cómo manejar los datos existentes. Ver «Modos de escritura» a continuación.

    "replace"

     
     
     

    Cómo Descubrir las Tablas Disponibles

    Si no conoces el nombre exacto de la tabla, puedes ejecutar un script de descubrimiento rápido. Crea un archivo Python temporal o utiliza un shell de 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}")

    Esto muestra todas las tablas disponibles para ti. Usa la cadena completa <share>.<schema>.<table> como valor para DELTA_SHARING_TABLE.

    Alternativamente, simplemente ejecuta el script principal — registra todas las tablas disponibles al inicio antes de intentar leer datos.

    Modos de Escritura

    La configuración WRITE_MODE controla cómo el script maneja los datos existentes en la tabla de destino:

    Modo

    Comportamiento

    Caso de uso típico

    replace

    Elimina y recrea la tabla de destino en cada ejecución. Todos los datos anteriores se eliminan.

    Actualización completa — siempre quieres la última instantánea completa.

    append

    Inserta nuevas filas en la tabla existente. No se realiza deduplicación.

    Acumulación de datos a lo largo del tiempo (p. ej., exportaciones diarias).

    fail

    El script se detiene si la tabla de destino ya existe.

    Red de seguridad — para evitar sobrescrituras accidentales.

    Paso 6 — Ejecutar el script

    Asegúrate de que tu entorno virtual esté activado (consulta el Paso 3) y luego ejecuta:

    python delta_sharing_to_postgres.py

    Qué esperar

    Una ejecución exitosa genera un resultado similar al siguiente:

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

    El script:

    Se conecta a Delta Sharing y lista todas las tablas disponibles.

    Lee la tabla especificada en memoria.

    Muestra una vista previa de las primeras 5 filas.

    Escribe los datos en tu instancia de PostgreSQL.

    Valida la ingesta contando las filas en la tabla de destino.

    Paso 7 — Verificar los datos

    Después de una ejecución exitosa, puedes verificar los datos en PostgreSQL.

    Usando la línea de comandos (configuración Docker):

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

    Usando un cliente SQL (DataGrip, DBeaver, pgAdmin, etc.):

    Conéctate a tu instancia PostgreSQL con las mismas credenciales del Paso 5 y luego ejecuta:

    -- Conteo de filas
    SELECT COUNT(*) FROM public.delta_sharing_data;
    
    -- Vista previa de filas
    SELECT * FROM public.delta_sharing_data LIMIT 10;
    
    -- Verificar tipos de columnas
    SELECT column_name, data_type
    FROM information_schema.columns
    WHERE table_schema = 'public' AND table_name = 'delta_sharing_data';

    Casos de uso

    Actualización completa de instantánea

    Establece WRITE_MODE = "replace" y ejecuta el script en una programación (p.ej., diariamente mediante un cron job). Cada ejecución reemplaza toda la tabla con los últimos datos del recurso compartido.

    # Ejemplo de entrada en cron: ejecutar cada día a las 2:00 AM
    0 2 * * * /path/to/venv/bin/python /path/to/delta_sharing_to_postgres.py

     

    Añadir / acumular datos a lo largo del tiempo

    Establece WRITE_MODE = "append" para seguir añadiendo filas en cada ejecución. Esto es útil cuando la tabla compartida contiene nuevos registros (p.ej., eventos diarios o registros de eventos) y deseas crear un historial en tu base de datos.

    Nota: Este modo no realiza deduplicación. Si ejecutas el script dos veces con los mismos datos, tendrás filas duplicadas. Considera añadir lógica de deduplicación en tu base de datos o en el script si esto es una preocupación.

    Cargar en una base de datos diferente

    El script utiliza SQLAlchemy, que admite muchas bases de datos. Para dirigirse a una base de datos diferente, cambia la cadena de conexión en build_pg_connection_string() e instala el controlador apropiado:

    Base de datos de destino

    Formato de cadena de conexión

    Controlador a instalar

    PostgreSQL

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

    psycopg2-binary (incluido)

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

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

    Incorporado (sin instalación necesaria)

    Ingerir en un almacén de datos o base de datos en la nube

    El mismo enfoque funciona con bases de datos alojadas en la nube (Amazon RDS, Google Cloud SQL, Azure Database for PostgreSQL, etc.). Simplemente actualiza los parámetros de conexión para que apunten a tu instancia en la nube.

    Guía de personalización

    El script es intencionalmente simple y está pensado para adaptarse a tus necesidades. A continuación se muestran modificaciones comunes.

    Filtrar o transformar datos antes de cargar

    Después de leer los datos, puedes manipular el DataFrame de Pandas antes de escribirlo en la base de datos. Por ejemplo, para mantener solo columnas específicas:

    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)

     

    Ingesta incremental (cargar solo datos nuevos)

    Si la tabla compartida tiene una columna de marca de tiempo o fecha, puedes filtrar para cargar solo registros nuevos:

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

    Cargar múltiples tablas

    Duplica el bloque de configuración o itera sobre una lista de tablas:

    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)

    Usar variables de entorno en lugar de valores codificados

    Para uso en producción, evita codificar secretos en el script. En su lugar, usa variables de entorno:

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

    Luego, establécelas antes de ejecutar:

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

    Mejores prácticas de seguridad

    Tema

    Recomendación

    Archivo de perfil (.share)

    Almacénalo de forma segura. Nunca lo confirmes en el control de versiones. Restringe los permisos del archivo (chmod 600).

    Expiración del token de portador

    Los tokens pueden tener una fecha de vencimiento. Si obtienes errores 401 Unauthorized, solicita un nuevo perfil a tu proveedor de datos.

    Contraseñas de base de datos

    No las codifiques en el script para producción. Usa variables de entorno o un gestor de secretos.

    Acceso a la red

    Asegúrate de que tu máquina pueda alcanzar tanto el extremo de Databricks (HTTPS) como tu instancia PostgreSQL.

    Datos en reposo

    Una vez ingeridos, los datos están bajo tu control. Aplica las políticas de gobernanza de datos de tu organización a la base de datos de destino.

    Solución de problemas

    Error

    Causa

    Solución

    FileNotFoundError en el perfil

    La ruta del archivo .share es incorrecta o el archivo no existe.

    Verifica DELTA_SHARING_PROFILE_PATH. Usa una ruta absoluta si tienes dudas.

    HTTPError 401 Unauthorized

    El token de portador es inválido o ha expirado.

    Contacta con tu proveedor de datos (Uberall) para obtener un nuevo archivo de perfil.

    HTTPError 403 Forbidden

    No tienes permiso para acceder a este recurso compartido o tabla.

    Verifica el nombre de la tabla. Contacta con tu proveedor de datos para comprobar los permisos del destinatario.

    HTTPError 404 Not Found / SHARE_DOES_NOT_EXIST

    El nombre del recurso compartido en DELTA_SHARING_TABLE es incorrecto.

    Ejecuta el paso de descubrimiento de tablas (consulta el Paso 5) para listar los recursos compartidos disponibles y utiliza el nombre exacto que se imprime.

    DS_MATERIALIZATION_QUERY_FAILED

    El proveedor de datos no ha configurado la materialización para el recurso compartido. Este es un problema del lado del servidor.

    Contacta con tu proveedor de datos (Uberall) y comparte este mensaje de error. Esto no se puede resolver en el lado del destinatario.

    psycopg2.OperationalError: could not connect

    PostgreSQL no es accesible.

    Verifica el host, el puerto y las credenciales. Si usas Docker, asegúrate de que los contenedores estén en ejecución (docker compose ps). Verifica que el puerto 5432 no esté bloqueado por un cortafuegos.

    psycopg2.OperationalError: password authentication failed

    Nombre de usuario o contraseña incorrectos.

    Verifica PG_USER y PG_PASSWORD. Para la configuración de Docker, los valores predeterminados son postgres / example.

    DataFrame vacío (0 filas)

    La tabla compartida existe pero no contiene datos.

    Comprueba con tu proveedor de datos si la tabla se supone que debe tener datos.

    ModuleNotFoundError: No module named 'delta_sharing'

    Las dependencias no están instaladas o el entorno virtual no está activado.

    Ejecuta pip install -r requirements.txt y asegúrate de que tu entorno virtual esté activo.

    Soporte

    Si encuentras problemas relacionados con:

    Los datos compartidos, tokens de acceso o permisos — contacta con el equipo de Uberall Data Engineering.

    El script de ingesta — consulta esta guía y el archivo README.md en el repositorio. El script se proporciona como una implementación de referencia; eres responsable de adaptarlo y mantenerlo en tu entorno.

    transferencia interfaz

    Was this article helpful?

    Yes
    No
    Give feedback about this article

    Related Articles

    • Informe de Rendimiento de Publicaciones en Facebook
    • Informe de Experiencia del Cliente
    • Alcance de Facebook Publicado en junio de 2025
    • Rendimiento de Publicaciones de Facebook Lanzado en Junio de 2025
    • Información de Yelp rediseñada - Lanzada en julio de 2025
     

    Copyright 2026 – uberall.

    Expand