Pré-requisitos

O tutorial considera o seguinte:

  • Você tem uma conta Snowflake configurada para usar Amazon AWS e um usuário com uma função que concede os privilégios necessários para criar um banco de dados, tabelas e objetos de warehouse virtual.

  • Você tem o SnowSQL (cliente CLI) instalado.

O tutorial Snowflake em 20 minutos fornece as instruções passo a passo relacionadas para atender a estes requisitos.

O Snowflake fornece amostras de arquivos de dados em um bucket S3 público para uso neste tutorial. Mas antes de começar, você precisa criar um banco de dados, tabelas, um warehouse virtual e um estágio externo para este tutorial. Estes são os objetos básicos do Snowflake necessários para a maioria das atividades do Snowflake.

Sobre o arquivo de dados de amostra

Para este tutorial, você utiliza os seguintes dados JSON de eventos do aplicativo de amostra fornecidos em um bucket S3 público.

{
"device_type": "server",
"events": [
  {
    "f": 83,
    "rv": "15219.64,783.63,48674.48,84679.52,27499.78,2178.83,0.42,74900.19",
    "t": 1437560931139,
    "v": {
      "ACHZ": 42869,
      "ACV": 709489,
      "DCA": 232,
      "DCV": 62287,
      "ENJR": 2599,
      "ERRS": 205,
      "MXEC": 487,
      "TMPI": 9
    },
    "vd": 54,
    "z": 1437644222811
  },
  {
    "f": 1000083,
    "rv": "8070.52,54470.71,85331.27,9.10,70825.85,65191.82,46564.53,29422.22",
    "t": 1437036965027,
    "v": {
      "ACHZ": 6953,
      "ACV": 346795,
      "DCA": 250,
      "DCV": 46066,
      "ENJR": 9033,
      "ERRS": 615,
      "MXEC": 0,
      "TMPI": 112
    },
    "vd": 626,
    "z": 1437660796958
  }
],
"version": 2.6
}
Copy

Os dados representam exemplos de eventos que os aplicativos carregam no S3. Uma variedade de dispositivos e aplicativos, tais como servidores, telefones celulares e navegadores publicam eventos. Em um cenário comum de coleta de dados, um ponto de extremidade escalável da Web coleta dados POSTed de diferentes fontes e os grava em um sistema de enfileiramento. Em seguida, um serviço/utilitário de ingestão grava os dados em um bucket S3, a partir do qual você pode carregar os dados no Snowflake.

Os dados da amostra ilustram os seguintes conceitos:

  • Os aplicativos podem optar por agrupar os eventos em lotes. Um lote é um recipiente que contém informações de cabeçalho comuns a todos os eventos do lote. Por exemplo, o JSON anterior é um lote de dois eventos com informações de cabeçalho comuns: device_type e version que geraram esses eventos.

  • Amazon S3 oferece suporte ao uso do conceito de pastas para organizar um bucket. Os aplicativos podem aproveitar este recurso para dividir os dados de eventos. Os esquemas de particionamento normalmente identificam detalhes, tais como aplicativo ou local que gerou o evento, juntamente com uma data do evento quando foi escrito para S3. Tal esquema de particionamento permite copiar qualquer fração dos dados particionados para o Snowflake com um único comando COPY. Por exemplo, você pode copiar dados de eventos por hora, dados, mês ou ano quando você preencher inicialmente as tabelas.

    Por exemplo:

    s3://bucket_name/application_a/2016/07/01/11/

    s3://bucket_name/application_b/location_c/2016/07/01/14/

    Observe que application_a, application_b, location_c etc. identificam detalhes para a fonte de todos os dados no caminho. Os dados podem ser organizados pela data em que foram gravados. Um diretório opcional de 24 horas reduz a quantidade de dados em cada diretório.

    Nota

    O S3 transmite uma lista de diretórios com cada instrução COPY utilizada pelo Snowflake, por isso reduzir o número de arquivos em cada diretório melhora o desempenho de suas instruções COPY. Você pode até considerar a criação de pastas de incrementos de 10-15 minutos em cada hora.

    A amostra de dados fornecida no bucket S3 utiliza um esquema de particionamento semelhante. Em um comando COPY, você especificará um caminho de pasta específico para copiar os dados de eventos.

Criação do banco de dados, tabela, warehouse e estágio externo

Execute as seguintes instruções para criar um banco de dados, uma tabela, um warehouse virtual e um estágio externo necessário para este tutorial. Depois de concluir o tutorial, você poderá descartar estes objetos.

CREATE OR REPLACE DATABASE mydatabase;

USE SCHEMA mydatabase.public;

CREATE OR REPLACE TABLE raw_source (
  SRC VARIANT);

CREATE OR REPLACE WAREHOUSE mywarehouse WITH
  WAREHOUSE_SIZE='X-SMALL'
  AUTO_SUSPEND = 120
  AUTO_RESUME = TRUE
  INITIALLY_SUSPENDED=TRUE;

USE WAREHOUSE mywarehouse;

CREATE OR REPLACE STAGE my_stage
  URL = 's3://snowflake-docs/tutorials/json';
Copy

Observe o seguinte:

  • A instrução CREATE DATABASE cria um banco de dados. O banco de dados inclui automaticamente um esquema chamado “public”.

  • A instrução USE SCHEMA especifica um banco de dados e um esquema ativo para a sessão atual do usuário. Especificar um banco de dados agora permite que você realize seu trabalho neste banco de dados sem ter que fornecer o nome cada vez que for solicitado.

  • A instrução CREATE TABLE cria uma tabela de destino para os dados JSON.

  • A instrução CREATE WAREHOUSE cria um warehouse inicialmente suspenso. A instrução também define AUTO_RESUME = true, que inicia automaticamente o warehouse quando você executa instruções SQL que exigem recursos computacionais. A instrução USE WAREHOUSE especifica o warehouse que você criou como o warehouse ativo para a sessão atual do usuário.

  • A instrução CREATE STAGE cria um estágio externo que aponta para o bucket S3 contendo o arquivo de amostra para este tutorial.

Próximo: Etapa 1. Copiar dados para a tabela de destino