Tutorial: Exemplo de conector Java Snowflake Native SDK for Connectors

Introdução

Bem-vindo ao nosso tutorial sobre um exemplo de conector criado usando Snowflake Native SDK for Connectors. Este guia mostrará a você como criar, implantar, instalar e configurar um conector de exemplo.

O aplicativo de exemplo fornecido ingere dados de problemas do GitHub, conectando-se ao GitHub API para extrair informações sobre problemas dos repositórios especificados.

Neste tutorial você aprenderá a:

  • Criar um exemplo de conector a partir de fontes

  • Implantar um novo pacote e versão de aplicativo

  • Instalar uma nova instância de aplicativo

  • Configurar a instância do conector para ingerir dados

Pré-requisitos

Antes de começar, certifique-se de que você atende aos seguintes requisitos:

  • Conhecimento básico de Java

  • Conhecimento básico de Snowflake Native Apps

  • Conhecimento básico de Streamlit UI

  • Acesso a uma conta Snowflake com uma função ACCOUNTADMIN

  • Conta GitHub com a qual é possível criar aplicativos GitHub

  • MacOS ou Linux para criar o projeto e executar os scripts de implantação

Prepare seu ambiente local

Antes de continuar, você precisa se certificar de que todo o software necessário está instalado em seu computador e clonar o repositório do conector de exemplo.

Instalação do Java

Snowflake Native SDK for Connectors requer o Java LTS (Long-Term Support) versão 11 ou superior. Se a versão mínima exigida do Java não estiver instalada em seu computador, você deverá instalar o Oracle Java ou o OpenJDK.

Oracle Java

A versão mais recente do JDK do LTS é gratuita para download e uso, sem custo, sob o Oracle NFTC. Para obter instruções de download e instalação, acesse a página Oracle.

OpenJDK

OpenJDK é uma implementação de código aberto do Java. Para obter instruções de download e instalação, acesse openjdk.org e jdk.java.net.

Você também pode usar uma versão OpenJDK de terceiros, como Eclipse Temurin ou Amazon Corretto.

Clonagem de repositório

Clone o repositório connectors-native-sdk em seu computador.

Configuração do Snowflake CLI

A ferramenta Snowflake CLI é necessária para criar, implantar e instalar o conector. Se você não tiver o Snowflake CLI em seu computador, instale-o conforme as instruções disponíveis aqui.

Após a instalação da ferramenta, você precisa configurar uma conexão com o Snowflake no arquivo de configuração.

Se você não tiver nenhuma conexão configurada, crie uma nova conexão chamada native_sdk_connection. Você pode encontrar um exemplo de conexão no arquivo deployment/snowflake.toml.

Se você já tiver uma conexão configurada e quiser usá-la com o conector, use o nome dela em vez de native_sdk_connection sempre que essa conexão for usada neste tutorial.

Estrutura do projeto

O projeto Snowflake Native SDK for Connectors consiste em dois elementos principais.

Connectors Native SDK Java

O diretório connectors-native-sdk-java contém todo o código Java do Snowflake Native SDK for Connectors, com testes de unidade e integração para os componentes do SDK. Devido à natureza dos Native Apps dentro do Snowflake, isso significa não apenas o código Java, mas também o código SQL, que é necessário para criar um aplicativo funcional. As definições dos objetos do banco de dados podem ser encontradas no diretório src/main/resources. Esses arquivos são usados durante a criação de um aplicativo para personalizar os objetos que estarão disponíveis dentro do aplicativo. No conector de exemplo, usamos o arquivo all.sql, que cria objetos para todos os recursos disponíveis. Esse arquivo será executado durante o processo de instalação da instância do aplicativo.

Connectors Native SDK Test Java

O diretório connectors-native-sdk-test-java contém o código-fonte de uma biblioteca auxiliar usada em testes de unidade, por exemplo, objetos usados para simular componentes específicos, asserções personalizadas etc. Esses arquivos não fazem parte do aplicativo conector.

Exemplo de conector Java GitHub

