Ejecución de consultas federadas en Teradata

En esta página se describe cómo configurar La federación de Lakehouse para ejecutar consultas federadas en datos de Teradata no administrados por Azure Databricks. Para más información sobre La federación de Lakehouse, consulte ¿Qué es La federación de Lakehouse?

Para conectarse a la base de datos de Teradata mediante la federación de Lakehouse, debe crear lo siguiente en el metastore de catálogo de Unity de Azure Databricks (las áreas de trabajo creadas después del 9 de noviembre de 2023 ya tienen aprovisionado automáticamente un metastore de Catálogo de Unity):

  • Una conexión a la base de datos de Teradata.
  • Un catálogo extranjero que refleja en el catálogo de Unity la base de datos de Teradata para que pueda usar la sintaxis de consulta y las herramientas de gobernanza de datos del catálogo de Unity para administrar el acceso de usuario a la base de datos en Azure Databricks.

Antes de empezar

Antes de empezar, asegúrese de cumplir los requisitos de esta sección.

Requisitos de Databricks

Requisitos del área de trabajo:

  • Área de trabajo habilitada para Unity Catalog. Las áreas de trabajo creadas después del 9 de noviembre de 2023 están habilitadas automáticamente para el Catálogo de Unity, incluido el aprovisionamiento automático de metastores. No es necesario crear manualmente una tienda de metadatos a menos que su área de trabajo sea anterior a la habilitación automática y no se haya habilitado para Unity Catalog. Consulte Habilitación automática de Unity Catalog.

Requisitos de proceso:

  • Conectividad de red desde su recurso de computación a los sistemas de bases de datos de destino. Consulte Recomendaciones de redes para la federación de Lakehouse.
  • Azure Databricks debe usar Databricks Runtime 16.1 o superior y modo de acceso Standard o Dedicated.
  • Los almacenes de SQL deben ser pro o sin servidor y deben usar 2024.50 o superior.

Permisos necesarios:

  • Para crear una conexión, debe ser administrador del metastore o usuario con el privilegio CREATE CONNECTION en el metastore de Unity Catalog adjunto al área de trabajo. En las áreas de trabajo habilitadas para el catálogo de Unity automáticamente, los administradores del área de trabajo tienen el CREATE CONNECTION privilegio de forma predeterminada.
  • Para crear un catálogo externo, debe tener el permiso CREATE CATALOG en el metastore, y ser el propietario de la conexión o tener el privilegio CREATE FOREIGN CATALOG en la conexión. En las áreas de trabajo habilitadas para el catálogo de Unity automáticamente, los administradores del área de trabajo tienen el CREATE CATALOG privilegio de forma predeterminada.

Los requisitos de permisos adicionales se especifican en cada sección basada en tareas que se indica a continuación.

Autenticación de Teradata

Las conexiones de Teradata en Azure Databricks Lakehouse Federation solo admiten el mecanismo de autenticación TD2 (la autenticación predeterminada de Teradata). TD2 autentica a los usuarios con un nombre de usuario y una contraseña administrados por la base de datos de Teradata.

No se admiten otros mecanismos de autenticación de Teradata, como LDAP, Kerberos y TDNEGO.

Teradata TLS

  • Puede elegir entre los modos require, prefer, verify-ca, verify-full y disable para SSL. El prefer modo se basa en el servidor para habilitar el cifrado (se puede configurar el número de puerto). Si usa TLS, cualquier opción será suficiente (el puerto será 443) (verify-ca y verify-full protege la seguridad de la conexión, pero requiere más configuración en el lado servidor). Databricks recomienda aceptar SSL. Si el servidor no acepta SSL, utilice el modo disable. Usar require para intentar SSL cuando no se admite introduce una sobrecarga de rendimiento. Para obtener más información, consulte Cómo proteger conexiones mediante TLS en la documentación de Teradata.

Crear una conexión de Azure Databricks

Una conexión especifica una ruta de acceso y las credenciales para acceder a un sistema de base de datos externo. Para crear una conexión, puede usar el Explorador de catálogos o el comando /CREATE CONNECTION SQL en un cuaderno de Azure Databricks o en el editor de consultas SQL de Databricks.

