Creación y administración de recursos compartidos de Delta Sharing

Este artículo explica cómo crear y administrar recursos compartidos de Delta Sharing.

Un recurso compartido es un objeto protegible en el catálogo de Unity que puede usar para compartir los siguientes recursos de datos con uno o varios destinatarios:

  • Tablas y particiones de tabla
  • Vistas, incluidas las vistas dinámicas que restringen el acceso en el nivel de fila y columna
  • Volúmenes
  • Cuaderno
  • Modelos de IA

Si comparte un esquema completo (base de datos), el destinatario podrá acceder a todas las tablas, vistas, modelos y volúmenes del esquema en el momento en que lo comparta, junto con cualquier dato y recurso de IA que se agregue al esquema en el futuro.

Un recurso compartido puede contener datos y recursos de IA de solo un metastore de Unity Catalog. Puede agregar o eliminar datos y recursos de IA de una acción en cualquier momento.

Para obtener más información, consulte Recursos compartidos, proveedores y destinatarios.

Requisitos

Para crear un recurso compartido, debe:

  • Ser administrador del metastore o tener el privilegio CREATE SHARE para el metastore de Unity Catalog donde están registrados los datos que quiere compartir.
  • Crear el recurso compartido mediante un área de trabajo de Azure Databricks que tenga asociado ese metastore de Unity Catalog.

Para agregar tablas a un recurso compartido, debe:

  • Ser el propietario del recurso compartido.
  • Tener los privilegios USE CATALOG y USE SCHEMA en el catálogo, y el esquema que contiene la tabla o vista, o la propiedad del catálogo o esquema.
  • Tener el privilegio SELECT en la tabla o vista. Debes mantener ese privilegio para que la tabla o vista siga siendo compartida. Si lo pierdes, el destinatario no podrá acceder a la tabla o vista a través de la acción compartida. Por lo tanto, Databricks recomienda usar un grupo como propietario del recurso compartido.

Para agregar volúmenes a un recurso compartido, debe:

  • Ser el propietario del recurso compartido.
  • Tener los USE CATALOG privilegios y USE SCHEMA en el catálogo y esquema que contienen el volumen, o la propiedad del catálogo o esquema.
  • Tener el privilegio READ VOLUME en el volumen. Debe mantener ese privilegio para que el volumen siga siendo compartido. Si lo pierde, el destinatario no podrá acceder al volumen a través del recurso compartido. Por lo tanto, Databricks recomienda usar un grupo como propietario del recurso compartido.

Para agregar modelos a un recurso compartido, debe:

  • Ser el propietario del recurso compartido.
  • Tener los privilegios USE CATALOG y USE SCHEMA en el catálogo y esquema que contienen el modelo, o la propiedad del catálogo o esquema.
  • Tener el privilegio EXECUTE en el modelo. Debe mantener ese privilegio para que el modelo siga siendo compartido. Si lo pierde, el destinatario no puede acceder al modelo a través del recurso compartido. Por lo tanto, Databricks recomienda usar un grupo como propietario del recurso compartido.

Para compartir un esquema completo, debe:

  • Ser el propietario del recurso compartido y el propietario del esquema, o tener USE SCHEMA.
  • Tener SELECT en el esquema para compartir tablas.
  • Tener READ VOLUME en el esquema para compartir volúmenes.

Para agregar archivos de cuaderno a un recurso compartido, debe ser:

  • El propietario del recurso compartido y tener permiso PUEDE LEER en el cuaderno.

Para conceder al destinatario acceso a un recurso compartido, debe ser uno de estos:

  • Administrador del metastore.
  • Usuario con permisos delegados o propietario tanto en el recurso compartido como en los objetos de destinatario ([USE SHARE + SET SHARE PERMISSION] o propietario del recurso compartido) Y (propietario del destinatario o USE RECIPIENT).

Para ver recursos compartidos, debe ser uno de estos:

  • Un administrador del metastore (puede ver todo)
  • Un usuario con el privilegio USE SHARE (puede ver todo)
  • El propietario del objeto de recurso compartido

Requisitos de proceso:

  • Si usa un cuaderno de Databricks para crear el recurso compartido, el clúster deberá usar Databricks Runtime 11.3 LTS o superior y el modo de acceso de clúster compartido o de usuario único.
  • Si usa instrucciones SQL para agregar un esquema a un recurso compartido (o actualizar o eliminar un esquema), deberá usar un almacén SQL o un equipo que ejecute Databricks Runtime 13.3 LTS o una versión superior. Hacer lo mismo con Explorador de catálogo no tiene requisitos de proceso.

Creación de un objeto de recurso compartido

Para crear un recurso compartido, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o el comando SQL CREATE SHARE en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL.

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

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.
  3. Haga clic en Compartir datos.
  4. Escriba el nombre del recurso compartido y un comentario opcional.

Sql

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

CREATE SHARE [IF NOT EXISTS] <share-name>
[COMMENT "<comment>"];

Cli

Ejecute el siguiente comando mediante la CLI de Databricks.

databricks shares create <share-name>

Puede usar --comment para agregar un comentario o --json para agregar recursos al recurso compartido. Para obtener más información, consulte las secciones siguientes.

Incorporación de tablas a un recurso compartido

Para agregar tablas a un recurso compartido, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o los comandos SQL en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL.

Permisos necesarios: propietario del objeto de recurso compartido, USE CATALOG y USE SCHEMA en el catálogo y esquema que contiene la tabla, y el privilegio SELECT de la tabla. Debe mantener el privilegio SELECT siempre que desee compartir la tabla. Para obtener más información, consulte los requisitos.

