Создание общих папок и управление ими для разностного общего доступа

В этой статье описывается создание общих папок и управление ими для разностного общего доступа.

Общая папка — это защищаемый объект в каталоге Unity, который можно использовать для совместного использования следующих ресурсов данных с одним или несколькими получателями:

  • Таблицы и секции таблиц
  • Представления, включая динамические представления, ограничивающие доступ на уровне строк и столбцов
  • Объемы
  • Записные книжки
  • Модели ИИ

Если вы используете всю схему (базу данных), получатель может получить доступ ко всем таблицам, представлениям, моделям и томам в схеме в данный момент, а также к любым ресурсам ИИ, добавленным в схему в будущем.

Общая папка может содержать ресурсы данных и ИИ только из одного хранилища метаданных каталога Unity. Вы можете добавлять или удалять данные и ресурсы ИИ из общей папки в любое время.

Дополнительные сведения см. в разделе "Общие папки", "Поставщики" и "Получатели".

Требования

Чтобы создать общую папку, необходимо:

  • Будьте администратором хранилища метаданных или иметь CREATE SHARE привилегии для хранилища метаданных каталога Unity, где зарегистрированы данные, к которым вы хотите предоставить общий доступ.
  • Создайте общую папку с помощью рабочей области Azure Databricks, в которую подключено хранилище метаданных каталога Unity.

Чтобы добавить таблицы или представления в общую папку, необходимо:

  • Будьте владельцем общей папки.
  • USE CATALOGUSE SCHEMA У вас есть права на каталог и схему, содержащие таблицу или представление, или владение каталогом или схемой.
  • SELECT У вас есть права на таблицу или представление. Чтобы таблица или представление продолжали предоставлять общий доступ, необходимо сохранить эту привилегию. Если вы потеряете его, получатель не может получить доступ к таблице или просмотру через общую папку. Поэтому Databricks рекомендует использовать группу в качестве владельца общей папки.

Чтобы добавить тома в общую папку, необходимо:

  • Будьте владельцем общей папки.
  • USE CATALOGUSE SCHEMA У вас есть права на каталог и схему, содержащие том, или владение каталогом или схемой.
  • У вас есть привилегии READ VOLUME на томе. Для продолжения общего доступа к тому необходимо сохранить эту привилегию. Если вы потеряете его, получатель не может получить доступ к тому через общую папку. Поэтому Databricks рекомендует использовать группу в качестве владельца общей папки.

Чтобы добавить модели в общую папку, необходимо:

  • Будьте владельцем общей папки.
  • USE CATALOGUSE SCHEMA У вас есть права на каталог и схему, содержащие модель, или владение каталогом или схемой.
  • EXECUTE У вас есть права на модель. Чтобы модель продолжала предоставлять общий доступ, необходимо сохранить эту привилегию. Если вы потеряете его, получатель не может получить доступ к модели через общую папку. Поэтому Databricks рекомендует использовать группу в качестве владельца общей папки.

Чтобы предоставить общий доступ ко всей схеме, необходимо:

  • Быть владельцем общего ресурса и владельцем схемы или иметь USE SCHEMA.
  • Чтобы предоставить общий доступ к таблицам, необходимо SELECT использовать схему.
  • На READ VOLUME схеме для общего доступа к томам.

Чтобы добавить файлы записной книжки в общую папку, необходимо:

  • Владелец общей папки и разрешение CAN READ в записной книжке.

Чтобы предоставить получателю доступ к общей папке, необходимо быть одним из следующих вариантов:

  • Администратор хранилища метаданных.
  • Пользователь с делегированными разрешениями или правами владения как на общей папке, так и на объекты получателя ((USE SHARE + SET SHARE PERMISSION) или владельца общей папки) И (USE RECIPIENT или владельца получателя).

Для просмотра общих папок необходимо быть одним из следующих:

  • Администратор хранилища метаданных (может просмотреть все)
  • Пользователь с привилегиями USE SHARE (может просмотреть все)
  • Владелец объекта общего ресурса

Требования к вычислениям:

  • Если вы используете записную книжку Databricks для создания общей папки, кластер должен использовать Databricks Runtime 11.3 LTS или более поздней версии и режим доступа к общему или однопользовательским кластерам.
  • Если вы используете инструкции SQL для добавления схемы в общую папку (или обновления или удаления схемы), необходимо использовать хранилище SQL или вычислительные ресурсы, работающие под управлением Databricks Runtime 13.3 LTS или более поздней версии. Выполнение этого же действия с помощью Обозреватель каталога не имеет требований к вычислению.

Создание объекта общего ресурса

Чтобы создать общую папку, можно использовать Обозреватель каталога, интерфейс командной строки каталога Databricks Unity или CREATE SHARE команду SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.

Необходимые разрешения: администратор хранилища метаданных или пользователь с CREATE SHARE привилегиями для хранилища метаданных.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".
  3. Щелкните "Общий доступ к данным".
  4. Введите имя общей папки и необязательный комментарий.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks:

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