O conector de exemplo real está localizado no diretório examples/connectors-native-sdk-example-java-github-connector. O diretório app/ contém todos os arquivos necessários para executar o Native App:

  • O diretório app/streamlit/ contém os arquivos de origem necessários para executar a Streamlit UI do conector.

  • O arquivo setup.sql é executado durante a instalação do aplicativo e é responsável por criar os objetos de banco de dados necessários. Esse arquivo executará o arquivo all.sql mencionado anteriormente, bem como algum código sql personalizado.

  • O arquivo manifest.yml é o manifesto do Native App. É necessário criar um pacote de aplicativo e, em seguida, a própria instância do aplicativo. Esse arquivo especifica as propriedades do aplicativo, bem como as permissões necessárias para o aplicativo.

Além disso, o diretório examples/connectors-native-sdk-example-java-github-connector contém o subdiretório src/, que contém a lógica do conector personalizado, como a implementação das classes necessárias e as personalizações dos componentes padrão do SDK.

Modelo de Connectors Native SDK

Um modelo de projeto Java do Gradle que usa Snowflake Native SDK for Connectors como uma dependência para ajudá-lo a criar rapidamente um novo conector. Você pode ler mais sobre isso em Tutorial: Modelo de conector Java Snowflake Native SDK for Connectors.

Desenvolvimento, implementação e instalação

As seções a seguir mostrarão como criar, implantar e instalar o conector de exemplo.

Desenvolvimento do conector

O desenvolvimento de um conector criado usando Snowflake Native SDK for Connectors é um pouco diferente do desenvolvimento de um aplicativo Java típico. Há algumas coisas que precisam ser feitas além de apenas criar os arquivos .jar a partir dos códigos-fonte. O desenvolvimento do aplicativo consiste nas seguintes etapas:

  1. Cópia de componentes internos personalizados para o diretório de desenvolvimento

  2. Cópia dos componentes do SDK para o diretório de desenvolvimento

Cópia dos componentes internos

Essa etapa cria o arquivo .jar do conector e o copia (juntamente com os arquivos UI, de manifesto e configuração) para o diretório sf_build.

Para executar essa etapa, execute o comando: ./gradlew copyInternalComponents.

Cópia dos componentes SDK

Esta etapa copia o arquivo SDK .jar (adicionado como uma dependência ao módulo Gradle do conector) para o diretório sf_build e extrai os arquivos .sql agrupados do arquivo .jar.

Esses arquivos .sql permitem a personalização de quais objetos fornecidos serão criados durante a instalação do aplicativo. Para os usuários iniciantes, a personalização não é recomendada, pois a omissão de objetos pode fazer com que alguns recursos falhem se forem feitos incorretamente. O aplicativo do conector de exemplo usa o arquivo all.sql, que cria todos os objetos SDK recomendados.

Para executar essa etapa, execute o comando: ./gradlew copySdkComponents.

Implantação do conector

Para implantar um Native App, um pacote de aplicativo precisa ser criado dentro do Snowflake. Depois disso, todos os arquivos do diretório sf_build precisam ser carregados no Snowflake.

Observe que, para fins de desenvolvimento, a criação de versões é opcional; uma instância de aplicativo pode ser criada diretamente a partir de arquivos preparados. Essa abordagem permite que você veja as alterações na maioria dos arquivos do conector sem recriar a versão e a instância do aplicativo.

As seguintes operações serão realizadas:

  1. Criação de um novo pacote de aplicativo, se ele ainda não existir

  2. Criação de um esquema e um estágio de arquivo dentro do pacote

  3. Carregamento dos arquivos do diretório sf_build para o estágio (essa etapa pode levar algum tempo)

Para implantar o conector, execute o comando: snow app deploy --connection=native_sdk_connection.

Para obter mais informações sobre o comando snow app deploy, consulte snow app deploy.

O pacote de aplicativo criado agora estará visível na guia App packages, na categoria Data products, na Snowflake UI de sua conta.

Visualização de pacotes de aplicativo

Instalação do conector

