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 colunaemail
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:
Inicie o processo de criação da sala limpa..
Quando solicitado a selecionar um modelo, selecione Horizontal » SQL Query e, em seguida, configure o modelo de consulta SQL.
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:
Encontre a seção Privacy Settings » Aggregation Policies.
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:
Na seção Query Configurations, encontre o bloco Tables.
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:
Na seção Query Configurations, encontre o bloco Tables.
Use a lista suspensa para selecionar uma tabela.
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:
Requisitos de consulta para políticas de agregação. Por exemplo, você pode usar esta seção para determinar que as funções de agregação MIN e MAX não atendem aos requisitos da consulta e não podem ser usadas.
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:
Na seção Query Configurations, encontre o bloco Tables.
Use a lista suspensa para selecionar uma tabela.
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;
SELECT gender, regions FROM TABLE sample_db.demo.customer;
- 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;
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
- 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;
- DATE_TRUNC
Permitido
SELECT COUNT(*), DATE_TRUNC('week', date_joined) AS week FROM consumer_sample_database.audience_overlap.customers GROUP BY week;
- 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;