Cli

Выполните следующую команду с помощью интерфейса командной строки Databricks.

databricks shares create <share-name>

Вы можете добавить --comment комментарий или --json добавить ресурсы в общую папку. Дополнительные сведения см. в следующих разделах.

Добавление таблиц в общую папку

Чтобы добавить таблицы в общую папку, можно использовать Обозреватель каталога, интерфейс командной строки каталога Databricks Unity или команды SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.

Необходимые разрешения: владелец объекта общей папки, а также USE SCHEMA в каталоге и схеме, USE CATALOG содержащей таблицу, и SELECT привилегии в таблице. Необходимо сохранить привилегию до тех пор, пока вы хотите предоставить общий SELECT доступ к таблице. Дополнительные сведения см. в разделе "Требования".

Примечание.

Если вы являетесь администратором рабочей области, и вы наследуете USE SCHEMA разрешения USE CATALOG на схему и каталог, содержащие таблицу из группы администрирования рабочей области, то нельзя добавить таблицу в общую папку. Сначала необходимо предоставить себе USE SCHEMA и USE CATALOG разрешения на схему и каталог.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".

  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".

  3. На вкладке "Общие папки " найдите общую папку, к которой нужно добавить таблицу, и щелкните ее имя.

  4. Нажмите кнопку " Управление ресурсами > " "Добавить ресурсы данных".

  5. На странице "Добавление таблиц" выберите всю схему (базу данных) или отдельные таблицы и представления.

    • Чтобы выбрать таблицу или представление, сначала выберите каталог, а затем схему, содержащую таблицу или представление, а затем саму таблицу или представление.

      Таблицы можно найти по имени, имени столбца или примечания с помощью поиска рабочей области. См. статью "Поиск объектов рабочей области".

    • Чтобы выбрать схему, сначала выберите каталог, а затем схему.

      Подробные сведения о схемах общего доступа см. в разделе "Добавление схем в общую папку".

  6. (Необязательно) Нажмите кнопку "Дополнительные параметры таблицы", чтобы указать следующие параметры. Псевдонимы и секции недоступны, если выбрать всю схему. Журнал таблиц включается по умолчанию, если выбрать всю схему.

    • Псевдоним: альтернативное имя таблицы, чтобы сделать имя таблицы более читаемым. Псевдоним — это имя таблицы, которое получатель видит и должен использовать в запросах. Получатели не могут использовать фактическое имя таблицы, если указан псевдоним.

    • Раздел. Общий доступ только к части таблицы. Например, (column = 'value'). См. раздел "Указание секций таблиц" для совместного использованиясвойств получателя для фильтрации секций.

    • Общий доступ к журналам. Предоставление общего доступа к журналу таблиц, чтобы разрешить получателям выполнять запросы на поездки по времени или читать таблицу с помощью структурированной потоковой передачи Spark. Требуется Databricks Runtime 12.2 LTS или более поздней версии.

      Примечание.

      Если в дополнение к выполнению запросов на поездки и потоковых операций чтения, вы хотите, чтобы клиенты могли запрашивать веб-канал изменений таблицы (CDF) с помощью функции table_changes() необходимо включить CDF в таблице , прежде чем поделиться ею WITH HISTORY.

  7. Нажмите кнопку Сохранить.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks, чтобы добавить таблицу:

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

Выполните следующую команду, чтобы добавить всю схему. Для ADD SCHEMA выполнения команды требуется хранилище SQL или вычислительные ресурсы, работающие под управлением Databricks Runtime 13.3 LTS или более поздней версии. Подробные сведения о схемах общего доступа см. в разделе "Добавление схем в общую папку".

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

Ниже приведены параметры. PARTITION и AS <alias> недоступны, если выбрать всю схему. WITH HISTORY По умолчанию для всех таблиц выбрано значение по умолчанию, если выбрать всю схему.

  • PARTITION(<clause>): если вы хотите предоставить общий доступ только к части таблицы, можно указать секцию. Например, см. разделы таблиц для совместного использования и использования свойств получателя для фильтрации секций. (column = 'value')

  • AS <alias>: альтернативное имя таблицы или псевдоним , чтобы сделать имя таблицы более читаемым. Псевдоним — это имя таблицы, которое получатель видит и должен использовать в запросах. Получатели не могут использовать фактическое имя таблицы, если указан псевдоним. Используйте формат <schema-name>.<table-name>.

  • WITH HISTORY или WITHOUT HISTORY: если WITH HISTORY указано, поделитесь таблицей с полным журналом, позволяя получателям выполнять запросы на поездки по времени и потоковое чтение. Поведением по умолчанию для общего доступа к таблицам является WITHOUT HISTORY общий доступ WITH HISTORYк схемам. Требуется Databricks Runtime 12.2 LTS или более поздней версии.

    Примечание.

    Если в дополнение к выполнению запросов на поездки и потоковых операций чтения, вы хотите, чтобы клиенты могли запрашивать веб-канал изменений таблицы (CDF) с помощью функции table_changes() необходимо включить CDF в таблице , прежде чем поделиться ею WITH HISTORY.