Note

También puede usar la API de REST de Databricks o la CLI de Databricks para crear una conexión. Consulte POST/api/2.1/unity-catalog/connections y Comandos de Unity Catalog.

Permisos necesarios: administrador del metastore o usuario con el privilegio CREATE CONNECTION.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en Data icon.Catalog.
  2. En la parte superior del panel Catálogo , haga clic en el icono Agregar o másAgregar y seleccione Crear una conexión en el menú.
  3. En la página Datos básicos de la conexión del asistente para Configurar conexión, escriba un Nombre de conexión fácil de usar.
  4. Seleccione un Tipo de conexión de Teradata.
  5. (Opcional) Agregue un comentario.
  6. Haga clic en Siguiente.
  7. En la página Autenticación , escriba las siguientes propiedades de conexión para la instancia de Teradata:
    • Host: por ejemplo, teradata-demo.teradata.com
    • Puerto: por ejemplo, 1025
    • Usuario: por ejemplo, teradata_user
    • Contraseña: por ejemplo, password123
    • Modo Ssl: require, prefer, verify-ca, verify-full, , disable
  8. Haga clic en Crear conexión.
  9. En la página Datos básicos del catálogo, escriba un nombre para el catálogo externo. Un catálogo externo refleja una base de datos en un sistema de datos externo para poder consultar y administrar el acceso a los datos de esa base de datos mediante Azure Databricks y catálogo de Unity.
  10. (Opcional) Haga clic en Probar conexión para confirmar que funcione.
  11. Haga clic en Crear catálogo.
  12. En la página Acceso, seleccione las áreas de trabajo en las que los usuarios pueden acceder al catálogo que creó. Puede seleccionar Todas las áreas de trabajo tienen accesoo haga clic en Asignar a áreas de trabajo, seleccione las áreas de trabajo y, a continuación, haga clic en Asignar.
  13. Cambie el Propietario que podrá administrar el acceso a todos los objetos del catálogo. Comience a escribir una entidad de seguridad en el cuadro de texto y, a continuación, haga clic en la entidad de seguridad en los resultados devueltos.
  14. Concede Privilegios en el catálogo. Haga clic en Conceder:
    1. Especifica las Entidades de seguridad que tendrán acceso a los objetos del catálogo. Comience a escribir una entidad de seguridad en el cuadro de texto y, a continuación, haga clic en la entidad de seguridad en los resultados devueltos.
    2. Selecciona los Preajustes de privilegios que vas a conceder a cada entidad de seguridad. A todos los usuarios de la cuenta se les concede BROWSE por defecto.
      • Selecciona Lector de Datos en el menú desplegable para conceder los privilegios read en los objetos del catálogo.
      • Seleccione Editor de Datos en el menú desplegable para conceder read y modify privilegios sobre los objetos del catálogo.
      • Seleccione manualmente los privilegios que se van a conceder.
    3. Haga clic en Conceder.
  15. Haga clic en Siguiente.
  16. En la página Metadatos, especifica pares clave-valor de etiquetas. Para obtener más información, consulte Aplicar etiquetas a los objetos protegibles del Unity Catalog.
  17. (Opcional) Agregue un comentario.
  18. Haz clic en Guardar.

SQL

Ejecute el siguiente comando en un cuaderno o en el editor de consultas de Databricks SQL:

CREATE CONNECTION <connection-name> TYPE teradata
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>',
  ssl_mode '<ssl_mode>' -- optional
);

Databricks recomienda usar Azure Databricks secrets en lugar de cadenas de texto no cifrado para valores confidenciales como credenciales. Por ejemplo:

CREATE CONNECTION <connection-name> TYPE teradata
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>'),
  ssl_mode '<ssl_mode>' -- optional
)

Si debe usar cadenas de texto no cifrado en comandos SQL de cuaderno, evite truncar la cadena mediante el escape de caracteres especiales como $ con \. Por ejemplo: \$.

Para obtener más información sobre la configuración de secretos, consulte Administración de secretos.

Creación de un catálogo externo

Note

Si usa la interfaz de usuario para crear una conexión con el origen de datos, se incluye la creación de catálogos externos y puede omitir este paso.