A instalação do aplicativo é a última etapa do processo. Ele cria um aplicativo a partir do pacote de aplicativo criado anteriormente.

Para instalar o conector, execute o comando: snow app run --connection=native_sdk_connection.

Para obter mais informações sobre o comando snow app run, consulte snow app run.

O aplicativo instalado agora estará visível na guia Installed apps, na categoria Data products, no Snowflake UI de sua conta.

Visualização de aplicativos instalados

Atualização dos arquivos do conector

Se, em algum momento, você desejar modificar algum dos arquivos do conector, poderá carregar facilmente os arquivos modificados no estágio do pacote do aplicativo. O comando de upload depende de quais arquivos foram atualizados.

Antes de executar qualquer um dos comandos de atualização, você deverá copiar os novos arquivos do seu conector para o diretório sf_build executando: ./gradlew copyInternalComponents

Arquivos UI .py ou arquivos do conector .java

Use o comando snow app deploy --connection=native_sdk_connection, a instância atual do aplicativo usará os novos arquivos sem reinstalação.

Arquivos setup.sql ou manifest.yml

Use o comando snow app run --connection=native_sdk_connection. A instância atual do aplicativo será reinstalada depois que os novos arquivos forem carregados no estágio.

Fluxo do conector

Antes de passarmos à configuração do conector e à ingestão dos dados, devemos dar uma olhada rápida em como o conector realmente funciona. Abaixo, você pode ver todas as etapas que serão concluídas nos próximos passos deste tutorial. O ponto de partida será concluir os pré-requisitos e passar pelo assistente.

O estágio do assistente do conector orienta os usuários em todas as configurações necessárias para o conector. O estágio Uso diário permite que o usuário visualize estatísticas, configure repositórios para ingestão e pause/retome o conector.

Visão geral do fluxo de conectores

Assistente de configuração

Depois de abrir o aplicativo, a página da UI do assistente será aberta. O conector precisa de algumas informações fornecidas pelo usuário antes de começar a ingerir dados. O assistente guiará você por todas as etapas necessárias no próprio aplicativo, mas também em toda a conta do Snowflake e, às vezes, até mesmo no sistema externo que será a fonte dos dados ingeridos, neste caso, GitHub. Depois que todas essas etapas forem concluídas, o conector estará pronto para começar a ingerir os dados.

Pré-requisitos

A primeira etapa do assistente são os pré-requisitos. Esta etapa fornecerá a você uma lista de itens que devem ser preparados antes de configurar o conector. A conclusão dos pré-requisitos não é obrigatória, mas é recomendada para garantir um processo de configuração mais tranquilo posteriormente.

No caso do exemplo do conector GitHub, há duas coisas que precisam ser resolvidas antes de prosseguir:

  1. Preparação de uma conta GitHub

  2. Confirmação do acesso aos repositórios GitHub que você deseja ingerir

Pré-requisitos

Configuração do conector

A próxima etapa do assistente é a configuração do conector. Essa etapa permite que o usuário:

  • Conceda privilégios de aplicativos, que são solicitados usando o Native Apps Permission SDK

  • Escolha um warehouse que será referenciado ao programar tarefas de ingestão

  • Escolha o banco de dados e o esquema de destino para os dados que serão ingeridos

Privilégios

O aplicativo requer duas permissões de nível de conta para funcionar: CREATE DATABASE e EXECUTE TASK.

O primeiro privilégio é necessário para criar um banco de dados de destino para os dados ingeridos. Esse banco de dados deve ser criado fora do aplicativo, de modo que os dados ingeridos possam permanecer intactos se o aplicativo for desinstalado. No entanto, este exemplo não oferece suporte a esse recurso, um novo banco de dados é sempre criado.

O segundo privilégio é necessário para agendar tarefas periódicas que buscarão os dados no GitHub e os salvarão no banco de dados de destino.

A concessão desses privilégios pode ser feita usando a guia de segurança ou pressionando o botão Grant privileges na tela de configuração do conector. A última opção resultará na exibição de um pop-up na tela.

Privilégios

Referência do warehouse

