웹 앱에서 SQL Query 템플릿 사용하기¶
클린룸에 SQL Query 템플릿을 포함하면 컨슈머는 자유 형식의 SQL을 작성하여 클린룸의 데이터를 쿼리할 수 있습니다. SQL Query 템플릿을 사용할 때 소비자 쿼리가 특정 요건을 충족해야 결과를 성공적으로 반환할 수 있습니다. 이러한 요구 사항은 데이터 공급자가 데이터 개인정보 보호 정책을 통해 테이블을 보호하는 방법에 따라 결정됩니다.
템플릿 정책¶
다음 정책은 SQL Query 템플릿에 적용되어 소비자가 데이터를 쿼리할 수 있는 방법을 제어합니다.
- 프로젝션 정책
프로젝션 정책이 있는 열은 프로젝션할 수 없습니다(즉, SELECT 문에 포함됨). 그러나 컨슈머는 프로젝션 정책을 통해 열에 필터링하거나 조인할 수 있습니다.
- 집계 정책
결과를 반환하려면 쿼리에서 데이터를 집계해야 합니다.
집계 정책은 각 집계 그룹에 최소한의 엔터티가 포함되어야 함을 요구하여 엔터티의 개인정보를 보호합니다. 엔터티는 열의 고유한 값으로 식별됩니다. 예를 들어,
email
열의 값이joe@company.com
인 모든 행은 동일한 엔터티에 속할 수 있습니다.클린룸에서는 집계 정책을 사용하여 테이블의 여러 엔터티를 보호할 수 있습니다. 예를 들어, 정책에서는 집계 그룹에 최소 5가구와 10명의 사용자가 포함되어야 하며, 가구와 사용자가 모두 오브젝트여야 한다고 요구할 수 있습니다.
열에 집계 정책을 할당하면 컨슈머가 해당 열에 필터링, 투사 및 조인할 수 있습니다.
중요
SQL 쿼리 템플릿을 사용할 때는 클린룸 생성 프로세스 중에 지정된 조인 정책이 무시됩니다.
클린룸에 SQL Query 템플릿 추가¶
컨슈머가 SQL Query 템플릿을 사용하여 분석을 실행할 수 있도록 클린룸을 구성하는 일반적인 프로세스는 다음과 같습니다.
클린룸 생성 프로세스 를 시작합니다.
템플릿을 선택하라는 메시지가 표시되면 Horizontal » SQL Query 을 선택한 다음 SQL 쿼리 템플릿 을 구성합니다.
공동 작업자와 클린룸을 공유합니다.
SQL Query 템플릿 구성¶
열에 정책을 할당하거나 열을 완전히 허용하지 않으면 컨슈머 쿼리는 SQL 쿼리 템플릿의 열을 선택, 필터링 또는 조인할 수 없습니다.
클린룸에 SQL Query 템플릿을 추가한 후 다음 작업을 수행하여 구성할 수 있습니다.
- 컨슈머가 SELECT, 필터링 또는 제한 없이 열에 조인하도록 허용합니다
드롭다운 목록에서 Fully Permitted Columns 를 사용하여 열의 이름을 선택합니다.
- 하나 이상의 열에 집계 정책을 할당합니다
집계 정책 을 열에 할당하려면 Aggregation Policy Columns 드롭다운 목록을 사용하여 열의 이름을 선택합니다. 집계 정책을 지정한 후 컨슈머의 쿼리는 열의 고유 값에 대한 최소값을 포함하는 그룹으로 데이터를 집계해야 합니다.
열에 집계 정책을 할당하고 나면, 컨슈머의 쿼리가 반환하는 집계 그룹에 포함해야 하는 열의 고유 값(즉, 엔터티)의 수를 조정할 수 있습니다. 각 그룹에 필요한 엔터티 수를 조정합니다.
Privacy Settings » Aggregation Policies 섹션을 찾습니다.
열을 찾은 다음 Threshold 를 늘리거나 줄입니다. 임계값이 높을수록 각 집계 그룹에서 반환해야 하는 고유 값이 많아지며, 이를 통해 엔터티의 개인정보 보호가 강화됩니다.
집계 정책을 추가 열에 할당하여 추가 엔터티를 정의한 다음 각 그룹에 포함해야 하는 엔터티의 수를 조정할 수 있습니다.
- 하나 이상의 열에 프로젝션 정책 할당
프로젝션 정책 을 열에 할당하려면 Projection Policy Columns 드롭다운 목록을 사용하여 열의 이름을 선택합니다. 컨슈머는 SELECT 문에 프로젝션 정책이 있는 열을 사용할 수 없습니다.
SQL Query 템플릿을 사용하여 분석 실행하기¶
SQL Query 템플릿을 사용하여 분석 실행하기
어떤 열에 조인하고 필터링할 수 있나요?¶
정책이 있거나 완전히 허용된 모든 열에 조인하고 필터링할 수 있습니다. 열을 필터에 조인하거나 사용할 수 있는지 여부를 결정합니다.
Query Configurations 섹션에서 Tables 타일을 찾습니다.
드롭다운 목록을 사용하여 테이블을 선택합니다. 목록에 있는 모든 열에 조인하고 필터링할 수 있습니다.
집계 요구 사항¶
공급자가 열에 집계 정책을 지정한 경우 SQL 쿼리 템플릿을 사용하여 실행되는 모든 쿼리는 집계된 결과를 반환해야 합니다.
쿼리 결과를 집계해야 하는지 여부를 결정합니다.
Query Configurations 섹션에서 Tables 타일을 찾습니다.
드롭다운 목록을 사용하여 테이블을 선택합니다.
집계 정책 레이블이 있는 열을 찾습니다. 집계 정책 레이블이 하나 이상 있는 경우 쿼리에서 집계를 사용해야 합니다.
집계 정책으로 보호되는 데이터에 대한 성공적인 쿼리를 작성하는 방법에 대한 지침은 다음을 참조하십시오.
집계 정책에 대한 쿼리 요구 사항. 예를 들어, 이 섹션을 사용하여 MIN 및 MAX 집계 함수가 쿼리 요구 사항을 충족하지 않으므로 사용할 수 없는지 확인할 수 있습니다.
어떤 열을 프로젝션할 수 있나요?¶
SQL Query 템플릿을 사용하여 실행되는 쿼리에는 프로젝션할 수 있는 열에 제한이 있습니다(SELECT 문에 사용됨).
쿼리가 열을 프로젝션할 수 있는지 확인하려면:
Query Configurations 섹션에서 Tables 타일을 찾습니다.
드롭다운 목록을 사용하여 테이블을 선택합니다.
프로젝션 정책 레이블이 있는 열을 찾으면 프로젝션할 수 없음을 의미합니다. 프로젝션 정책 레이블이 있는 열을 제외한 모든 열을 프로젝션할 수 있습니다.
결과 표시¶
웹 앱에서 쿼리를 실행하려면 Run 을 선택한 다음 선택적으로 쿼리 실행의 이름을 지정하고 예약합니다. Analyses and Queries 목록에서 쿼리 상태를 확인하여 쿼리가 완료된 시점을 확인합니다. 완료된 쿼리를 선택하면 결과를 볼 수 있습니다. 성공적인 쿼리는 결과 테이블을 표시합니다. 결과 테이블이 다음에 자세히 설명된 특정 요구 사항을 복제하는 경우 결과를 그래프로 표시할 수도 있습니다. Snowflake는 막대 그래프, 선 그래프, 원형 그래프 등 여러 가지 그래프 유형을 제공합니다. 결과 섹션에서 적절한 버튼을 선택하여 출력 형식을 선택합니다.
그래프 작성 요구 사항¶
Snowflake가 그래프를 생성하려면 다음이 필요합니다.
결과 테이블에는 최소한 1개의 측정값(숫자) 열과 1개의 차원(카테고리) 열이 포함되어야 합니다.
측정값 열 이름에는 다음 접두사 또는 접미사가 있어야 합니다(대/소문자 구분 안 함).
열 이름 접두사:
COUNT
SUM
AVG
MIN
MAX
OUTPUT
OVERLAP
열 이름 접미사:
_OVERLAP
Snowflake는 결과 테이블에서 첫 번째 적격 측정값 열과 첫 번째 차원 열을 사용하여 차트를 생성합니다.
제한 사항¶
ORDER BY 절은 분석 결과가 표시되는 방식에 영향을 미치지 않습니다.
샘플 쿼리¶
이 섹션을 사용하여 SQL Query 템플릿으로 분석을 실행할 때 쿼리에 포함할 수 있는 항목과 포함할 수 없는 항목을 더 잘 이해할 수 있습니다.
- 집계 함수가 없는 쿼리
어떤 경우에는 집계 함수를 사용하지 않고도 값을 반환할 수 있습니다.
허용됨
허용되지 않음
SELECT gender, regions FROM TABLE sample_db.demo.customer GROUP BY gender, region;
SELECT gender, regions FROM TABLE sample_db.demo.customer;
- 일반 테이블 식(CTEs)
허용됨
허용되지 않음
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
쿼리에서는 CREATE, ALTER 또는 TRUNCATE를 사용할 수 없습니다.
- 조인을 사용한 쿼리
허용됨
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
허용됨
SELECT COUNT(*), DATE_TRUNC('week', date_joined) AS week FROM consumer_sample_database.audience_overlap.customers GROUP BY week;
- 따옴표가 있는 식별자
허용됨
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;