Un catálogo externo refleja una base de datos en un sistema de datos externo para poder consultar y administrar el acceso a los datos de esa base de datos mediante Azure Databricks y catálogo de Unity. Para crear un catálogo externo, use una conexión al origen de datos que ya se ha definido.

Para crear un catálogo externo, puede usar el Explorador de catálogos o el comando CREATE FOREIGN CATALOG SQL en un cuaderno de Azure Databricks o en el editor de consultas SQL. También puede usar la API de REST de Databricks o la CLI de Databricks para crear un catálogo. Consulte POST /api/2.1/unity-catalog/catalogs y Comandos de Unity Catalog.

Permisos necesarios: permiso de CREATE CATALOG en el metastore y propiedad de la conexión o el privilegio de CREATE FOREIGN CATALOG en la conexión.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en Data icon.Catalog para abrir el Explorador de catálogos.

  2. En la parte superior del panel Catálogo, haga clic en el icono de Icono Agregar o másAñadir y seleccione Añadir un catálogo en el menú.

    Como alternativa, en la página Acceso rápido, haga clic en el botón Catálogos y, a continuación, haga clic en el botón Crear catálogo.

  3. Siga las instrucciones para crear catálogos externos en Crear catálogos.

SQL

Ejecute el siguiente comando SQL en un cuaderno o en un editor de consultas SQL. Los elementos entre corchetes son opcionales. Reemplace los valores de marcador de posición:

  • <catalog-name>: nombre del catálogo en Azure Databricks.
  • <connection-name>: El objeto de conexión que especifica el origen de datos, la ruta de acceso y las credenciales de acceso.
  • <database-name>: nombre de la base de datos que desea reflejar como catálogo en Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Cumplimiento de ANSI

El conector de Teradata usa TMODE=ANSI de forma predeterminada para todas las sesiones a partir de Databricks Runtime 17.1. Esta configuración alinea el comportamiento de las operaciones numéricas y de comparación de cadenas con el dialecto DE ANSI SQL que Azure Databricks usa de forma predeterminada. En el modo ANSI, las comparaciones de cadenas distinguen entre mayúsculas y minúsculas, mientras que en el modo heredado TERA de Teradata no distinguen entre mayúsculas y minúsculas (por ejemplo, 'ABC' = 'abc' se evalúa como verdadero). El comportamiento heredado podría producir resultados inesperados al consultar Teradata desde la capacidad de cómputo de Azure Databricks habilitada para ANSI.

Importante

Si cambia a Databricks Runtime 17.1 o posterior, Databricks SQL o proceso sin servidor, el modo de sesión predeterminado cambia de TERA a ANSI. Esto puede afectar a los resultados de la consulta, especialmente para las vistas de Teradata que dependen de la coincidencia de cadenas que no distinguen mayúsculas de minúsculas. Por ejemplo, una vista con un filtro como WHERE status = 'Active' podría devolver resultados diferentes si los datos subyacentes contienen 'ACTIVE' o 'active' porque el ANSI modo los trata como valores diferentes.

Delegaciones admitidas

En la tabla siguiente se enumeran las operaciones de pushdown admitidas para Teradata, junto con el proceso necesario para cada una.

Pushdown Proceso admitido
Aggregates Compatible Todo el cálculo
Cast Compatible Todo el cálculo
Contiene, Empieza con, Termina con, Parecido a Compatible Todo el cálculo
Filters Compatible Todo el cálculo
Limit Compatible Todo el cálculo
Projections Compatible Todo el cálculo
Se une Compatible Databricks Runtime 17.2 y versiones posteriores, y SQL Warehouses 2025.30 y versiones posteriores

Asignaciones de tipo de datos

Al leer de MySQL a Teradata, los tipos de datos se asignan de la siguiente manera:

Tipo de Teradata Tipo de Spark
Byte, Objeto Binario Grande BinaryType
Byteint, Smallint, Integer IntegerType
BigInt LongType
Flotante, Doble, Doble Precisión DoubleType
Number(n, m) DecimalType
Número(*, m), Número(*), Número Unsupported
Varchar(N) StringType
Tiempo, Sello de tiempo TimestampType

Recursos adicionales