Дополнительные сведения о параметрах см. в ALTER SHARE разделе ALTER SHARE.

Cli

Чтобы добавить таблицу, выполните следующую команду с помощью интерфейса командной строки Databricks.

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

Чтобы добавить схему, выполните следующую команду Databricks CLI:

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

Примечание.

Для таблиц и только таблиц можно опустить "data_object_type".

Чтобы узнать о параметрах, перечисленных в этом примере, просмотрите инструкции на вкладке SQL.

Чтобы узнать о дополнительных параметрах, запустите databricks shares update --help или ознакомьтесь со статьей PATCH /api/2.1/unity-catalog/shares/ в справочнике по REST API.

Сведения об удалении таблиц из общей папки см. в разделе "Обновление общих папок".

Указание разделов таблиц для общего доступа

Чтобы предоставить общий доступ только к части таблицы при добавлении таблицы в общую папку, можно указать спецификацию секции. Можно указать секции при добавлении таблицы в общую папку или обновлении общей папки с помощью Обозреватель каталога Каталога Databricks или команд SQL в записной книжке Azure Databricks или редакторе запросов Databricks SQL. См. статью "Добавление таблиц в общую папку и обновление общих папок".

Простой пример

В следующем примере SQL используется часть данных в inventory таблице, секционированная yearmonthпо столбцам и date столбцам:

  • Данные за 2021 г.
  • Данные за декабрь 2020 г.
  • Данные за 25 декабря 2019 г.
ALTER SHARE share_name
ADD TABLE inventory
PARTITION (year = "2021"),
          (year = "2020", month = "Dec"),
          (year = "2019", month = "Dec", date = "2019-12-25");

Использование свойств получателя для фильтрации секций

Вы можете предоставить общий доступ к секции таблицы, которая соответствует свойствам получателя данных, также известному как параметризованный общий доступ к секциям.

К свойствам по умолчанию относятся:

  • databricks.accountId: учетная запись Azure Databricks, к которой принадлежит получатель данных (только databricks to Databricks).
  • databricks.metastoreId: хранилище метаданных каталога Unity, к которому принадлежит получатель данных (только databricks to Databricks).
  • databricks.name: имя получателя данных.

При создании или обновлении получателя можно создать любое настраиваемое свойство.

Фильтрация по свойству получателя позволяет совместно использовать одни и те же таблицы, используя одну и ту же общую папку для нескольких учетных записей Databricks, рабочих областей и пользователей, сохраняя границы данных между ними.

Например, если таблицы включают столбец идентификатора учетной записи Azure Databricks, можно создать одну общую папку с секциями таблиц, определенными идентификатором учетной записи Azure Databricks. При совместном использовании разностный общий доступ динамически предоставляет каждому получателю только данные, связанные с учетной записью Azure Databricks.

Схема динамического совместного использования секций на основе параметров в Delta Sharing

Без возможности динамического секционирования по свойству необходимо создать отдельную общую папку для каждого получателя.

Чтобы указать секцию, которая фильтрует свойства получателя при создании или обновлении общей папки, можно использовать Обозреватель каталога или CURRENT_RECIPIENT функцию SQL в записной книжке Azure Databricks или редакторе запросов SQL Databricks:

Примечание.

Свойства получателя доступны в Databricks Runtime 12.2 и выше.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".

  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".

  3. На вкладке "Общие папки " найдите общую папку, которую вы хотите обновить, и щелкните ее имя.

  4. Нажмите кнопку " Управление ресурсами > " "Добавить ресурсы данных".

  5. На странице "Добавление таблиц" выберите каталог и базу данных, содержащую таблицу, а затем выберите таблицу.

    Если вы не уверены, какой каталог и база данных содержат таблицу, его можно найти по имени, имени столбца или примечания с помощью поиска рабочей области. См. статью "Поиск объектов рабочей области".

  6. (Необязательно) Нажмите кнопку "Дополнительные параметры таблицы", чтобы добавить спецификации секции .

    В диалоговом окне "Добавление секции в таблицу" добавьте спецификацию секции на основе свойств с помощью следующего синтаксиса:

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

    Например,

    (country = CURRENT_RECIPIENT('country'))
    
  7. Нажмите кнопку Сохранить.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks:

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

Например,

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

Добавление таблиц с векторами удаления или сопоставлением столбцов в общую папку

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Векторы удаления — это функция оптимизации хранилища, которую можно включить в таблицах Delta. См. раздел " Что такое векторы удаления?".

Azure Databricks также поддерживает сопоставление столбцов для таблиц Delta. См. раздел "Переименование и удаление столбцов" с сопоставлением столбцов Delta Lake.

Чтобы предоставить общий доступ к таблице с векторами удаления или сопоставлением столбцов, необходимо предоставить ей общий доступ к журналу. См. раздел "Добавление таблиц в общую папку".