Nota:

Si es administrador del área de trabajo y ha heredado los permisos USE SCHEMA y USE CATALOG en el esquema y el catálogo que contienen la tabla del grupo de administración del área de trabajo, no podrá agregar la tabla a un recurso compartido. Primero debe concederse los permisos USE SCHEMA y USE CATALOG en el esquema y el catálogo.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.

  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.

  3. En la pestaña Recursos compartidos, busque el recurso compartido al que desea agregar una tabla y haga clic en su nombre.

  4. Haga clic en Administrar recursos Agregar recursos > de datos.

  5. En la página Agregar tablas, seleccione un esquema completo (base de datos) o tablas y vistas individuales.

    • Para seleccionar una tabla o vista, seleccione primero el catálogo, el esquema que contiene la tabla o vista y, a continuación, la tabla o la propia vista.

      Puede buscar tablas por nombre, nombre de columna o comentario mediante la búsqueda del área de trabajo. Consulte Búsqueda de objetos del área de trabajo.

    • Para seleccionar un esquema, seleccione primero el catálogo y, a continuación, el esquema.

      Para obtener información detallada sobre cómo compartir esquemas, vea Agregar esquemas a un recurso compartido.

  6. (Opcional) Haga clic en Opciones avanzadas de tabla para especificar las siguientes opciones. Los alias y las particiones no están disponibles si selecciona un esquema completo. El historial de tablas se incluye de forma predeterminada si selecciona un esquema completo.

    • Alias: un nombre de tabla alternativo para que el nombre de la tabla sea más legible. El alias es el nombre de tabla que el destinatario ve y debe usar en las consultas. Los destinatarios no pueden usar el nombre real de la tabla si se especifica un alias.

    • Partición: comparta solo parte de la tabla. Por ejemplo, (column = 'value'). Consulte Especificar particiones de tabla para compartir y Usar propiedades de destinatario para realizar el filtrado de particiones.

    • Uso compartido del historial: comparta el historial de tablas para permitir que los destinatarios realicen consultas de viaje en el tiempo o lean la tabla con Spark Structured Streaming. Requiere Databricks Runtime 12.2 LTS o superior.

      Nota:

      Si, además de realizar consultas de viaje en el tiempo y lecturas de streaming, quiere que los clientes puedan consultar una fuente de distribución de datos modificados (CDF) de una tabla mediante la función table_changes(), debe habilitar CDF en la tabla antes de compartirlo en WITH HISTORY.

  7. Haga clic en Save(Guardar).

Sql

Ejecuta el siguiente comando en un bloc de notas o en el editor de consultas SQL de Databricks para añadir una tabla:

ALTER SHARE <share-name> ADD TABLE <catalog-name>.<schema-name>.<table-name>  [COMMENT "<comment>"]
   [PARTITION(<clause>)] [AS <alias>]
   [WITH HISTORY | WITHOUT HISTORY];

Ejecute lo siguiente para agregar un esquema completo. El comando ADD SCHEMA requiere un almacén SQL o un equipo que ejecute Databricks Runtime 13.3 LTS o una versión superior. Para obtener información detallada sobre cómo compartir esquemas, vea Agregar esquemas a un recurso compartido.

ALTER SHARE <share-name> ADD SCHEMA <catalog-name>.<schema-name>
[COMMENT "<comment>"];

Las opciones incluyen. PARTITION y AS <alias> no están disponibles si selecciona un esquema completo. WITH HISTORY está seleccionado de forma predeterminada para todas las tablas si selecciona un esquema completo.

  • PARTITION(<clause>): si solo desea compartir parte de la tabla, puede especificar una partición. Por ejemplo, (column = 'value') Consulte Especificar particiones de tabla para compartir y Usar propiedades de destinatario para realizar el filtrado de particiones.

  • AS <alias>: un nombre de tabla alternativo o un alias para que el nombre de la tabla sea más legible. El alias es el nombre de tabla que el destinatario ve y debe usar en las consultas. Los destinatarios no pueden usar el nombre real de la tabla si se especifica un alias. Use el formato <schema-name>.<table-name>.

  • WITH HISTORY o WITHOUT HISTORY: Cuando WITH HISTORY se especifica, comparte la tabla con el historial completo, lo que permite a los destinatarios realizar consultas de viaje en el tiempo y lecturas de flujo. El comportamiento predeterminado para el uso compartido de tablas es WITHOUT HISTORY y para el uso compartido de esquemas es WITH HISTORY. Requiere Databricks Runtime 12.2 LTS o superior.

    Nota:

    Si, además de realizar consultas de viaje en el tiempo y lecturas de streaming, quiere que los clientes puedan consultar una fuente de distribución de datos modificados (CDF) de una tabla mediante la función table_changes(), debe habilitar CDF en la tabla antes de compartirlo en WITH HISTORY.

Para más información sobre las opciones ALTER SHARE, consulta ALTER SHARE.

Cli

Para añadir una tabla, ejecuta el siguiente comando utilizando la función CLI de Databricks.

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "ADD",
        "data_object": {
          "name": "<table-full-name>",
          "data_object_type": "TABLE",
          "shared_as": "<table-alias>"
        }
      }
    ]
  }'

Para agregar un esquema, ejecute el siguiente comando de la CLI de Databricks:

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "ADD",
        "data_object": {
          "name": "<schema-full-name>",
          "data_object_type": "SCHEMA"
        }
      }
    ]
  }'

Nota:

En el caso de las tablas, y solo para las tablas, puede omitir "data_object_type".

