Uso do modelo da consulta SQL no aplicativo da web

A inclusão de um modelo de consulta SQL em uma sala limpa permite que os consumidores escrevam de forma livre SQL para consultar dados na sala limpa. Ao usar o modelo de consulta SQL, as consultas do consumidor devem atender a determinados requisitos para retornar resultados com sucesso. Esses requisitos são determinados pela forma como o provedor de dados protege suas tabelas com políticas de privacidade de dados.

Políticas de modelo

As seguintes políticas são aplicadas pelo modelo de consulta SQL para controlar como o consumidor pode consultar os dados:

Política de projeção

As colunas com uma política de projeção não podem incluídas em uma instrução SELECT. No entanto, os consumidores podem filtrar ou fazer junções com uma coluna que tenha uma política de projeção.

Política de agregação

Exige que uma consulta agregue dados para retornar resultados.

Uma política de agregação protege a privacidade das entidades exigindo que cada grupo de agregação contenha um número mínimo de entidades. Uma entidade é identificada por um valor distinto em uma coluna. Por exemplo, todas as linhas com o valor joe@company.com na coluna email podem pertencer à mesma entidade.

Em salas limpas, a política de agregação pode proteger diversas entidades na tabela. Por exemplo, a política pode exigir que um grupo de agregação contenha pelo menos 5 domicílios e 10 usuários, onde domicílios e usuários são entidades.

Observe que a atribuição de uma política de agregação a uma coluna permite que o consumidor filtre, projete e junte essa coluna.

Importante

As políticas de junção especificadas durante o processo de criação da sala limpa são ignoradas ao usar o modelo de consulta SQL.

Adição de um modelo de consulta SQL a uma sala limpa

O processo geral de configuração de uma sala limpa para que os consumidores possam usar o modelo de consulta SQL para executar análises inclui o seguinte:

  1. Inicie o processo de criação da sala limpa..

  2. Quando solicitado a selecionar um modelo, selecione Horizontal » SQL Query e, em seguida, configure o modelo de consulta SQL.

  3. Compartilhe a sala limpa com um colaborador.

Configuração do modelo de consulta SQL

As consultas do consumidor não podem selecionar, filtrar ou fazer junção em uma coluna em um modelo de consulta SQL, a menos que você atribua uma política a uma coluna ou permita totalmente a coluna.

Depois de adicionar o modelo de consulta SQL à sala limpa, você pode configurá-lo executando as seguintes ações:

Permitir que um consumidor SELECT, filtre ou faça junção em uma coluna sem restrições

Use a lista suspensa Fully Permitted Columns para selecionar o nome da coluna.

Atribuir uma política de agregação a uma ou mais colunas

Para atribuir uma política de agregação a uma coluna, use a lista suspensa Aggregation Policy Columns para selecionar o nome da coluna. Após atribuir a política de agregação, as consultas do consumidor deverão agregar dados em grupos que contenham um número mínimo de valores distintos da coluna.

Após atribuir a política de agregação a uma coluna, é possível ajustar quantos valores distintos (ou seja, entidades) da coluna devem ser inclusos nos grupos de agregação retornados pela consulta do consumidor. Para ajustar o número necessário de entidades em cada grupo:

  1. Encontre a seção Privacy Settings » Aggregation Policies.

  2. Encontre a coluna e aumente ou diminua seu Threshold. Quanto maior o limite, mais valores distintos devem ser retornados em cada grupo de agregação, o que proporciona proteções de privacidade mais fortes para a entidade.

É possível atribuir a política de agregação a colunas adicionais para definir entidades adicionais e, em seguida, ajustar quantas dessas entidades devem ser incluídas em cada grupo.

Atribuição de políticas de projeção a uma ou mais colunas

Para atribuir uma política de projeção a uma coluna, use a lista suspensa Projection Policy Columns para selecionar o nome da coluna. Os consumidores não podem usar uma coluna com uma política de projeção em uma instrução SELECT.

Execução de uma análise usando um modelo de consulta SQL

Use as informações desta seção para escrever uma consulta bem-sucedida no modelo de consulta SQL.

Em quais colunas posso unir e filtrar?

É possível unir e filtrar qualquer coluna que tenha uma política ou que seja totalmente permitida. Para determinar se uma coluna pode ser unida ou usada em um filtro:

  1. Na seção Query Configurations, encontre o bloco Tables.

  2. Use a lista suspensa para selecionar uma tabela. É possível unir e filtrar todas as colunas listadas.

Requisito de agregação

Se o provedor atribuiu uma política de agregação a uma coluna, todas as consultas executadas usando o modelo de consulta SQL devem retornar resultados agregados.