При совместном использовании таблицы с векторами удаления или сопоставлением столбцов получатели могут запрашивать таблицу с помощью хранилища SQL, кластера под управлением Databricks Runtime 14.1 или более поздней версии или вычислений, работающих открытый код delta-sharing-spark 3.1 или более поздней версии. См. статью "Чтение таблиц с включенными векторами удаления" или "Сопоставление столбцов" и "Чтение таблиц" с включенными векторами удаления или сопоставлением столбцов.

Добавление представлений в общую папку

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Представления — это объекты, доступные только для чтения, созданные из одной или нескольких таблиц или других представлений. Представление можно создать из таблиц и других представлений, содержащихся в нескольких схемах и каталогах в хранилище метаданных каталога Unity. См. статью "Создание представлений".

В этом разделе описывается добавление представлений в общую папку с помощью Обозреватель каталога, интерфейса командной строки Databricks или команд SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks. Если вы предпочитаете использовать REST API каталога Unity, ознакомьтесь со статьей PATCH /api/2.1/unity-catalog/shares/ в справочнике по REST API.

Необходимые разрешения: владелец объекта общего ресурса, а также USE SCHEMA в каталоге и схеме, USE CATALOG содержащей представление, и SELECT в представлении. Вы должны поддерживать привилегию до тех пор, пока вы хотите предоставить общий SELECT доступ к представлению. Дополнительные сведения см. в разделе "Требования".

Дополнительные требования:

  • Общий доступ к представлениям поддерживается только для общего доступа между Databricks.
  • Представления для общего доступа должны быть определены в таблицах Delta или в других представлениях для общего доступа.
  • Нельзя совместно использовать представления, ссылающиеся на общие таблицы или общие представления.
  • При добавлении представления в общую папку необходимо использовать хранилище SQL или кластер в Databricks Runtime 13.3 LTS или более поздней версии.
  • Требования и ограничения использования представлений получателей см. в разделе "Чтение общих представлений".

Добавление представлений в общую папку:

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".
  3. На вкладке "Общие папки " найдите общую папку, к которой нужно добавить представление, и щелкните его имя.
  4. Нажмите кнопку " Управление ресурсами > " "Добавить ресурсы данных".
  5. На странице "Добавление таблиц" найдите или найдите представление, которое нужно предоставить, и выберите его.
  6. (Необязательно) Нажмите кнопку "Дополнительные параметры таблицы", чтобы указать псевдоним или альтернативное имя представления, чтобы сделать его более читаемым. Псевдоним — это имя, которое видит получатель и должен использовать в запросах. Получатели не могут использовать фактическое имя представления, если указан псевдоним.
  7. Нажмите кнопку Сохранить.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks:

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

Возможные варианты:

  • AS <alias>: альтернативное имя представления или псевдоним, чтобы сделать его более читаемым. Псевдоним — это имя представления, которое видит получатель и должен использовать в запросах. Получатели не могут использовать фактическое имя представления, если указан псевдоним. Используйте формат <schema-name>.<view-name>.
  • COMMENT "<comment>": примечания отображаются в пользовательском интерфейсе каталога Обозреватель, а также при отображении сведений о представлении с помощью инструкций SQL.

Дополнительные сведения о параметрах см. в ALTER SHARE разделе ALTER SHARE.

Cli

Выполните следующую команду Databricks CLI:

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>" является необязательным и предоставляет альтернативное имя представления или псевдоним, чтобы сделать его более читаемым. Псевдоним — это имя представления, которое видит получатель и должен использовать в запросах. Получатели не могут использовать фактическое имя представления, если указан псевдоним. Используйте формат <schema-name>.<view-name>.

Чтобы узнать о дополнительных параметрах, запустите databricks shares update --help или ознакомьтесь со статьей PATCH /api/2.1/unity-catalog/shares/ в справочнике по REST API.

Сведения об удалении представлений из общей папки см. в разделе "Обновление общих папок".

Добавление динамических представлений в общую папку для фильтрации строк и столбцов

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Динамические представления можно использовать для настройки точного контроля доступа к табличным данным, в том числе:

  • Безопасность на уровне столбцов или строк.
  • Маскирование данных.

При создании динамического представления, использующего функцию CURRENT_RECIPIENT(), можно ограничить доступ получателя в соответствии с свойствами, указанными в определении получателя.

В этом разделе приведены примеры ограничения доступа получателей к табличным данным на уровне строки и столбца с помощью динамического представления.

