Registros

Antes de adicionar um modelo, oferta de dados ou outro recurso a uma colaboração, você deve registrar o recurso em um registro. Um registro é um contêiner de nível de conta que armazena recursos. Após o registro de um recurso, ele pode ser adicionado a uma colaboração por qualquer pessoa em sua conta que tenha acesso a ele. Os registros não estão vinculados a uma colaboração específica, mas os recursos no registro podem ser vinculados a zero ou mais colaborações nessa conta.

Cada conta Snowflake é compatível com um registro padrão. Você pode criar registros personalizados adicionais para sua conta. Os registros personalizados são uma boa maneira de agrupar e gerenciar o acesso aos seus recursos. Por exemplo, você pode criar um registro personalizado para dados de vendas e outro para dados de despesas e, em seguida, conceder acesso a esses registros aos usuários apropriados por meio de funções RBAC.

Aqui estão as principais regras sobre registros:

  • Cada registro personalizado é compatível com um único tipo de recurso (modelo, oferta de dados, etc.). O tipo de dados é especificado ao criar o registro. O registro padrão é compatível com todos os tipos de recursos.

  • Não há limite para o número de registros personalizados que você pode criar em uma conta.

  • Ao registrar um recurso, você pode usar o parâmetro de nome de registro opcional para especificar um registro personalizado. Se você não especificar um registro personalizado, o recurso será registrado no registro padrão da conta.

  • Todos os usuários têm acesso ao registro padrão de uma conta. Os registros personalizados, no entanto, são inicialmente privados para o criador, e usuários adicionais devem ter o acesso concedido explicitamente pela chamada de GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE.

  • Uma conta pode ter vários registros que armazenam o mesmo tipo de recurso.

  • Os registros não têm um número máximo de recursos.

  • Um recurso deve ter um nome exclusivo em todos os registros dessa conta para recursos desse tipo. Por exemplo, você pode ter um modelo chamado sales e uma oferta de dados chamada sales na mesma conta, mas não dois modelos chamados sales no mesmo registro ou em registros diferentes na mesma conta. O nome do recurso é definido como o valor name de nível mais alto na especificação.

  • Quando você vincula um recurso a uma colaboração, ele fica visível para qualquer pessoa que possa acessá-lo de acordo com a especificação. Não é necessário acesso ao registro contido.

  • Se duas contas diferentes registrarem recursos com o mesmo nome e tipo, isso será permitido. A especificação de colaboração mostrará recursos com nomes idênticos, mas o sistema saberá qual recurso é o pretendido; o recurso com esse nome é utilizado da conta que adicionou o recurso à colaboração.

Exemplo

Este exemplo cria um registro personalizado, registra uma oferta de dados nele e concede acesso de leitura a esse registro por meio de uma nova função.

-- Create a custom registry that can hold data offerings.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.CREATE_REGISTRY(
  'SALES',
  'DATA_OFFERING'
);

-- Add a data offering to the custom registry.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.REGISTER_DATA_OFFERING(
  'SALES',
  $$
  api_version: 2.0.0
  spec_type: data_offering
  version: v1
  name: FL_SALES
  datasets:
   - alias: customers_1
     data_object_fqn: SALES_DB.PUBLIC.FL_DATA
     allowed_analyses: template_only
     schema_and_template_policies:
       company_name:
         category: passthrough
       total_sales:
         category: passthrough
  $$
);

-- Create a role and grant it access to the registry.
CREATE ROLE MARKETING_USERS;
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.ADMIN.GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE(
  'READ',
  'REGISTRY',
  $collaboration_name,
  'MARKETING_USERS'
);

-- Grant access to the registry for a user by assigning the role.
GRANT ROLE MARKETING_USERS to USER willy_loman;
Copy