웹 앱에서 SQL Query 템플릿 사용하기

클린룸에 SQL Query 템플릿을 포함하면 컨슈머는 자유 형식의 SQL을 작성하여 클린룸의 데이터를 쿼리할 수 있습니다. SQL Query 템플릿을 사용할 때 소비자 쿼리가 특정 요건을 충족해야 결과를 성공적으로 반환할 수 있습니다. 이러한 요구 사항은 데이터 공급자가 데이터 개인정보 보호 정책을 통해 테이블을 보호하는 방법에 따라 결정됩니다.

템플릿 정책

다음 정책은 SQL Query 템플릿에 적용되어 소비자가 데이터를 쿼리할 수 있는 방법을 제어합니다.

정책

설명

프로젝션 정책

쿼리에서 열을 프로젝션할 수 있는지, 즉 SELECT 문에 열을 포함할 수 있는지 여부를 제어합니다. 클린룸에서 컨슈머는 프로젝션 정책으로 열을 투사할 수 없습니다.

집계 정책

결과를 반환하려면 쿼리에서 데이터를 집계해야 합니다. SQL Query 템플릿으로 액세스하는 모든 테이블에는 집계 정책이 있습니다.

집계 정책은 각 집계 그룹에 최소한의 엔터티가 포함되어야 함을 요구하여 엔터티의 개인정보를 보호합니다. 엔터티는 열의 고유한 값으로 식별됩니다. 예를 들어, email 열의 값이 joe@company.com 인 모든 행은 동일한 엔터티에 속할 수 있습니다.

클린룸에서는 집계 정책을 사용하여 테이블의 여러 엔터티를 보호할 수 있습니다. 예를 들어, 정책에서는 집계 그룹에 최소 5가구와 10명의 사용자가 포함되어야 하며, 가구와 사용자가 모두 오브젝트여야 한다고 요구할 수 있습니다.

중요

생성 프로세스 2단계에서 클린룸에 추가되는 조인 정책은 SQL Query 템플릿을 사용할 때 조인을 제어하지 않습니다. 대신 클린룸은 조인 열로 선택된 각 열에 프로젝션 정책과 집계 정책을 적용합니다. SQL 쿼리는 Join Columns 드롭다운 목록으로 선택한 열뿐만 아니라 모든 열에 조인할 수 있습니다.

클린룸에 SQL Query 템플릿 추가

컨슈머가 SQL Query 템플릿을 사용하여 분석을 실행할 수 있도록 클린룸을 구성하는 일반적인 프로세스는 다음과 같습니다.

  1. 클린룸 생성 프로세스 를 시작합니다.

  2. 2단계에서 Join Columns 드롭다운 목록을 사용하여 집계 및 프로젝션 정책으로 보호할 열을 선택합니다. 선택한 내용은 조인 키로 사용할 수 있는 열에 아무런 영향을 미치지 않습니다.

  3. 3단계에서는 템플릿 목록에서 Horizontal » SQL Query 를 선택한 다음 SQL Query 템플릿을 구성 합니다.

  4. 공동 작업자와 클린룸을 공유합니다.

SQL Query 템플릿 구성

클린룸에 SQL Query 템플릿을 추가한 후 다음 작업을 수행하여 구성할 수 있습니다.

컨슈머가 SELECT 문에서 조인 열 사용 허용

Aggregation Policy Columns 드롭다운 목록을 사용하여 Join Policy 으로 레이블이 지정된 열의 이름을 선택합니다.

컨슈머의 SELECT 허용 및 조인되지 않은 열에 대한 필터링 허용

드롭다운 목록에서 Fully Permitted Columns 를 사용하여 열의 이름을 선택합니다.

추가 엔터티 정의

조인 정책이 있는 각 열은 테이블의 집계 정책으로 보호되는 엔터티를 식별합니다. 즉, 모든 집계 그룹에는 모든 조인 열에서 최소한 1개의 고유 값이 포함되어야 합니다.

추가 열을 식별 엔터티로 지정하여 각 집계 그룹에 해당 열의 고유한 값이 최소한 몇 개나 포함되도록 할 수 있습니다. 예를 들어, HEM 이 조인 정책이라고 가정해 보겠습니다. 집계 정책의 기본 구성은 쿼리가 HEM 열에서 일정량의 고유 값을 포함하는 그룹으로 데이터를 집계하도록 강제 적용합니다. 이제 FIRST_NAME 열을 집계 정책 열로 추가한다고 가정해 보겠습니다. 이제 각 집계 그룹에는 HEM 열의 고유 값에 대한 특정 수 FIRST_NAME 열의 고유 값에 대한 특정 수가 포함되어야 합니다.

엔터티를 식별하는 열을 추가하려면 Aggregation Policy Columns 드롭다운 목록을 사용하여 열의 이름을 선택합니다.

참고

열이 엔터티를 식별한다는 것을 지정하면 컨슈머가 해당 열을 필터링하고 예측할 수도 있습니다.

최소 엔터티 수 변경

열이 엔터티를 식별하는 경우 각 집계 그룹에는 열의 고유 값이 몇 개나 포함되어야 합니다. 엔터티의 고유 값 수를 조정하려면:

  1. Privacy Settings » Aggregation Policies 섹션을 찾습니다.

  2. 열을 찾은 다음 Threshold 를 늘리거나 줄입니다. 임계값이 높을수록 각 집계 그룹에서 반환해야 하는 고유 값이 많아지며, 이를 통해 엔터티의 개인정보 보호가 강화됩니다.

SQL Query 템플릿을 사용하여 분석 실행하기

SQL Query 템플릿을 사용하여 분석 실행하기

어떤 열을 조인할 수 있나요?

어느 열에나 조인할 수 있습니다.

집계 요구 사항

SQL Query 템플릿을 사용하는 클린룸의 모든 테이블에는 집계 정책이 있습니다. 따라서 SQL Query 템플릿을 사용하여 실행되는 모든 쿼리는 집계된 결과를 반환해야 합니다.

집계 정책으로 보호되는 데이터에 대한 성공적인 쿼리를 작성하는 방법에 대한 지침은 다음을 참조하십시오.

어떤 열을 프로젝션할 수 있나요?

SQL Query 템플릿을 사용하여 실행되는 쿼리에는 프로젝션할 수 있는 열에 제한이 있습니다(SELECT 문에 사용됨).

쿼리가 열을 프로젝션할 수 있는지 확인하려면:

  1. Query Configurations 섹션에서 Tables 타일을 찾습니다.

  2. 드롭다운 목록을 사용하여 테이블을 선택합니다.

  3. 프로젝션 정책 레이블이 있는 열을 찾습니다. 프로젝션 정책이 있는 열을 제외한 나열된 모든 열을 프로젝션할 수 있습니다.

어떤 열을 필터링할 수 있나요?

쿼리에서 필터링할 수 있는 열을 확인하려면 다음을 수행합니다.

  1. Query Configurations 섹션에서 Tables 타일을 찾습니다.

  2. 드롭다운 목록을 사용하여 테이블을 선택하고 열을 검토합니다. 나열된 모든 열에 대해 필터링할 수 있습니다.

결과 표시

웹 앱에서 쿼리를 실행하려면 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;
Copy
SELECT gender, regions
  FROM TABLE sample_db.demo.customer;
Copy
일반 테이블 식(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;
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

쿼리에서는 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;
Copy
DATE_TRUNC

허용됨

SELECT COUNT(*),
  DATE_TRUNC('week', date_joined) AS week
  FROM consumer_sample_database.audience_overlap.customers
  GROUP BY week;
Copy
따옴표가 있는 식별자

허용됨

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