Para obtener información sobre las opciones enumeradas en este ejemplo, consulte las instrucciones de la pestaña SQL.

Para obtener información sobre parámetros adicionales, ejecute databricks shares update --help o consulte PATCH /api/2.1/unity-catalog/shares/ en la referencia de la API de REST.

Para obtener información sobre cómo quitar tablas de un recurso compartido, consulte Actualización de recursos compartidos.

Especificación de particiones de tabla para compartir

Para compartir solo una parte de una tabla al agregar la tabla a un recurso compartido, puede proporcionar una especificación de partición. Puede especificar particiones al agregar una tabla a un recurso compartido o al actualizar un recurso compartido mediante Catalog Explorer, la CLI de Unity Catalog de Databricks o los comandos SQL en un cuaderno de Azure Databricks o en el editor de consultas de Databricks SQL. Consulte Incorporación de tablas a un recurso compartido y Actualización de recursos compartidos.

Ejemplo básico

En el ejemplo siguiente de SQL se comparte parte de los datos de la tabla inventory, dado que la tabla está particionada por las columnas year, month y date:

  • Datos del año 2021.
  • Datos de diciembre de 2020.
  • Datos del 25 de diciembre de 2019.
ALTER SHARE share_name
ADD TABLE inventory
PARTITION (year = "2021"),
          (year = "2020", month = "Dec"),
          (year = "2019", month = "Dec", date = "2019-12-25");

Uso de propiedades de destinatarios para realizar el filtrado de particiones

Puede compartir una partición de tabla que coincida con las propiedades del destinatario de datos, también conocido como uso compartido de particiones con parámetros.

Las propiedades predeterminadas incluyen:

  • databricks.accountId: la cuenta de Azure Databricks a la que pertenezca un destinatario de datos (solo para uso compartido de Databricks a Databricks).
  • databricks.metastoreId: metastore de Unity Catalog al que pertenece un destinatario de datos (solo para uso compartido de Databricks a Databricks).
  • databricks.name: nombre del destinatario de los datos.

Puede crear cualquier propiedad personalizada que desee al crear o actualizar un destinatario.

El filtrado por propiedad de destinatario le permite compartir las mismas tablas, con el mismo recurso compartido, en varias cuentas, áreas de trabajo y usuarios de Databricks, a la vez que se mantienen los límites de datos entre ellas.

Por ejemplo, si las tablas incluyen una columna de identificador de cuenta de Azure Databricks, puede crear un único recurso compartido con particiones de tabla definidas por el identificador de cuenta de Azure Databricks. Al compartir, Delta Sharing entrega dinámicamente a cada destinatario solo los datos asociados a su cuenta de Azure Databricks.

Diagrama de recursos compartidos con particiones dinámicas basadas en parámetros en Delta Sharing

Sin la capacidad de crear particiones dinámicamente por propiedad, tendría que crear un recurso compartido independiente para cada destinatario.

Para especificar una partición que filtre por propiedades de destinatario al crear o actualizar un recurso compartido, puede usar Catalog Explorer o la función SQL CURRENT_RECIPIENT en un cuaderno de Azure Databricks o en el editor de consultas de Databricks SQL:

Nota:

Las propiedades del destinatario están disponibles en Databricks Runtime 12.2 y versiones posteriores.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.

  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.

  3. En la pestaña Recursos compartidos, busque el recurso compartido que desea actualizar y haga clic en su nombre.

  4. Haz clic en Gestionar activos > Añadir activos de datos.

  5. En la página Agregar tablas, seleccione el catálogo y la base de datos que contienen la tabla y, a continuación, seleccione la tabla.

    Si no sabe con seguridad qué catálogo y base de datos contienen la tabla, puede buscarla por nombre, nombre de columna o comentario mediante la búsqueda del área de trabajo. Consulte Búsqueda de objetos del área de trabajo.

  6. (Opcional) Haga clic en Opciones avanzadas de tabla para agregar especificaciones de Partición.

    En el cuadro de diálogo Agregar partición a una tabla, agregue la especificación de partición basada en propiedades mediante la sintaxis siguiente:

    (<column-name> = CURRENT_RECIPIENT(<property-key>))
    

    Por ejemplo,

    (country = CURRENT_RECIPIENT('country'))
    
  7. Haga clic en Save(Guardar).

Sql

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