O conector exige um warehouse para executar e programar tarefas de ingestão. O aplicativo usará o warehouse por meio de uma referência. A referência do warehouse é definida no arquivo manifest.yml:

references:
  - WAREHOUSE_REFERENCE:
      label: "Warehouse used for ingestion"
      description: "Warehouse which will be used to schedule ingestion tasks"
      privileges: [USAGE]
      object_type: WAREHOUSE
      register_callback: PUBLIC.REGISTER_REFERENCE
Copy

A referência pode ser definida usando a guia de segurança, da mesma forma que os privilégios acima, ou pressionando o botão Choose warehouse.

Referência do warehouse

Banco de dados e esquema de destino

Como mencionado anteriormente, o conector requer um banco de dados para armazenar os dados ingeridos. Esse banco de dados será criado, em uma etapa posterior, com o esquema especificado pelo usuário. O nome do banco de dados fica a critério do usuário, desde que o banco de dados fornecido ainda não exista.

A tela de configuração do conector concluída será semelhante a esta:

Tela de configuração do conector

Configuração de conexão

A próxima etapa do assistente é a configuração da conexão. Essa etapa permite que o usuário configure a conexão com uma fonte de dados externa. Recomendamos o uso da autenticação OAuth2 sempre que possível, em vez de usar usuário/senha ou tokens de texto simples.

O GitHub atualmente oferece suporte a duas formas de autenticação OAuth2: aplicativos OAuth e aplicativos GitHub. Aplicativos OAuth são um pouco mais fáceis de configurar e usar, mas não oferecem o mesmo nível de granularidade de controle de permissões. Recomendamos o uso de um aplicativo GitHub para este exemplo; no entanto, se você desejar usar um aplicativo OAuth, o conector ainda funcionará como pretendido.

Configuração do Permission SDK

A autenticação OAuth2 exige que uma integração de segurança, um segredo e uma integração de acesso externo sejam criados na conta do usuário. Nosso conector usa o Native Apps Permission SDK para solicitar a criação desses objetos.

As referências para a integração de acesso externo e o segredo, que são necessários para o conector, são definidos no arquivo manifest.yml:

references:
  - GITHUB_EAI_REFERENCE:
      label: "GitHub API access integration"
      description: "External access integration that will enable connection to the GitHub API using OAuth2"
      privileges: [USAGE]
      object_type: "EXTERNAL ACCESS INTEGRATION"
      register_callback: PUBLIC.REGISTER_REFERENCE
      configuration_callback: PUBLIC.GET_REFERENCE_CONFIG
  - GITHUB_SECRET_REFERENCE:
      label: "GitHub API secret"
      description: "Secret that will enable connection to the GitHub API using OAuth2"
      privileges: [READ]
      object_type: SECRET
      register_callback: PUBLIC.REGISTER_REFERENCE
      configuration_callback: PUBLIC.GET_REFERENCE_CONFIG
Copy

Além disso, um procedimento especial precisa ser adicionado ao arquivo setup.sql. Ele é referenciado na propriedade configuration_callback para cada uma das referências apresentadas acima:

CREATE OR REPLACE PROCEDURE PUBLIC.GET_REFERENCE_CONFIG(ref_name STRING)
    RETURNS STRING
    LANGUAGE SQL
    AS
        BEGIN
            CASE (ref_name)
                WHEN 'GITHUB_EAI_REFERENCE' THEN
                    RETURN OBJECT_CONSTRUCT(
                        'type', 'CONFIGURATION',
                        'payload', OBJECT_CONSTRUCT(
                            'host_ports', ARRAY_CONSTRUCT('api.github.com'),
                            'allowed_secrets', 'LIST',
                            'secret_references', ARRAY_CONSTRUCT('GITHUB_SECRET_REFERENCE')
                        )
                    )::STRING;
                WHEN 'GITHUB_SECRET_REFERENCE' THEN
                    RETURN OBJECT_CONSTRUCT(
                        'type', 'CONFIGURATION',
                        'payload', OBJECT_CONSTRUCT(
                            'type', 'OAUTH2',
                            'security_integration', OBJECT_CONSTRUCT(
                                'oauth_scopes', ARRAY_CONSTRUCT('repo'),
                                'oauth_token_endpoint', 'https://github.com/login/oauth/access_token',
                                'oauth_authorization_endpoint', 'https://github.com/login/oauth/authorize'
                            )
                        )
                    )::STRING;
                ELSE
                    RETURN '';
            END CASE;
        END;
