Etapa 2. Consultar dados

Nesta seção, você explorará as instruções SELECT para consultar os dados JSON.

  1. Recupere device_type.

    SELECT src:device_type
      FROM raw_source;
    
    Copy

    A consulta retorna o seguinte resultado:

    +-----------------+
    | SRC:DEVICE_TYPE |
    |-----------------|
    | "server"        |
    +-----------------+
    
    Copy

    A consulta usa a notação src:device_type para especificar o nome da coluna e o nome do elemento JSON a ser recuperado. Esta notação é semelhante à conhecida notação SQL table.column. Snowflake permite especificar uma subcoluna dentro de uma coluna principal, que o Snowflake deriva dinamicamente da definição do esquema integrado nos dados JSON. Para obter mais informações, consulte Consulta de dados semiestruturados.

    Nota

    O nome da coluna não diferencia maiúsculas de minúsculas, porém os nomes do elemento JSON diferenciam maiúsculas e minúsculas.

  2. Recupere o valor device_type sem as aspas.

    A consulta anterior retorna o valor dos dados JSON entre aspas. Você pode remover as aspas convertendo os dados em um tipo de dados específico, neste exemplo uma cadeia de caracteres.

    Esta consulta também atribui opcionalmente um nome à coluna usando um alias.

    SELECT src:device_type::string AS device_type
      FROM raw_source;
    
    Copy

    A consulta retorna o seguinte resultado:

    +-------------+
    | DEVICE_TYPE |
    |-------------|
    | server      |
    +-------------+
    
    Copy
  3. Recupere as chaves repetidas f aninhadas dentro dos objetos de eventos da matriz.

    Os dados da amostra JSON incluem a matriz events. Cada objeto de evento na matriz tem o campo f como mostrado.

    {
    "device_type": "server",
    "events": [
      {
        "f": 83,
        ..
      }
      {
        "f": 1000083,
        ..
      }
    ]}
    
    Copy

    Para recuperar estas chaves aninhadas, você pode usar a função FLATTEN. A função nivela os eventos em linhas separadas.

    SELECT
      value:f::number
      FROM
        raw_source
      , LATERAL FLATTEN( INPUT => SRC:events );
    
    Copy

    A consulta retorna o seguinte resultado:

    +-----------------+
    | VALUE:F::NUMBER |
    |-----------------|
    |              83 |
    |         1000083 |
    +-----------------+
    
    Copy

    Observe que value é uma das colunas que a função FLATTEN retorna. O próximo passo fornece mais detalhes sobre o uso da função FLATTEN.

Próximo: Etapa 3. Nivelar dados