ALTER SHARE <share-name> ADD TABLE <catalog-name>.<schema-name>.<table-name>
   PARTITION (<column-name> = CURRENT_RECIPIENT(<property-key>);

Por ejemplo,

ALTER SHARE acme ADD TABLE acme.default.some_table
  PARTITION (country = CURRENT_RECIPIENT('country'))

Agregar tablas con vectores de eliminación o asignación de columnas a un recurso compartido

Importante

Esta característica está en versión preliminar pública.

Los vectores de eliminación son una característica de optimización de almacenamiento que puede habilitar en tablas Delta. Consulte ¿Qué son los vectores de eliminación?.

Azure Databricks también admite la asignación de columnas para tablas Delta. Consulte Cambio de nombre y eliminación de columnas con la asignación de columnas de Delta Lake.

Para compartir una tabla con vectores de eliminación o asignación de columnas, debe compartirla con el historial. Consulte Agregar tablas a un recurso compartido.

Cuando comparte una tabla con vectores de eliminación o asignación de columnas, los destinatarios pueden consultar la tabla usando un almacén SQL, un clúster que ejecute Databricks Runtime 14.1 o superior, o un equipo que ejecute delta-sharing-spark 3.1 o superior de código abierto. Consulte Lectura de tablas con vectores de eliminación o asignación de columnas habilitados y Lectura de tablas con vectores de eliminación o asignación de columnas habilitados.

Añadir vistas a una acción

Importante

Esta característica está en versión preliminar pública.

Las vistas son objetos de solo lectura creados a partir de una o varias tablas u otras vistas. Se puede crear una vista a partir de tablas y otras vistas contenidas en varios esquemas y catálogos en un metastore de Catálogo de Unity. ConsultarCrear vistas.

En esta sección, se describe cómo agregar vistas a un recurso compartido con Catalog Explorer, la CLI de Databricks o comandos SQL en un cuaderno de Azure Databricks o en el editor de consultas SQL de Databricks. Si prefiere usar la API de REST de Unity Catalog, consulte PATCH /api/2.1/unity-catalog/shares/ en la referencia de la API de REST.

Permisos necesarios: propietario del objeto de recurso compartido, USE CATALOG y USE SCHEMA en el catálogo y el esquema que contienen la vista y SELECT en la vista. Debe mantener el privilegio SELECT siempre que desee compartir la tabla. Para obtener más información, consulte los requisitos.

Requisitos adicionales:

  • El uso compartido de vistas solo se admite en el uso compartido de Databricks a Databricks.
  • Las vistas compartidas deben definirse en las tablas Delta u otras vistas compartibles.
  • No se pueden compartir vistas que hagan referencia a tablas compartidas o vistas compartidas.
  • Debe usar un almacén SQL o un clúster en Databricks Runtime 13.3 LTS o superior cuando agregue una vista a una acción.
  • Para conocer los requisitos y las limitaciones sobre el uso de las vistas de los destinatarios, consulte Lectura de vistas compartidas.

Para agregar vistas a un recurso compartido:

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.
  3. En la pestaña Recursos compartidos, busca el recurso compartido al que quieres añadir una vista y haz clic en su nombre.
  4. Haz clic en Gestionar activos > Añadir activos de datos.
  5. En la página Agregar tablas, busque o busque la vista que desea compartir y selecciónela.
  6. (Opcional) Haga clic en Opciones avanzadas de tabla para especificar un alias o un nombre de vista alternativo para que el nombre de la vista sea más legible. El alias es el nombre que el destinatario ve y debe utilizar en las consultas. Los destinatarios no pueden utilizar el nombre real de la vista si se especifica un alias.
  7. Haga clic en Save(Guardar).

Sql

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

ALTER SHARE <share-name> ADD VIEW <catalog-name>.<schema-name>.<view-name>
   [COMMENT "<comment>"]
   [AS <alias>];

Las opciones incluyen:

  • AS <alias>: Un nombre alternativo de la vista, o alias, para que el nombre de la vista sea más legible. El alias es el nombre de la vista que el destinatario ve y debe utilizar en las consultas. Los destinatarios no pueden utilizar el nombre real de la vista si se especifica un alias. Use el formato <schema-name>.<view-name>.
  • COMMENT "<comment>": los comentarios aparecen en la interfaz de usuario de Catalog Explorer y al enumerar y mostrar los detalles de la vista mediante instrucciones SQL.

Para más información sobre las opciones ALTER SHARE, consulta ALTER SHARE.

Cli

Ejecute el siguiente comando de la CLI de Databricks:

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "ADD",
        "data_object": {
          "name": "<view-full-name>",
          "data_object_type": "VIEW",
          "shared_as": "<view-alias>"
        }
      }
    ]
  }'

"shared_as": "<view-alias>" es opcional y proporciona un nombre de vista alternativo, o alias, para que el nombre de la vista sea más legible. El alias es el nombre de la vista que el destinatario ve y debe utilizar en las consultas. Los destinatarios no pueden utilizar el nombre real de la vista si se especifica un alias. Use el formato <schema-name>.<view-name>.

Para obtener información sobre parámetros adicionales, ejecute databricks shares update --help o consulte PATCH /api/2.1/unity-catalog/shares/ en la referencia de la API de REST.

Para obtener información sobre cómo quitar vistas de un recurso compartido, consulte Actualización de recursos compartidos.

Adición de vistas dinámicas a un recurso compartido para filtrar filas y columnas

Importante

Esta característica está en versión preliminar pública.

Puede usar vistas dinámicas para configurar el control de acceso específico a los datos de tabla, entre los que se incluyen:

  • Seguridad en el nivel de columnas o filas.
  • Enmascaramiento de datos.

Al crear una vista dinámica que use la función CURRENT_RECIPIENT(), puede limitar el acceso de destinatarios según las propiedades que especifique en la definición del destinatario.

En esta sección se proporcionan ejemplos de restricción del acceso de destinatarios a los datos de tabla en el nivel de fila y columna mediante una vista dinámica.

Requisitos

  • Versión de Databricks Runtime: la función CURRENT_RECIPIENT se admite en Databricks Runtime 14.2 y versiones posteriores.
  • Permisos:
    • Para crear una vista, debe ser el propietario del objeto compartido, tener USE CATALOG y USE SCHEMA en el catálogo y el esquema que contienen la vista, junto con SELECT en la vista. Debe mantener el privilegio SELECT siempre que desee compartir la tabla.
    • Para establecer propiedades en un destinatario, debe ser el propietario del objeto de destinatario.
  • Limitaciones: todas las limitaciones para el uso compartido de vistas, incluida la restricción del uso compartido de Databricks a Databricks, además de las siguientes:
    • Cuando un proveedor comparte una vista que usa la función CURRENT_RECIPIENT, el proveedor no puede consultar la vista directamente debido al contexto de uso compartido. Para probar esta vista dinámica, el proveedor debe compartir la vista con ellos mismos y consultar la vista como destinatario.
    • Los proveedores no pueden crear una vista que haga referencia a una vista dinámica.