Требования

  • Версия databricks Runtime: CURRENT_RECIPIENT функция поддерживается в Databricks Runtime 14.2 и выше.
  • Разрешения:
    • Чтобы создать представление, необходимо быть владельцем объекта общего ресурса и USE CATALOGUSE SCHEMA в каталоге и схеме, содержащей представление, SELECT а также в представлении. Вы должны поддерживать привилегию до тех пор, пока вы хотите предоставить общий SELECT доступ к представлению.
    • Чтобы задать свойства получателя, необходимо быть владельцем объекта получателя.
  • Ограничения: все ограничения для общего доступа к представлению, включая ограничение для общего доступа Databricks к Databricks, а также следующие:
    • Если поставщик предоставляет общий доступ к представлению, использующего CURRENT_RECIPIENT функцию, поставщик не может напрямую запрашивать представление из-за контекста общего доступа. Чтобы протестировать такое динамическое представление, поставщик должен поделиться представлением с собой и запросить представление в качестве получателя.
    • Поставщики не могут создать представление, которое ссылается на динамическое представление.

Установка свойства получателя

В этих примерах для общего доступа таблица имеет столбец с именем countryстолбца, а только получатели с соответствующим country свойством могут просматривать определенные строки или столбцы.

Свойства получателя можно задать с помощью команд каталога Обозреватель или SQL в записной книжке Azure Databricks или редакторе sql-запросов.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".
  3. На вкладке "Получатели" найдите получателя, к которому нужно добавить свойства, и щелкните его имя.
  4. Нажмите кнопку " Изменить свойства".
  5. В диалоговом окне "Изменить свойства получателя" введите имя столбца в качестве ключа (в данном случаеcountry) и значение, которое необходимо отфильтровать в качестве значения (например, CA).
  6. Нажмите кнопку Сохранить.

SQL

Чтобы задать свойство получателя, используйте ALTER RECIPIENT. В этом примере country для свойства задано CAзначение .

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

Создание динамического представления с разрешением на уровне строк для получателей

В этом примере только получатели с соответствующим country свойством могут просматривать определенные строки.

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

Другим вариантом является сохранение отдельной таблицы сопоставления, которая сопоставляет поля таблицы фактов с свойствами получателей, позволяя свойствам получателей и полям таблицы фактов отделиться для повышения гибкости.

Создание динамического представления с разрешением на уровне столбца для получателей

В этом примере только получатели, соответствующие свойству country , могут просматривать определенные столбцы. Другие пользователи видят возвращаемые данные следующим 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;

Предоставление общего доступа к динамическому представлению получателю

Чтобы предоставить общий доступ к динамическому представлению получателю, используйте те же команды SQL или процедуру пользовательского интерфейса, что и для стандартного представления. См. раздел "Добавление представлений в общую папку".

Добавление томов в общую папку

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Тома — это объекты каталога Unity, представляющие логический объем хранилища в расположении облачного хранилища объектов. Они предназначены в первую очередь для управления ресурсами не табличных данных. См. статью "Создание и работа с томами".

В этом разделе описывается добавление томов в общую папку с помощью Обозреватель каталога, командной строки Databricks или команд SQL в записной книжке Azure Databricks или редакторе SQL-запросов. Если вы предпочитаете использовать REST API каталога Unity, ознакомьтесь со статьей PATCH /api/2.1/unity-catalog/shares/ в справочнике по REST API.

Необходимые разрешения: владелец объекта общей папки, а также USE SCHEMA каталог и схема, USE CATALOG содержащие том, и READ VOLUME том. Вы должны поддерживать привилегию до тех пор, пока вы хотите предоставить общий READ VOLUME доступ к тому. Дополнительные сведения см. в разделе "Требования".

Дополнительные требования:

  • Совместное использование томов поддерживается только в databricks-to-Databricks.
  • При добавлении тома в общую папку необходимо использовать хранилище SQL версии 2023.50 или более поздней версии или кластер в Databricks Runtime 14.1 или более поздней.

Чтобы добавить тома в общую папку, выполните приведенные действия.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".

  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".

  3. На вкладке "Общие папки " найдите общую папку, к которой нужно добавить том, и щелкните его имя.

  4. Нажмите кнопку "Управление ресурсами", чтобы изменить ресурсы>.

  5. На странице "Изменение ресурсов" найдите или найдите том, который требуется предоставить, и выберите его.

    Кроме того, можно выбрать всю схему, содержащую том. См. раздел "Добавление схем в общую папку".

  6. (Необязательно) Нажмите кнопку "Дополнительные параметры ", чтобы указать альтернативное имя тома или псевдоним, чтобы сделать имя тома более читаемым.

    Псевдонимы недоступны, если выбрать всю схему.

    Псевдоним — это имя, которое видит получатель и должен использовать в запросах. Получатели не могут использовать фактическое имя тома, если указан псевдоним.

  7. Нажмите кнопку Сохранить.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks:

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

Возможные варианты:

  • AS <alias>: альтернативное имя тома или псевдоним, чтобы сделать имя тома более читаемым. Псевдоним — это имя тома, которое получатель видит и должен использовать в запросах. Получатели не могут использовать фактическое имя тома, если указан псевдоним. Используйте формат <schema-name>.<volume-name>.
  • COMMENT "<comment>": примечания отображаются в пользовательском интерфейсе каталога Обозреватель, а также при отображении сведений о томе с помощью инструкций SQL.

