Consultar uma tabela no Snowflake Open Catalog usando o Snowflake¶
Para consultar uma tabela registrada no Snowflake Open Catalog usando o Snowflake, você pode criar uma tabela Apache Iceberg™ que usa um catálogo externo.
A tabela representa a tabela Iceberg no Snowflake Open Catalog e fornece acesso somente leitura.
Pré-requisitos¶
Antes de começar, você precisa do seguinte:
Uma tabela Iceberg registrada com Open Catalog.
Uma conexão de serviço que o Snowflake pode usar para se conectar ao Open Catalog. Você pode usar uma conexão de serviço existente para a qual definiu funções e privilégios ou Configurar uma conexão de serviço para o Snowflake. Se você configurar uma nova conexão de serviço, também deverá configurar o controle de acesso para ela.
Etapa 1: criar um volume externo no Snowflake¶
Se você ainda não tiver um, comece criando um volume externo no Snowflake que forneça acesso ao local de armazenamento em nuvem onde você armazena os dados da tabela e os metadados.
Siga as instruções para o seu serviço de armazenamento em nuvem:
Etapa 2: criar uma integração de catálogo para o Open Catalog¶
Em seguida, use o comando CREATE CATALOG INTEGRATION para criar uma integração de catálogo no Snowflake que use OAuth para se conectar ao Open Catalog usando suas credenciais de conexão de serviço. O parâmetro CATALOG_NAMESPACE é opcional. No entanto, se você não o especificar com a integração do catálogo, deverá especificá-lo ao criar uma tabela gerenciada externamente. Esta seção inclui os seguintes exemplos:
Se você não usar a conectividade privada para o tráfego de rede de entrada no Open Catalog, consulte o exemplo de integração do catálogo Snowflake que usa a Internet pública.
Se você usar a conectividade privada para o tráfego de rede de entrada no Open Catalog, consulte o exemplo de integração do catálogo Snowflake que usa um endereço IP privado.
Exemplo: integração de catálogo que usa a Internet pública¶
CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE= 'myOpenCatalogNamespace'
REST_CONFIG = (
CATALOG_URI = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com/polaris/api/catalog'
CATALOG_NAME = 'myOpenCatalogName'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'my-client-id'
OAUTH_CLIENT_SECRET = 'my-client-secret'
OAUTH_ALLOWED_SCOPES = ( 'PRINCIPAL_ROLE:ALL' )
)
ENABLED = TRUE;
Nota
Para encontrar o nome de sua organização Snowflake (
<orgname>
), siga as etapas em Como encontrar o nome da conta e organização de uma conta.Para encontrar
<my-snowflake-open-catalog-account-name
, consulte Encontre o nome de uma conta do Snowflake Open Catalog na documentação de Snowflake Open Catalog.
Exemplo: integração do catálogo que usa um endereço IP privado¶
CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE= 'myOpenCatalogNamespace'
REST_CONFIG = (
CATALOG_URI = 'https://<open_catalog_privatelink_account_url>/polaris/api/catalog'
CATALOG_API_TYPE = PRIVATE
CATALOG_NAME = 'myOpenCatalogName'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'my-client-id'
OAUTH_CLIENT_SECRET = 'my-client-secret'
OAUTH_ALLOWED_SCOPES = ( 'PRINCIPAL_ROLE:ALL' )
)
ENABLED = TRUE;
Nota
Para <open_catalog_privatelink_account_url>
, digite um dos seguintes valores:
PrivateLink Account URL
Regionless PrivateLink Account URL
Para obter esses valores, recupere as configurações de sua conta do Open Catalog para conectividade privada. Para obter detalhes, consulte as instruções da plataforma de nuvem onde sua conta do Open Catalog está hospedada:
Etapa 3: criar uma tabela gerenciada externamente¶
Crie uma tabela Iceberg no Snowflake usando o volume externo e a integração de catálogo que você configurou anteriormente.
Para CATALOG_TABLE_NAME, especifique o nome da tabela como ele aparece no Open Catalog.
CREATE ICEBERG TABLE open_catalog_iceberg_table
CATALOG = 'open_catalog_int'
EXTERNAL_VOLUME = 'my_external_volume'
CATALOG_TABLE_NAME = 'my_iceberg_table';
Opcionalmente, você pode habilitar atualizações automatizadas dos metadados da tabela especificando AUTO_REFRESH = TRUE
. Para obter mais informações, consulte Atualizar tabelas Apache Iceberg™ automaticamente. Se você não tiver especificado um CATALOG_NAMESPACE com a integração de catálogo criada na etapa anterior, deverá especificar esse parâmetro para definir um namespace de catálogo para a tabela.
Nota
Para recuperar uma lista de tabelas ou namespaces em seu catálogo remoto, é possível usar as seguintes funções:
Etapa 4: consulte a tabela usando o Snowflake¶
Agora você pode usar o Snowflake para consultar a tabela no Open Catalog. Você também pode unir os resultados da consulta com outras tabelas do Snowflake.
SELECT id, date
FROM open_catalog_iceberg_table
LIMIT 10;