Establecer una propiedad de destinatario

En estos ejemplos, la tabla que se va a compartir tiene una columna denominada country, y solo los destinatarios con una propiedad country coincidente pueden ver determinadas filas o columnas.

Puede establecer propiedades de destinatario mediante el Explorador de catálogos o comandos SQL en un cuaderno de Azure Databricks o en el editor de consultas SQL.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.
  3. En la pestaña Destinatarios, busque el destinatario al que desea agregar las propiedades y haga clic en su nombre.
  4. Haga clic en Editar propiedades.
  5. En el cuadro de diálogo Editar propiedades del destinatario, escriba el nombre de la columna como clave (en este caso country) y el valor por el que quiere filtrar como valor (por ejemplo, CA).
  6. Haga clic en Save(Guardar).

Sql

Para establecer la propiedad en el destinatario, use ALTER RECIPIENT. En este ejemplo, la propiedad country se establece en CA.

ALTER RECIPIENT recipient1 SET PROPERTIES ('country' = 'CA');

Creación de una vista dinámica con permiso de nivel de fila para los destinatarios

En este ejemplo, solo los destinatarios con una propiedad coincidente country pueden ver determinadas filas.

CREATE VIEW my_catalog.default.view1 AS
  SELECT * FROM my_catalog.default.my_table
  WHERE country = CURRENT_RECIPIENT('country');

Otra opción es que el proveedor de datos mantenga una tabla de asignación separada que asigne los campos de la tabla de hechos a las propiedades del destinatario, lo que permite desacoplar las propiedades del destinatario y los campos de la tabla de hechos para una mayor flexibilidad.

Creación de una vista dinámica con permiso de nivel de columna para los destinatarios

En este ejemplo, solo los destinatarios que coincidan con la propiedad country pueden ver determinadas columnas. Otros ven los datos devueltos como REDACTED:

CREATE VIEW my_catalog.default.view2 AS
  SELECT
  CASE
    WHEN CURRENT_RECIPIENT('country') = 'US' THEN pii
    ELSE 'REDACTED'
  END AS pii
  FROM my_catalog.default.my_table;

Uso compartido de la vista dinámica con un destinatario

Para compartir la vista dinámica con un destinatario, use los mismos comandos SQL o procedimiento de interfaz de usuario que usaría para una vista estándar. Consulte Agregar vistas a un recurso compartido.

Agregar volúmenes a un recurso compartido

Importante

Esta característica está en versión preliminar pública.

Los volúmenes son objetos de Unity Catalog que representan un volumen lógico de almacenamiento en una ubicación de almacenamiento de objetos en la nube. Están diseñados principalmente para proporcionar gobernanza sobre los recursos de datos no tabulares. Consulte Crear y trabajar con volúmenes.

En esta sección, se describe cómo agregar volúmenes a un recurso compartido utilizando Catalog Explorer, la CLI de Databricks o comandos SQL en un cuaderno de Azure Databricks o en el editor de consultas SQL. Si prefiere usar la API de REST de Unity Catalog, consulte PATCH /api/2.1/unity-catalog/shares/ en la referencia de la API de REST.

Permisos necesarios: propietario del objeto de recurso compartido, USE CATALOG y USE SCHEMA en el catálogo y esquema que contienen el volumen, y READ VOLUME en el volumen. Debe mantener el privilegio READ VOLUME siempre que desee compartir el volumen. Para obtener más información, consulte los requisitos.

Requisitos adicionales:

  • El uso compartido de volúmenes solo se admite en el uso compartido de Databricks a Databricks.
  • Debe usar una instancia de SQL Warehouse en la versión 2023.50 o posterior, o en un clúster de Databricks Runtime 14.1 o superior al agregar un volumen a un recurso compartido.

Para agregar volúmenes a un recurso compartido:

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.

  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.

  3. En la pestaña Recursos compartidos, busque el recurso compartido al que quiere agregar un volumen y haga clic en su nombre.

  4. Haga clic en Administrar recursos > Editar recursos.

  5. En la página Editar recursos, busque el volumen que desea compartir y selecciónelo.

    Como alternativa, puede seleccionar todo el esquema que contiene el volumen. Consulte Añadir esquemas a una acción.

  6. (Opcional) Haga clic en Opciones avanzadas para especificar un nombre de volumen alternativo o Alias para que el nombre del volumen sea más legible.

    Los alias no están disponibles si selecciona un esquema completo.

    El alias es el nombre que el destinatario ve y debe utilizar en las consultas. Los destinatarios no pueden utilizar el nombre real del volumen si se especifica un alias.

  7. Haga clic en Save(Guardar).

Sql

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

ALTER SHARE <share-name> ADD VOLUME <catalog-name>.<schema-name>.<volume-name>
   [COMMENT "<comment>"]
   [AS <alias>];

Las opciones incluyen:

  • AS <alias>: nombre de volumen alternativo, o alias, para que el nombre del volumen sea más legible. El alias es el nombre del volumen que el destinatario ve y debe utilizar en las consultas. Los destinatarios no pueden utilizar el nombre real del volumen si se especifica un alias. Use el formato <schema-name>.<volume-name>.
  • COMMENT "<comment>": los comentarios aparecen en la interfaz de usuario de Catalog Explorer, y al enumerar y mostrar los detalles del volumen mediante instrucciones SQL.

Para más información sobre las opciones ALTER SHARE, consulta ALTER SHARE.