Copy

Para a referência de integração de acesso externo, o procedimento fornece:

  • host_ports - nomes de host da fonte de dados externa, que serão acessados durante a ingestão

  • secret_references - matriz de nomes de referências a segredos do OAuth

  • allowed_secrets - LIST, informando ao Permission SDK para usar os segredos especificados no campo secret_references

Para a referência de segredo, o procedimento fornece:

  • type - OAUTH2 no caso de nosso segredo

  • security_integration - propriedades da integração de segurança criada:

    • oauth_scopes - uma lista de escopos OAuth solicitados pelo conector (se estiver usando um aplicativo GitHub, esse campo é opcional)

    • oauth_token_endpoint - ponto de extremidade do qual o token de atualização e acesso será adquirido

    • oauth_authorization_endpoint - ponto de extremidade para o qual a solicitação de autorização será enviada

Configuração do aplicativo GitHub

A próxima etapa é a configuração de um aplicativo GitHub na conta do usuário. Esse aplicativo será usado para conceder acesso limitado à conta, de modo que os dados possam ser ingeridos.

A primeira etapa é pressionar o botão Request access na UI do conector.

Solicitação de acesso ao OAuth

A primeira tela permite que você revise os pontos de extremidade para os quais a conectividade externa será permitida.

Análise de pontos de extremidade de EAI

Depois de pressionar Next - você verá uma segunda tela. Selecione OAuth2 para criar uma nova integração e segredo e copie o URL do redirecionamento fornecido - ele conterá o nome de sua organização e a região de sua conta.

URL de redirecionamento do OAuth

Em seguida, vá para a página de configurações da conta GitHub, depois para Developer settings > GitHub Apps e pressione o botão New GitHub App:

  1. Digite o nome e o URL da página inicial do seu aplicativo

  2. Cole o URL de redirecionamento que você copiou no campo Callback URL

  3. Certifique-se de que a opção Expire user authorization tokens esteja selecionada

  4. Certifique-se de que o site Request user authorization (OAuth) during installation não esteja selecionado

  5. Se você não precisar dele, desmarque a opção Active na seção Webhook

  6. Selecione as permissões necessárias para que o conector funcione:

    1. Repository permissions > Issues com o acesso Read-only

    2. Repository permissions > Metadata com o acesso Read-only

  7. Se o aplicativo for usado apenas por você, com este exemplo de conector, é melhor selecionar Only on this account na seção de acesso à instalação

Depois que o aplicativo for criado, pressione a opção Install app na barra lateral esquerda e instale o aplicativo em sua conta. Você pode escolher quais repositórios o aplicativo (e, com isso, o conector) poderá acessar. Sem essa instalação, o conector só conseguirá acessar repositórios públicos.

Configuração da integração do OAuth

Após a instalação, retorne ao aplicativo GitHub e gere um novo segredo de cliente. Certifique-se de copiá-lo imediatamente, pois ele não será exibido novamente. Cole o segredo do cliente no popup de configuração do OAuth do seu conector. Por fim, copie o ID do cliente (não o ID do aplicativo) do seu aplicativo e cole-o também no pop-up de configuração do OAuth do seu conector.

Configuração do OAuth

Depois de pressionar Connect, será exibida uma janela do GitHub solicitando a autorização do aplicativo na sua conta GitHub. Após a autorização, você será automaticamente redirecionado para a UI do conector. Após a autorização bem-sucedida (pode levar alguns segundos para concluir e fechar o pop-up), a página será preenchida com os IDs de integração de acesso externo e referências de segredo.

Tela de configuração da conexão

