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 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:
Inicie o processo de criação da sala limpa..
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.
Na etapa 3, Horizontal » SQL Query da lista de modelos, configure o modelo de consulta SQL.
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
Permissão para que o consumidor SELECT e filtre em uma coluna que não seja de junção
- 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 colunaHEM
. Agora suponha que você adicione a coluna como uma colunaFIRST_NAME
da política de agregação. Agora, cada grupo de agregação deve conter um certo número de valores distintos das colunasHEM
e um certo número de valores distintos da colunaFIRST_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:
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.
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:
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. 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:
Na seção Query Configurations, encontre o bloco Tables.
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;
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;