Cli

Ejecute el siguiente comando mediante la CLI de Databricks 0.210 o posterior:

 databricks shares update <share-name> \
   --json '{
     "updates": [
       {
         "action": "ADD",
         "data_object": {
           "name": "<volume-full-name>",
           "data_object_type": "VOLUME",
           "string_shared_as": "<volume-alias>"
         }
       }
     ]
   }'

"string_shared_as": "<volume-alias>" es opcional y proporciona un nombre de volumen alternativo, o alias, para que el nombre del volumen sea más legible. El alias es el nombre del volumen que el destinatario ve y debe utilizar en las consultas. Los destinatarios no pueden utilizar el nombre real del volumen si se especifica un alias. Use el formato <schema-name>.<volume-name>.

Para obtener información sobre parámetros adicionales, ejecute databricks shares update --help o consulte PATCH /api/2.1/unity-catalog/shares/ en la referencia de la API de REST.

Para obtener información sobre cómo quitar volúmenes de un recurso compartido, consulte Actualización de recursos compartidos.

Adición de modelos a un recurso compartido

Importante

Esta característica está en versión preliminar pública.

En esta sección, se describe cómo agregar modelos a un recurso compartido utilizando Catalog Explorer, la CLI de Databricks o comandos SQL en un cuaderno de Azure Databricks o en el editor de consultas SQL. Si prefiere usar la API de REST de Unity Catalog, consulte PATCH /api/2.1/unity-catalog/shares/ en la referencia de la API de REST.

Permisos necesarios: propietario del objeto de recurso compartido, USE CATALOG y USE SCHEMA en el catálogo y el esquema que contienen el modelo y EXECUTE en el modelo. Debe mantener el privilegio EXECUTE siempre que desee compartir el modelo. Para obtener más información, consulte los requisitos.

Requisitos adicionales:

  • El uso compartido de modelos solo se admite en el uso compartido de Databricks a Databricks.
  • Debe usar una instancia de SQL Warehouse en la versión 2023.50 o posterior, o en un clúster de Databricks Runtime 14.0 o superior al agregar un modelo a un recurso compartido.

Para agregar modelos a un recurso compartido:

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.

  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.

  3. En la pestaña Recursos compartidos, busque el recurso compartido al que quiere añadir un modelo y haga clic en su nombre.

  4. Haga clic en Administrar recursos > Editar recursos.

  5. En la página Editar recursos, busque el modelo que desea compartir y selecciónelo.

    Como alternativa, puede seleccionar todo el esquema que contiene el modelo. Consulte Añadir esquemas a una acción.

  6. (Opcional) Haga clic en Opciones avanzadas para especificar un nombre de modelo alternativo o Alias para que el nombre del modelo sea más legible.

    Los alias no están disponibles si selecciona un esquema completo.

    El alias es el nombre que el destinatario ve y debe utilizar en las consultas. Los destinatarios no pueden utilizar el nombre real del modelo si se especifica un alias.

  7. Haga clic en Save(Guardar).

Sql

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

ALTER SHARE <share-name> ADD MODEL <catalog-name>.<schema-name>.<model-name>
   [COMMENT "<comment>"]
   [AS <alias>];

Las opciones incluyen:

  • AS <alias>: un nombre de modelo alternativo, o alias, para que el nombre del modelo sea más legible. El alias es el nombre del modelo que el destinatario ve y debe utilizar en las consultas. Los destinatarios no pueden utilizar el nombre real del modelo si se especifica un alias. Use el formato <schema-name>.<model-name>.
  • COMMENT "<comment>": los comentarios aparecen en la interfaz de usuario de Catalog Explorer y al enumerar y mostrar los detalles del modelo mediante instrucciones SQL.

Para más información sobre las opciones ALTER SHARE, consulta ALTER SHARE.

Cli

Ejecute el siguiente comando mediante la CLI de Databricks 0.210 o posterior:

 databricks shares update <share-name> \
   --json '{
     "updates": [
       {
         "action": "ADD",
         "data_object": {
           "name": "<model-full-name>",
           "data_object_type": "MODEL",
           "string_shared_as": "<model-alias>"
         }
       }
     ]
   }'

"string_shared_as": "<model-alias>" es opcional y proporciona un nombre de modelo alternativo, o alias, para que el nombre del modelo sea más legible. El alias es el nombre del modelo que el destinatario ve y debe utilizar en las consultas. Los destinatarios no pueden utilizar el nombre real del modelo si se especifica un alias. Use el formato <schema-name>.<model-name>.

Para obtener información sobre parámetros adicionales, ejecute databricks shares update --help o consulte PATCH /api/2.1/unity-catalog/shares/ en la referencia de la API de REST.

Para obtener información sobre cómo quitar modelos de un recurso compartido, consulte Actualización de recursos compartidos.

Añadir esquemas a una acción

Importante

Esta característica está en versión preliminar pública.

Al agregar un esquema completo a un recurso compartido, los destinatarios tendrán acceso no solo a todos los recursos de datos del esquema en el momento en que cree el recurso compartido, sino a todos los recursos que se agreguen al esquema a lo largo del tiempo. Esto incluye todas las tablas, vistas y volúmenes del esquema. Las tablas compartidas de esta manera siempre incluyen historial completo.

Para añadir, actualizar o eliminar un esquema usando SQL se requiere un almacén SQL o un equipo que ejecute Databricks Runtime 13.3 LTS o una versión superior. Hacer lo mismo con Explorador de catálogo no tiene requisitos de proceso.