Pressionar o botão Connect acionará o procedimento TEST_CONNECTION dentro do conector. Este procedimento tentará acessar o ponto de extremidade GitHub API octocat, para verificar se a conectividade externa foi configurada corretamente e se o token de acesso do OAuth foi obtido corretamente.

Se o teste for bem-sucedido, o aplicativo passará para a etapa de finalização.

Finalização da configuração

A finalização é a última etapa do assistente. Nesta etapa, você será solicitado a fornecer uma organização e um nome de repositório. Esse repositório deve ser acessado com o token do OAuth obtido durante a etapa de configuração da conexão. O repositório fornecido será usado apenas para fins de validação de conexão.

Isso é um pouco diferente da etapa anterior, pois o procedimento TEST_CONNECTION verifica apenas se GitHub API está acessível e se o token fornecido é válido.

A etapa de finalização garante que o repositório fornecido pelo usuário seja acessível com o token do GitHub API fornecido. Ele falhará se o token não tiver as permissões necessárias para acessar o repositório. Se você quiser ingerir dados de repositórios privados, recomendamos finalizar a configuração usando um repositório privado, apenas para garantir que eles funcionem corretamente.

Além disso, durante essa etapa, o banco de dados e o esquema especificados na fase de configuração do conector serão finalmente criados em sua conta.

Tela de finalização da configuração

Uso diário

Depois que o assistente de configuração for concluído com êxito, você poderá começar a usar o conector de exemplo do GitHub.

As próximas etapas explicarão:

  • Como configurar recursos para ingerir os dados

  • Como funciona o processo de ingestão

  • Como visualizar as estatísticas dos registros ingeridos

  • Como visualizar os dados ingeridos

  • Como pausar e retomar o conector

Configuração de recursos

Para configurar os recursos, acesse a guia Data Sync. Essa guia exibe uma lista dos repositórios já configurados para ingestão. Quando aberta pela primeira vez, a lista estará vazia.

Para configurar um recurso, digite os nomes da organização e do repositório nos campos designados e, em seguida, pressione o botão Queue ingestion. Por exemplo:

Definição de recursos

A definição de um novo recurso será salva e será selecionada pelo agendador de acordo com o cronograma global. Levará algum tempo até que os dados sejam ingeridos e fiquem visíveis na tabela do coletor. Eles ficarão visíveis na tabela abaixo:

Listagem de recursos definidos

Programação e status da ingestão

Na parte superior da guia Data Sync, há uma seção com informações gerais sobre a ingestão. Essa seção permite que o usuário veja a programação global com a qual os recursos configurados serão ingeridos. A etiqueta no canto inferior direito mostra o status atual da ingestão. Inicialmente, ele mostrará o estado NOT SYNCING, até que o primeiro recurso seja definido. Depois disso, ele fará a transição para SYNCING e, finalmente, quando pelo menos uma ingestão de recursos for concluída com êxito, ele mostrará a data de conclusão dessa ingestão.

Status da sincronização

Processo de ingestão

O processo de ingestão é tratado por meio dos componentes Scheduler Task e Task Reactor. O agendador coleta os recursos definidos de acordo com a programação global e os envia como Work Items para uma fila. Em seguida, o componente do reator de tarefas chamado Dispatcher os coleta e divide entre o número definido de trabalhadores. Cada trabalhador executa a ingestão real de cada item da fila que ele pega.

A ingestão única de um recurso consiste em buscar os dados dos pontos de extremidade na GitHub API e salvá-los nas tabelas designadas no banco de dados do coletor. Para fins deste exemplo, todos os dados são obtidos em cada execução, o que resulta em novos registros sendo adicionados à tabela e registros antigos sendo atualizados. Além disso, a execução de cada Work Item inclui dados de registro como data de início e término, número de linhas ingeridas, status etc. em tabelas de conectores internos, que são usadas para fins estatísticos.

Visualização de estatísticas