Дополнительные сведения о параметрах см. в ALTER SHARE разделе ALTER SHARE.

Cli

Выполните следующую команду с помощью Databricks CLI 0.210 или более поздней версии:

 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>" является необязательным и предоставляет альтернативное имя тома или псевдоним, чтобы сделать имя тома более читаемым. Псевдоним — это имя тома, которое получатель видит и должен использовать в запросах. Получатели не могут использовать фактическое имя тома, если указан псевдоним. Используйте формат <schema-name>.<volume-name>.

Чтобы узнать о дополнительных параметрах, запустите databricks shares update --help или ознакомьтесь со статьей PATCH /api/2.1/unity-catalog/shares/ в справочнике по REST API.

Сведения об удалении томов из общей папки см. в разделе "Обновление общих папок".

Добавление моделей в общую папку

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

В этом разделе описывается добавление моделей в общую папку с помощью Обозреватель каталога, командной строки Databricks или команд SQL в записной книжке Azure Databricks или редакторе SQL-запросов. Если вы предпочитаете использовать REST API каталога Unity, ознакомьтесь со статьей PATCH /api/2.1/unity-catalog/shares/ в справочнике по REST API.

Необходимые разрешения: владелец объекта общей папки, а также USE SCHEMA в каталоге и схеме, USE CATALOG содержащей модель, и EXECUTE в модели. Вы должны поддерживать привилегии до тех пор, пока вы хотите предоставить общий EXECUTE доступ к модели. Дополнительные сведения см. в разделе "Требования".

Дополнительные требования:

  • Совместное использование моделей поддерживается только в совместном доступе Databricks к Databricks.
  • При добавлении модели в общую папку необходимо использовать хранилище SQL версии 2023.50 или более поздней версии или кластер в Databricks Runtime 14.0 или более поздней.

Добавление моделей в общую папку:

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".

  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".

  3. На вкладке "Общие папки " найдите общую папку, к которой нужно добавить модель, и щелкните ее имя.

  4. Нажмите кнопку "Управление ресурсами", чтобы изменить ресурсы>.

  5. На странице "Изменение ресурсов" найдите или найдите модель, которую вы хотите предоставить, и выберите ее.

    Кроме того, можно выбрать всю схему, содержащую модель. См. раздел "Добавление схем в общую папку".

  6. (Необязательно) Нажмите кнопку "Дополнительные параметры ", чтобы указать альтернативное имя модели или псевдоним, чтобы сделать имя модели более читаемым.

    Псевдонимы недоступны, если выбрать всю схему.

    Псевдоним — это имя, которое видит получатель и должен использовать в запросах. Получатели не могут использовать фактическое имя модели, если указан псевдоним.

  7. Нажмите кнопку Сохранить.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks:

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

Возможные варианты:

  • AS <alias>: альтернативное имя модели или псевдоним, чтобы сделать имя модели более читаемым. Псевдоним — это имя модели, которое получатель видит и должен использовать в запросах. Получатели не могут использовать фактическое имя модели, если указан псевдоним. Используйте формат <schema-name>.<model-name>.
  • COMMENT "<comment>": примечания отображаются в пользовательском интерфейсе каталога Обозреватель и при отображении сведений о модели с помощью инструкций SQL.

Дополнительные сведения о параметрах см. в ALTER SHARE разделе ALTER SHARE.

Cli

Выполните следующую команду с помощью Databricks CLI 0.210 или более поздней версии:

 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>" является необязательным и предоставляет альтернативное имя модели или псевдоним, чтобы сделать имя модели более читаемым. Псевдоним — это имя модели, которое получатель видит и должен использовать в запросах. Получатели не могут использовать фактическое имя модели, если указан псевдоним. Используйте формат <schema-name>.<model-name>.

Чтобы узнать о дополнительных параметрах, запустите databricks shares update --help или ознакомьтесь со статьей PATCH /api/2.1/unity-catalog/shares/ в справочнике по REST API.

Сведения об удалении моделей из общей папки см. в разделе "Обновление общих папок".

Добавление схем в общую папку

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

При добавлении всей схемы в общую папку получатели будут иметь доступ не только ко всем ресурсам данных в схеме во время создания общей папки, но и к любым ресурсам, которые добавляются в схему с течением времени. Сюда входят все таблицы, представления и тома схемы. Эти таблицы всегда содержат полный журнал.

Для добавления, обновления или удаления схемы с помощью SQL требуется хранилище SQL или вычислительные ресурсы под управлением Databricks Runtime 13.3 LTS или более поздней версии. Выполнение этого же действия с помощью Обозреватель каталога не имеет требований к вычислению.

Необходимые разрешения: владелец объекта общего ресурса и владельца схемы (или пользователь с USE SCHEMASELECT привилегиями в схеме).

Чтобы добавить схему в общую папку, следуйте инструкциям в статье "Добавление таблиц в общую папку", обратите внимание на содержимое, указывающее, как добавить схему.

