Compartir vía


Ejecución de consultas federadas en Microsoft SQL Server

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

Para conectarse a su base de datos SQL Server mediante Lakehouse Federation, debe crear lo siguiente en su metastore Azure Databricks Unity Catalog:

  • Una conexión a la base de datos de SQL Server.
  • Un catálogo externo que refleje la base de datos SQL Server en Unity Catalog para que pueda usar la sintaxis de consulta y las herramientas de gobernanza de datos de Unity Catalog para administrar el acceso de usuario de Azure Databricks a la base de datos.

Lakehouse Federation admite SQL Server, Azure SQL Database y Azure SQL Managed Instance.

Antes de empezar

Requisitos del área de trabajo:

  • Área de trabajo habilitada para 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.
  • El cómputo de Azure Databricks debe usar Databricks Runtime 13.3 LTS o superior y el modo de acceso Standard o Dedicated.
  • Los almacenes de SQL deben ser pro o sin servidor y deben usar 2023.40 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.
  • 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.

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

Creación de una conexión

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 SQL CREATE CONNECTION en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL.

Note

También puede usar la API 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 de CREATE CONNECTION.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el icono Datos.Catálogo.

  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 una conexión en el menú.

    Como alternativa, en la página de Acceso rápido, haga clic en el botón Datos externos, vaya a la pestaña Conexiones y haga clic en Crear conexión.

  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 SQL Server.

  5. Seleccione un tipo de autenticación de OAuth, OAuth Machine to Machine o Nombre de usuario y contraseña (autenticación básica).

  6. (Opcional) Agregue un comentario.

  7. Haga clic en Siguiente.

  8. En la página Autenticación , escriba las siguientes propiedades de conexión para la instancia de SQL Server. Las propiedades específicas del método de autenticación seleccionado están precedidas por los Auth type paréntesis.

    • Host: El servidor SQL Server.
    • (Autenticación básica) Puerto
    • (Autenticación básica) trustServerCertificate: El valor predeterminado es false. Cuando se establece en true, la capa de transporte utiliza SSL para cifrar el canal y omite la cadena de certificados para validar la confianza. Deje este conjunto en el valor predeterminado a menos que tenga una necesidad específica de omitir la validación de confianza.
    • (Autenticación básica) Usuario
    • (Autenticación básica) Contraseña
    • (OAuth) Escriba los detalles de conexión que ha recopilado en Configurar el identificador de Entra de Microsoft para la federación de SQL Server.
  9. Haga clic en Crear conexión.

  10. (Autenticación básica) En la página Detalles de conexión, especifique lo siguiente:

    • Certificado de servidor de confianza: se deselecciona de forma predeterminada. Cuando se selecciona, la capa de transporte usa SSL para cifrar el canal y omite la cadena de certificados para validar la confianza. Deje este conjunto en el valor predeterminado a menos que tenga una necesidad específica de omitir la validación de confianza.
    • Intención de la aplicación: el tipo de carga de trabajo de la aplicación al conectarse a un servidor.
  11. Haga clic en Siguiente.

  12. 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 que pueda consultar y administrar el acceso a los datos de esa base de datos mediante Azure Databricks y Unity Catalog.

  13. Haga clic en Crear catálogo.

  14. En la página Access, 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.

  15. 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.

  16. 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 de forma predeterminada.
      • Seleccione Data Reader en el menú desplegable para conceder privilegios read sobre objetos en el catálogo.
      • Seleccione Editor de datos en el menú desplegable para conceder los privilegios read y modify en objetos del catálogo.
      • Seleccione manualmente los privilegios que se van a conceder.
    3. Haga clic en Conceder.
  17. Haga clic en Siguiente.

  18. En la página Metadatos, especifica pares clave-valor de etiquetas. Para obtener más información, consulte Aplicar etiquetas a los objetos securitizables de Unity Catalog.

  19. (Opcional) Agregue un comentario.

  20. Haz clic en Guardar.

Note

(OAuth) El punto de conexión OAuth de Azure Entra ID debe ser accesible desde las IP del plano de control de Azure Databricks. Consultar Regiones de Azure Databricks.

SQL

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

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

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

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

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 que pueda consultar y administrar el acceso a los datos de esa base de datos mediante Azure Databricks y Unity Catalog. 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 Catalog Explorer o el comando SQL CREATE FOREIGN CATALOG en un cuaderno de Azure Databricks o el editor de consultas SQL. También puede usar la API 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 el icono Datos.Catálogo 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 un catálogo en Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Delegaciones admitidas

Se admiten las siguientes delegaciones en todos los procesos:

  • Filters
  • Projections
  • Limit
  • Funciones: parcial, solo para expresiones de filtro. (Funciones de cadena, funciones matemáticas, funciones de datos, tiempo y marca de tiempo, y otras funciones diversas, como Alias, Cast, SortOrder)

Las siguientes delegaciones se admiten en Databricks Runtime 13.3 LTS y versiones posteriores, y en el proceso de SQL Warehouse:

  • Aggregates
  • Los siguientes operadores booleanos: =, <, <=, >, >=, <=>
  • Las siguientes funciones matemáticas (no se admiten si ANSI está deshabilitado): +, -, *, %, /
  • Los siguientes operadores varios: ^, |, ~
  • Ordenación, cuando se usa con límite

No se admiten las siguientes delegaciones:

  • Joins
  • Funciones de Windows

Asignaciones de tipo de datos

Al leer de SQL Server a Spark, los tipos de datos se asignan de la siguiente manera:

Tipo de SQL Server Tipo de Spark
bigint (sin signo), decimal, money, numeric, smallmoney DecimalType
smallint, tinyint ShortType
int IntegerType
bigint (si tiene signo) LongType
real FloatType
float DoubleType
char, nchar, uniqueidentifier CharType
nvarchar, varchar VarcharType
text, xml StringType
binary, geografía, geometría, image, timestamp, udt, varbinary BinaryType
bit BooleanType
date DateType
datetime, datetime, fecha y hora pequeña, hora TimestampType/TimestampNTZType

*Cuando se lee desde SQL Server, SQL Server datetimes se asignan a Spark TimestampType si preferTimestampNTZ = false (valor predeterminado). SQL Server datetimes se asignan a TimestampNTZType si preferTimestampNTZ = true.