Permisos necesario: Propietario del objeto compartido y propietario del esquema (o un usuario con USE SCHEMA y privilegios SELECT sobre el esquema).

Para agregar un esquema a un recurso compartido, siga las instrucciones de Agregar tablas a un recurso compartido, prestando atención al contenido que especifica cómo agregar un esquema.

Los alias de tabla, las particiones y los alias de volumen no están disponibles si selecciona un esquema completo. Si ha creado alias o particiones para los recursos del esquema, se quitan al agregar todo el esquema al recurso compartido.

Si desea especificar opciones avanzadas para una tabla o volumen que va a compartir mediante el uso compartido de esquemas, debe compartir la tabla o volumen mediante SQL y asignarle un alias con un nombre de esquema diferente.

Agregar archivos de cuaderno a un recurso compartido

Use Catalog Explorer para agregar un archivo de cuaderno a un recurso compartido.

Nota:

Para compartir cuadernos, el metastore debe tener almacenamiento de nivel de metastore.

Permisos necesarios: propietario del objeto de recurso compartido y permiso PUEDE LEER en el cuaderno que desea compartir.

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.

  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.

  3. En la pestaña Recursos compartidos, busque el recurso compartido al que desea agregar un cuaderno y haga clic en su nombre.

  4. Haga clic en Administrar recursos y seleccione Agregar archivo de cuaderno.

  5. En la página Agregar archivo de cuaderno, haga clic en el icono de archivo para buscar el cuaderno que desea compartir.

    Haga clic en el archivo que desea compartir y haga clic en Seleccionar.

    (Opcionalmente) Especifique un alias descriptivo para el archivo en el campo Compartir como. Este es el identificador que verán los destinatarios.

  6. Haga clic en Save(Guardar).

El archivo de cuaderno compartido aparece ahora en la lista Archivos de cuaderno de la pestaña Activos.

Eliminación de archivos de cuaderno de recursos compartidos

Para quitar un archivo de cuaderno de un recurso compartido:

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.
  3. En la pestaña Recursos compartidos, busque el recurso compartido que incluye el cuaderno y haga clic en el nombre del recurso compartido.
  4. En la pestaña Activos, busque el archivo de cuaderno que desea quitar del recurso compartido.
  5. Haga clic en el Menú kebab (también conocido como menú de tres puntos) a la derecha de la fila y seleccione Eliminar archivo de cuaderno.
  6. En el cuadro de diálogo de confirmación, haga clic en Eliminar.

Actualización de archivos de cuaderno en recursos compartidos

Para actualizar un cuaderno que ya ha compartido, debe volver a agregarlo y proporcionar un nuevo alias en el campo Compartir como. Databricks recomienda usar un nombre que indique el estado revisado del cuaderno, como <old-name>-update-1. Es posible que tenga que notificar al destinatario del cambio. El destinatario debe seleccionar y clonar el nuevo cuaderno para aprovechar la actualización.

Concesión de acceso a un recurso compartido a destinatarios

Para conceder acceso compartido a los destinatarios, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o el comando SQL GRANT ON SHARE en un cuaderno de Azure Databricks o en el editor de consultas de Databricks SQL.

Permisos necesarios: uno de los siguientes:

  • Administrador del metastore.
  • Permisos delegados o control tanto en el recurso compartido como en los objetos de destinatario ((USE SHARE + SET SHARE PERMISSION) o propietario del recurso compartido) AND (USE RECIPIENT o propietario del destinatario).

Para obtener instrucciones, consulte Administrar el acceso a los recursos compartidos de datos de Delta Sharing (para proveedores). En este artículo también se explica cómo revocar el acceso de un destinatario a un recurso compartido.

Visualización de recursos compartidos y detalles de recursos compartidos

Para ver una lista de recursos compartidos o detalles sobre un recurso compartido, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o los comandos SQL en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL.

Permisos necesarios: la lista de recursos compartidos devueltos depende de su rol y permisos. Los administradores y usuarios del metastore con el privilegio USE SHARE ven todos los recursos compartidos. De lo contrario, solo puede ver los recursos compartidos para los que es el propietario del objeto de recurso compartido.

Los detalles incluyen:

  • El propietario, creador, marca de tiempo de creación, actualizador, marca de tiempo actualizada y comentarios del recurso compartido.
  • Recursos de datos del recurso compartido.
  • Los destinatarios con acceso al recurso compartido.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.
  3. Abra la pestaña Recursos compartidos para ver una lista de recursos compartidos.
  4. Vea los detalles del recurso compartido en la pestaña Detalles.

Sql

Para ver una lista de recursos compartidos, ejecute el siguiente comando en un cuaderno o en el editor de consultas de Databricks SQL. Opcionalmente, reemplace <pattern> por un predicado LIKE.

SHOW SHARES [LIKE <pattern>];

Para ver detalles sobre un recurso compartido específico, ejecute el siguiente comando.

DESCRIBE SHARE <share-name>;

Para ver detalles sobre todas las tablas, vistas y volúmenes de un recurso compartido, ejecute el siguiente comando.

SHOW ALL IN SHARE <share-name>;

Cli

Para ver una lista de recursos compartidos, ejecute el siguiente comando mediante la CLI de Databricks.

databricks shares list

Para ver detalles sobre un recurso compartido específico, ejecute el siguiente comando.

databricks shares get <share-name>

Visualización de los destinatarios que tienen permisos en un recurso compartido

Para ver la lista de recursos compartidos a los que se haya concedido acceso a un destinatario, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o el comando SQL SHOW GRANTS TO RECIPIENT en un cuaderno de Azure Databricks o en el editor de consultas de Databricks SQL.