Псевдонимы таблиц, секции и псевдонимы томов недоступны, если выбрать всю схему. Если вы создали псевдонимы или секции для всех ресурсов в схеме, они удаляются при добавлении всей схемы в общую папку.

Если вы хотите указать дополнительные параметры для таблицы или тома, которым вы предоставляете общий доступ к схеме, необходимо предоставить общий доступ к таблице или тому с помощью SQL и предоставить псевдоним таблицы или тома с другим именем схемы.

Добавление файлов записной книжки в общую папку

Используйте Обозреватель каталога для добавления файла записной книжки в общую папку.

Примечание.

Чтобы предоставить общий доступ к записным книжкам, хранилище метаданных должно иметь хранилище на уровне метаданных.

Необходимые разрешения: владелец объекта общей папки и разрешение CAN READ в записной книжке, к которой вы хотите предоставить общий доступ.

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".

  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".

  3. На вкладке "Общие папки " найдите общую папку, к которой нужно добавить записную книжку, и щелкните ее имя.

  4. Щелкните "Управление ресурсами" и выберите "Добавить файл записной книжки".

  5. На странице "Добавить файл записной книжки" щелкните значок файла, чтобы найти записную книжку, которую вы хотите предоставить.

    Щелкните файл, к которому нужно предоставить общий доступ, и нажмите кнопку " Выбрать".

    (Необязательно) укажите понятный псевдоним для файла в поле "Общий доступ". Это идентификатор, который будут видеть получатели.

  6. Нажмите кнопку Сохранить.

Файл общей записной книжки теперь отображается в списке файлов записной книжки на вкладке "Ресурсы ".

Удаление файлов записной книжки из общих папок

Удаление файла записной книжки из общей папки:

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".
  3. На вкладке "Общие папки " найдите общую папку, содержащую записную книжку, и щелкните имя общей папки.
  4. На вкладке "Ресурсы" найдите файл записной книжки, который нужно удалить из общей папки.
  5. Меню Кебаб Щелкните меню кебаб (также называемое трехточиемным меню) справа от строки и выберите "Удалить файл записной книжки".
  6. В диалоговом окне подтверждения нажмите кнопку "Удалить".

Обновление файлов записной книжки в общих папках

Чтобы обновить записную книжку, к которой вы уже предоставили общий доступ, необходимо повторно добавить ее, предоставив ей новый псевдоним в поле "Общий доступ". Databricks рекомендует использовать имя, указывающее измененное состояние записной книжки, например <old-name>-update-1. Возможно, вам потребуется уведомить получателя об изменении. Получатель должен выбрать и клонировать новую записную книжку, чтобы воспользоваться преимуществами обновления.

Предоставление получателям доступа к общей папке

Чтобы предоставить общий доступ получателям, можно использовать Обозреватель каталога, интерфейс командной строки каталога Databricks Unity или GRANT ON SHARE команду SQL в записной книжке Azure Databricks или редакторе запросов SQL Databricks.

Необходимые разрешения: одно из следующих элементов:

  • Администратор хранилища метаданных.
  • Делегированные разрешения или владение как для общего ресурса, так и для объектов получателя ((USE SHARE + SET SHARE PERMISSION) или владельца общей папки) AND (USE RECIPIENT или владельца получателя).

Инструкции см. в разделе "Управление доступом к общим папкам данных Delta Sharing" (для поставщиков). В этой статье также объясняется, как отозвать доступ получателя к общей папке.

Просмотр общих папок и сведений о общих ресурсах

Чтобы просмотреть список общих папок или сведений о общей папке, можно использовать Обозреватель каталога Каталога Databricks или команды SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.

Необходимые разрешения: список возвращаемых общих папок зависит от роли и разрешений. Администраторы хранилища метаданных и пользователи с USE SHARE привилегиями видят все общие папки. В противном случае можно просмотреть только общие папки, для которых вы являетесь владельцем объекта общего доступа.

Вы сможете ознакомиться со следующими сведениями.

  • Владелец общей папки, создатель, метка времени создания, обновление, обновленная метка времени, комментарии.
  • Ресурсы данных в общей папке.
  • Получатели с доступом к общей папке.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".
  3. Откройте вкладку "Общие папки", чтобы просмотреть список общих папок.
  4. Просмотр сведений о общих ресурсах на вкладке "Сведения ".

SQL

Чтобы просмотреть список общих папок, выполните следующую команду в записной книжке или редакторе sql-запросов Databricks. При необходимости замените <pattern>предикатом LIKE.

SHOW SHARES [LIKE <pattern>];

Чтобы просмотреть сведения о определенной общей папке, выполните следующую команду.

DESCRIBE SHARE <share-name>;

Чтобы просмотреть сведения обо всех таблицах, представлениях и томах в общей папке, выполните следующую команду.

SHOW ALL IN SHARE <share-name>;

Cli

