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

Descrição

Política de projeção

Controla se uma consulta pode projetar uma coluna, ou seja, incluir a coluna em uma instrução SELECT. Em uma sala limpa, os consumidores não podem projetar uma coluna com uma política de projeção.

Política de agregação

Exige que uma consulta agregue dados para retornar resultados. Cada tabela acessada com um modelo de consulta SQL tem uma política de agregação.

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.

Importante

As políticas de junção, que são adicionadas à sala limpa na etapa 2 do processo de criação, não controlam junções ao usar o modelo de consulta SQL. Em vez disso, a sala limpa aplica uma política de projeção e uma política de agregação a cada coluna selecionada como uma coluna de junção. Uma consulta SQL pode ser unida em qualquer coluna, não apenas naquelas selecionadas na lista suspensa Join Columns.

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. Na etapa 2, use a lista suspensa Join Columns para selecionar as colunas que você deseja proteger com políticas de agregação e projeção. Suas seleções não terão efeito sobre quais colunas podem ser usadas como chaves de junção.

  3. Na etapa 3, Horizontal » SQL Query da lista de modelos, configure o modelo de consulta SQL.

  4. Compartilhe a sala limpa com um colaborador.

Configuração do modelo de consulta SQL

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

Permissão para que o consumidor use uma coluna de junção em uma instrução SELECT

Use a lista suspensa Aggregation Policy Columns para selecionar o nome da coluna, que é rotulada com Join Policy.

Permissão para que o consumidor SELECT e filtre em uma coluna que não seja de junção

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

Definição de entidades adicionais

Cada coluna com uma política de junção identifica uma entidade protegida pela política de agregação da tabela. Isso significa que cada grupo de agregação deve conter um número mínimo de valores distintos de cada coluna de junção.

Você pode designar colunas adicionais como entidades de identificação para que cada grupo de agregação contenha um número mínimo de valores distintos dessas colunas. Por exemplo, suponha que HEM seja uma política de junção. A configuração padrão da política de agregação força as consultas a agregar dados em grupos que contêm uma certa quantidade de valores distintos da coluna HEM. Agora suponha que você adicione a coluna como uma coluna FIRST_NAME da política de agregação. Agora, cada grupo de agregação deve conter um certo número de valores distintos das colunas HEM e um certo número de valores distintos da coluna FIRST_NAME.

Para adicionar uma coluna que identifique uma entidade, use a lista suspensa Aggregation Policy Columns para selecionar o nome da coluna.

Nota

Lembre-se de que especificar que uma coluna identifica uma entidade também permite que o consumidor filtre e projete essa coluna.

Alteração do número mínimo de entidades

Quando uma coluna identifica uma entidade, cada grupo de agregação deve conter um determinado número de valores distintos da coluna. Para ajustar o número de valores distintos de uma entidade:

  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.

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 fazer uma junção?

Você pode fazer a junção em qualquer coluna.

Requisito de agregação

Cada tabela em uma sala limpa que usa o modelo de consulta SQL tem uma política de agregação. Como resultado, todas as consultas SQL executadas usando o modelo de consulta devem retornar resultados agregados.

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. Você pode projetar todas as colunas listadas, exceto aquelas com uma política de projeção.

Em quais colunas posso filtrar?

Para determinar em quais colunas sua consulta pode filtrar:

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

  2. Use a lista suspensa para selecionar uma tabela e revisar as colunas. Você pode filtrar em todas as colunas listadas.

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