Permisos necesarios: administrador del metastore, privilegio USE SHARE o propietario del objeto de recurso compartido.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.
  3. En la pestaña Recursos compartidos, busque y seleccione el destinatario.
  4. Vaya a la pestaña Destinatarios para ver la lista de destinatarios que pueden acceder al recurso compartido.

Sql

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

SHOW GRANTS ON SHARE <share-name>;

Cli

Ejecute el siguiente comando mediante la CLI de Databricks.

databricks shares share-permissions <share-name>

Actualización de recursos compartidos

Además de agregar tablas, vistas, volúmenes y cuadernos a un recurso compartido, puede hacer lo siguiente:

  • Cambiar el nombre de un recurso compartido.
  • Quite tablas, vistas, volúmenes y esquemas de un recurso compartido.
  • Agregar o actualizar un comentario en un recurso compartido.
  • Habilite o deshabilite el acceso a los datos del historial de una tabla, lo que permite a los destinatarios realizar consultas de viaje en el tiempo o lecturas de transmisión de la tabla.
  • Agrear, actualizar o quitar definiciones de particiones.
  • Cambiar el propietario del recurso compartido.

Para actualizar recursos compartidos, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o los comandos SQL en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL. No puede usar Catalog Explorer para cambiar el nombre del recurso compartido.

Permisos necesarios: para actualizar el propietario del recurso compartido, debe ser uno de los siguientes: un administrador del metastore, el propietario del objeto de recurso compartido o un usuario con los privilegios USE SHARE y SET SHARE PERMISSION. Para actualizar el nombre del recurso compartido, debe ser un administrador del metastore (o un usuario con el privilegio CREATE_SHARE) y el propietario del recurso compartido. Debe ser el propietario para actualizar cualquier otra propiedad de recurso compartido.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.
  3. En la pestaña Recursos compartidos, busque el recurso compartido que desea actualizar y haga clic en su nombre.

En la página de detalles del recurso compartido, puede hacer esto:

  • Haga clic en el icono Editar situado junto al campo Propietario o Comentario para actualizar estos valores.
  • Haga clic en el botón de puntos suspensivos verticales puntos suspensivos verticales de una fila de recursos para quitarlo.
  • Haga clic en Administrar recursos > Editar recursos para actualizar todas las demás propiedades:
    • Para quitar un recurso, desactive la casilla situada junto al recurso.
    • Para agregar, actualizar o quitar definiciones de partición, haga clic en Opciones avanzadas.

Sql

Ejecute los siguientes comandos en un cuaderno o en el editor de Databricks SQL.

Cambiar el nombre de un recurso compartido:

ALTER SHARE <share-name> RENAME TO <new-share-name>;

Quitar tablas de un recurso compartido:

ALTER SHARE share_name REMOVE TABLE <table-name>;

Quitar volúmenes de un recurso compartido:

ALTER SHARE share_name REMOVE VOLUME <volume-name>;

Agregar o actualizar un comentario en un recurso compartido:

COMMENT ON SHARE <share-name> IS '<comment>';

Agregar o modificar particiones para una tabla en un recurso compartido:

ALTER SHARE <share-name> ADD TABLE <table-name> PARTITION(<clause>);

Cambiar el propietario del recurso compartido:

ALTER SHARE <share-name> OWNER TO  '<principal>'

-- Principal must be an account-level user email address or group name.

Habilitar el uso compartido del historial para una tabla:

ALTER SHARE <share-name> ADD TABLE <table-name> WITH HISTORY;

Para obtener más información sobre los parámetros ALTER SHARE, consulte ALTER SHARE.

Cli

Ejecute los comandos siguientes mediante la CLI de Databricks.

Cambiar el nombre de un recurso compartido:

databricks shares update <share-name> --name <new-share-name>

Quitar tablas de un recurso compartido:

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "REMOVE",
        "data_object": {
          "name": "<table-full-name>",
          "data_object_type": "TABLE",
          "shared_as": "<table-alias>"
        }
      }
    ]
  }'

Quitar volúmenes de un recurso compartido (mediante la CLI de Databricks 0.210 o posterior):

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "REMOVE",
        "data_object": {
          "name": "<volume-full-name>",
          "data_object_type": "VOLUME",
          "string_shared_as": "<volume-alias>"
        }
      }
    ]
  }'

Nota:

Use la propiedad name si no hay ningún alias para el volumen. Use string_shared_as si hay un alias.

Agregar o actualizar un comentario en un recurso compartido:

databricks shares update <share-name> --comment '<comment>'

Cambiar el propietario del recurso compartido:

databricks  shares update <share-name> --owner '<principal>'

La entidad de seguridad debe ser una dirección de correo electrónico de usuario de nivel de cuenta o un nombre de grupo.

Eliminación de un recurso compartido

Para eliminar un recurso compartido, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o el comando SQL DELETE SHARE en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL. Debe ser propietario del recurso compartido.

Al eliminar un recurso compartido, los destinatarios ya no pueden acceder a los datos compartidos.

Permisos necesarios: propietario del objeto de recurso compartido.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido por mí.
  3. En la pestaña Recursos compartidos, busque el recurso compartido que desea eliminar y haga clic en su nombre.
  4. Haga clic en el Menú kebab (también conocido como menú de tres puntos) y seleccione Eliminar.
  5. En el cuadro de diálogo de confirmación, haga clic en Eliminar.

Sql

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

DROP SHARE [IF EXISTS] <share-name>;

Cli

Ejecute el siguiente comando mediante la CLI de Databricks.

databricks shares delete <share-name>