Чтобы просмотреть список общих папок, выполните следующую команду с помощью интерфейса командной строки Databricks.

databricks shares list

Чтобы просмотреть сведения о определенной общей папке, выполните следующую команду.

databricks shares get <share-name>

Просмотр получателей, имеющих разрешения на общую папку

Чтобы просмотреть список общих папок, к которым получателю предоставлен доступ, можно использовать Обозреватель каталога, интерфейс командной строки каталога Databricks Unity или SHOW GRANTS TO RECIPIENT команду SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.

Необходимые разрешения: администратор хранилища метаданных, USE SHARE привилегии или владелец объекта общего доступа.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".
  3. На вкладке "Общие папки " найдите и выберите получателя.
  4. Перейдите на вкладку "Получатели", чтобы просмотреть список получателей , которые могут получить доступ к общей папке.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks.

SHOW GRANTS ON SHARE <share-name>;

Cli

Выполните следующую команду с помощью интерфейса командной строки Databricks.

databricks shares share-permissions <share-name>

Обновление общих папок

Помимо добавления таблиц, представлений, томов и записных книжек в общую папку, можно:

  • Переименуйте общую папку.
  • Удаление таблиц, представлений, томов и схем из общей папки.
  • Добавьте или обновите комментарий к общей папке.
  • Включите или отключите доступ к данным журнала таблицы, позволяя получателям выполнять запросы на поездки по времени или потоковую передачу данных таблицы.
  • Добавление, обновление или удаление определений секций.
  • Измените владельца общей папки.

Чтобы сделать эти обновления общими папками, можно использовать Обозреватель каталога, интерфейс командной строки каталога Databricks Unity или команды SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks. Нельзя использовать Обозреватель каталога для переименования общей папки.

Необходимые разрешения. Чтобы обновить владельца общей папки, необходимо быть одним из следующих: администратор хранилища метаданных, владелец объекта общей папки или пользователь с правами и USE SHARESET SHARE PERMISSION правами. Чтобы обновить имя общей папки, необходимо быть администратором хранилища метаданных (или пользователем с привилегией) и владельцем CREATE_SHARE общего ресурса. Чтобы обновить другие свойства общего ресурса, необходимо быть владельцем.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".
  3. На вкладке "Общие папки " найдите общую папку, которую вы хотите обновить, и щелкните ее имя.

На странице сведений о общей папке можно выполнить следующее:

  • Щелкните значок редактирования рядом Значок с полем "Владелец" или "Комментарий", чтобы обновить эти значения.
  • Нажмите кнопку с многоточием по вертикали Вертикальный многоточие в строке ресурса, чтобы удалить ее.
  • Нажмите кнопку "Управление ресурсами>", чтобы обновить все остальные свойства:
    • Чтобы удалить ресурс, снимите проверка box рядом с ресурсом.
    • Чтобы добавить, обновить или удалить определения секций, нажмите кнопку "Дополнительные параметры".

SQL

Выполните следующие команды в записной книжке или редакторе Databricks SQL.

Переименование общей папки:

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

Удаление таблиц из общей папки:

ALTER SHARE share_name REMOVE TABLE <table-name>;

Удаление томов из общей папки:

ALTER SHARE share_name REMOVE VOLUME <volume-name>;

Добавьте или обновите комментарий к общей папке:

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

Добавление или изменение секций для таблицы в общей папке:

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

Изменение владельца общей папки:

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

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

Включите общий доступ к журналу для таблицы:

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

Дополнительные сведения о параметрах см. в ALTER SHARE разделе ALTER SHARE.

Cli

Выполните следующие команды с помощью интерфейса командной строки Databricks.

Переименование общей папки:

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

Удаление таблиц из общей папки:

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

Удалите тома из общей папки (с помощью Databricks CLI 0.210 или более поздней версии):

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

Примечание.

Используйте свойство, name если для тома нет псевдонима. Используйте string_shared_as , если есть псевдоним.

Добавьте или обновите комментарий к общей папке:

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

Изменение владельца общей папки:

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

Субъект должен быть адресом электронной почты пользователя на уровне учетной записи или именем группы.

Удаление общей папки

Чтобы удалить общую папку, можно использовать Обозреватель каталога, интерфейс командной строки каталога Databricks Unity или DELETE SHARE команду SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks. Вы должны быть владельцем общей папки.

При удалении общей папки получатели больше не могут получить доступ к общим данным.

Необходимые разрешения: общий доступ к владельцу объекта.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. В левой области разверните меню "Разностный общий доступ" и выберите "Общий доступ".
  3. На вкладке "Общие папки " найдите общую папку, которую вы хотите удалить, и щелкните ее имя.
  4. Меню Кебаб Щелкните меню кебаб (также известное как трехточное меню) и выберите "Удалить".
  5. В диалоговом окне подтверждения нажмите кнопку "Удалить".

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks.

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

Cli

Выполните следующую команду с помощью интерфейса командной строки Databricks.

databricks shares delete <share-name>