Para determinar se sua consulta deve agregar resultados:

  1. Na seção Query Configurations, encontre o bloco Tables.

  2. Use a lista suspensa para selecionar uma tabela.

  3. Procure colunas que tenham um rótulo de política de agregação. Se houver pelo menos um rótulo de política de agregação, é necessário usar um agregado em sua consulta.

Para obter diretrizes sobre como escrever uma consulta bem-sucedida em dados protegidos por uma política de agregação, consulte:

Quais colunas posso projetar?

Consultas executadas usando o modelo de consulta SQL têm restrições sobre quais colunas podem ser projetadas (usadas em uma instrução SELECT).

Para determinar se sua consulta pode projetar uma coluna:

  1. Na seção Query Configurations, encontre o bloco Tables.

  2. Use a lista suspensa para selecionar uma tabela.

  3. Procure colunas que tenham um rótulo de política de projeção, o que significa que você não pode projetá-las. É possível projetar todas as colunas, exceto as que têm o rótulo da política de projeção.

Exibição dos resultados

Para executar sua consulta no aplicativo da web, selecione Run e, opcionalmente, nomeie e cronograma sua execução de consulta. Verifique o status da consulta na lista Analyses and Queries para ver quando a consulta foi concluída. Selecione uma consulta concluída para ver os resultados. Consultas bem-sucedidas exibem uma tabela de resultados. Se a tabela de resultados atender aos requisitos específicos detalhados a seguir, os resultados também poderão ser exibidos em um gráfico. O Snowflake oferece vários tipos de gráficos, incluindo gráficos de barra, linha e pizza; escolha o formato de saída selecionando o botão apropriado na seção de resultados.

Requisitos de gráficos

Para que o Snowflake consiga gerar um gráfico:

  • A tabela de resultados deve incluir pelo menos uma coluna de medida (numérica) e uma coluna de dimensão (categoria).

  • O nome da coluna de medida deve ter o seguinte prefixo ou sufixo (sem distinção entre maiúsculas e minúsculas):

    • Prefixos de nome de coluna:

      • COUNT

      • SUM

      • AVG

      • MIN

      • MAX

      • OUTPUT

      • OVERLAP

    • Sufixo do nome da coluna:

      • _OVERLAP

O Snowflake gera um gráfico usando a primeira coluna de medida elegível e a primeira coluna de dimensão em uma tabela de resultados.

Limitações

  • Uma cláusula ORDER BY não tem efeito sobre como os resultados da análise são exibidos.

Consultas de exemplo

Use esta seção para entender melhor o que uma consulta pode e não pode incluir ao executar uma análise com o modelo de consulta SQL.

Consultas sem uma função de agregação

Em algumas circunstâncias, você pode retornar valores sem usar uma função de agregação.

Permitido

Não permitido

SELECT gender, regions
  FROM TABLE sample_db.demo.customer
  GROUP BY gender, region;
Copy
SELECT gender, regions
  FROM TABLE sample_db.demo.customer;
Copy
Expressões de tabela comuns (CTEs)

Permitido

Não permitido

WITH audience AS
  (SELECT COUNT(DISTINCT t1.hashed_email),
    t1.status
    FROM provider_db.overlap.customers t1
    JOIN consumer_db.overlap.customers t2
      ON t1.hashed_email = t2.hashed_email
    GROUP BY t1.status);

SELECT * FROM audience;
Copy
WITH audience AS
  (SELECT t1.hashed_email,
    t1.status
    FROM provider_db.overlap.customers quoted t1
    JOIN consumer_db.overlap.customers t2
      ON t1.hashed_email = t2.hashed_email
    GROUP BY t1.status)

SELECT * FROM audience
Copy
CREATE, ALTER, TRUNCATE

Uma consulta não pode usar CREATE, ALTER ou TRUNCATE.

Consulta com junções

Permitido

SELECT p.education_level,
  c.status,
  AVG(p.days_active),
  COUNT(DISTINCT p.age_band)
  FROM  sample_database_preprod.demo.customers c
  INNER JOIN
  sample_database_preprod.demo.customers p
    ON  c.hashed_email = p.hashed_email
  GROUP BY ALL;
Copy
DATE_TRUNC

Permitido

SELECT COUNT(*),
  DATE_TRUNC('week', date_joined) AS week
  FROM consumer_sample_database.audience_overlap.customers
  GROUP BY week;
Copy
Identificadores entre aspas

Permitido

SELECT COUNT(DISTINCT t1.”hashed_email”)
  FROM provider_sample_database.audience_overlap."customers quoted" t1
  INNER JOIN
  consumer_sample_database.audience_overlap.customers t2
    ON t1."hashed_email" = t2.hashed_email;
Copy