A tela Home contém estatísticas das execuções de ingestão anteriores. Os dados são baseados na exibição PUBLIC.AGGREGATED_CONNECTOR_STATS. A exibição agrega o número de linhas ingeridas com base na hora do dia em que foram ingeridas. Os dados dessa exibição podem ser recuperados por meio de consultas SELECT executadas em uma planilha, de modo que também podem ser agregados por uma janela de tempo maior que uma hora.

Há outra exibição disponível na planilha - PUBLIC.CONNECTOR_STATS. Usando esses dados, você pode ver o status, a data de início e de término, a média de linhas ingeridas por segundo e algumas outras informações relacionadas à ingestão de dados.

Exemplo de gráfico de estatísticas de ingestão:

Estatísticas de ingestão

Visualização de dados ingeridos

Os dados ingeridos não são visíveis na UI, mas podem ser visualizados por meio de consultas a dados de tabelas específicas, por usuários com funções ADMIN ou DATA_READER. Para visualizar os dados, você deve ir para uma planilha SQL e selecionar o banco de dados de destino. O banco de dados de destino usa o nome e o esquema definidos durante a etapa de configuração do conector. Você pode acessar os dados SELECT a partir de:

  1. Tabela ISSUES, ela contém as seguintes colunas:

    • ORGANIZATION

    • REPOSITORY

    • RAW_DATA

  2. A exibição ISSUES_VIEW, ela contém as seguintes colunas:

    • ID

    • ORGANIZATION

    • REPOSITORY

    • STATE

    • TITLE

    • CREATED_AT

    • UPDATED_AT

    • ASSIGNEE

Os dados visíveis na exibição ISSUES_VIEW são extraídos da coluna raw_data encontrada na tabela ISSUES. Para ver os dados, você pode usar uma das seguintes consultas:

SELECT * FROM DEST_DATABASE.DEST_SCHEMA.ISSUES;

SELECT * FROM DEST_DATABASE.DEST_SCHEMA.ISSUES_VIEW;
Copy

Pausa e retomada

O conector pode ser pausado e retomado, sempre que você desejar. Para isso, basta pressionar o botão Pause na guia Data Sync. Quando a pausa é acionada, o mecanismo subjacente de agendamento e execução de trabalho é desativado. No entanto, qualquer trabalho de ingestão ativa será concluído antes que o conector realmente entre no estado PAUSED. Por esse motivo, pode levar até dois minutos para que o conector seja totalmente pausado.

Para retomar o conector, basta pressionar o botão Resume, que será exibido no lugar do botão Pausa. Isso retomará a tarefa de agendamento que começará a enfileirar novos Work Items.

Pausa do conector

Configurações do conector

Após a conclusão da configuração, mais uma guia chamada Settings fica disponível. Essa guia permite que o usuário veja as configurações atuais do conector e da conexão. Os dados dessa guia são extraídos da tabela de configuração subjacente APP_CONFIG e são somente de leitura.

Definições de configuração do conector
Definições de configuração da conexão

Solução de problemas

Se o conector encontrar algum problema, ele ficará visível nos logs event table, se a tabela for criada e definida na conta.

Mais informações sobre como ativar e usar o event table, o registro de eventos e o compartilhamento de eventos em Native Apps podem ser encontradas na documentação:

Limpeza

Após a conclusão do tutorial, você pode pausar o conector, conforme explicado na seção Uso diário, ou removê-lo completamente da sua conta usando o comando:

snow app teardown --connection=native_sdk_connection --cascade --force

A opção --cascade é necessária para remover o banco de dados de destino sem transferir a propriedade para o administrador da conta. Em conectores reais, o banco de dados não deve ser removido para preservar os dados ingeridos; ele deve ser de propriedade do administrador da conta ou a propriedade deve ser transferida antes da desinstalação.

Se a parte de limpeza for ignorada, o conector de exemplo consumirá créditos até ser pausado ou removido, mesmo que nenhum repositório tenha sido configurado para ingestão!

Personalização

Este tutorial mostrou a você um exemplo de conector criado usando Snowflake Native SDK for Connectors. Para saber mais sobre como personalizar o conector ou criar seu próprio conector do zero, consulte: