Разностный общий доступ (Databricks SQL)

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

Существуют три компонента функции разностного общего доступа:

  • Поставщики

    Поставщик — это организация, которая сделала данные общедоступными.

  • Общие папки

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

  • Recipients

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

Подробное руководство по использованию Delta Sharing см. в статье Delta Sharing под управлением Azure Databricks.

Поставщики

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

  • настроить локальное имя поставщика с помощью команды ALTER PROVIDER;
  • отобразить список наборов данных, к которым вам предоставлен доступ с помощью команды SHOW SHARE IN PROVIDER;
  • создать каталог с использованием общих папок, представляющих интерес для вас, с помощью команды CREATE CATALOG.

Требуется:хранилище SQL версии 2022.30 или выше. Эта версия доступна в канале предварительной версии.

Примеры

-- Change the data provider name locally.
> ALTER PROVIDER `Center for Disease Control` RENAME TO cdc;

-- List the shares the provider has granted you access too.
> SHOW SHARES IN PROVIDER cdc;
 vaccinedata

-- Make the share accessible locally as a catalog.
> CREATE CATALOG cdcdata USING cdc.vaccinedata;

-- Use the data.
> USE CATALOG cdcdata;
> SELECT COUNT(*) FROM information_schema.tables;
  10

Общие папки

Общая папка — это контейнер, экземпляр которого создается с помощью команды CREATE SHARE. После этого с помощью команды ALTER SHARE вы можете периодически регистрировать коллекцию таблиц, определенных в хранилище метаданных. Таблицы можно регистрировать с их исходными именами и схемами или назначить для них другие отображаемые имена.

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

Примеры

-- Create share `customer_share` only if share with same name doesn't exist, with a comment.
> CREATE SHARE IF NOT EXISTS customer_share COMMENT 'This is customer share';

-- Add 2 tables to the share.
-- Expose my_schema.tab1 a different name.
-- Expose only two partitions of other_schema.tab2
> ALTER SHARE customer_share ADD TABLE my_schema.tab1 AS their_schema.tab1;
> ALTER SHARE customer_share ADD TABLE other_schema.tab2 PARTITION (c1 = 5), (c1 = 7);

-- List the content of the share
> SHOW ALL IN SHARE customer_share;
  name              type  shared_object           added_at                     added_by                   comment partitions
  ----------------- ----  ---------------------- ---------------------------- -------------------------- ------- -----------------
  other_schema.tab2 TABLE main.other_schema.tab2 2022-01-01T00:00:01.000+0000 alwaysworks@databricks.com NULL
  their_schema.tab1 TABLE main.myschema.tab2     2022-01-01T00:00:00.000+0000 alwaysworks@databricks.com NULL   (c1 = 5), (c1 = 7)

Recipients

Получатель — это объект, создаваемый с помощью команды CREATE RECIPIENT. Он представляет собой организацию, которой требуется разрешить доступ к общим папкам. При создании получателя генерируется ссылка активации, которую можно предоставить организации. Получить эту ссылку можно с помощью команды DESCRIBE RECIPIENT.

После создания получателя вы можете предоставить ему права SELECT для доступа к выбранным вами общим папкам, используя для этого команду GRANT ON SHARE.

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

Примеры

-- Create a recipient.
> CREATE RECIPIENT IF NOT EXISTS other_org COMMENT 'other.org';

-- Retrieve the activation link to send to other.org
> DESCRIBE RECIPIENT other_org;
  name      created_at                   created_by                 comment   activation_link active_token_id                      active_token_expiration_time rotated_token_id rotated_token_expiration_time
  --------- ---------------------------- -------------------------- --------- --------------- ------------------------------------ ---------------------------- ---------------- -----------------------------
  other_org 2022-01-01T00:00:00.000+0000 alwaysworks@databricks.com other.org https://....    0160c81f-5262-40bb-9b03-3ee12e6d98d7 9999-12-31T23:59:59.999+0000 NULL              NULL

-- Choose shares that other.org has access to
> GRANT SELECT ON SHARE customer_share TO RECIPIENT other_org;