ESTIMATE_REMAINING_DP_AGGREGATES
ESTIMATE_REMAINING_DP_AGGREGATES
ESTIMATE_REMAINING_DP_AGGREGATES 함수는 프라이버시 예산(budget)의 한도에 도달하기 전에 실행할 수 있는 집계 함수의 추정 개수를 반환해요.
본문
ESTIMATE_REMAINING_DP_AGGREGATES 함수는 프라이버시 예산의 한도에 도달하기 전에 실행할 수 있는 집계 함수의 추정 개수를 반환해요. 남은 집계의 수는 추정치예요. 프라이버시 예산 한도에 도달하기 전에 허용되는 실제 집계 함수 수는 다양한 요인에 따라 실제로 달라질 수 있어요.
이 함수는 차등 프라이버시를 구현하고 프라이버시 보호 테이블을 쿼리하는 데 모두 유용해요:
- 분석가는 이 함수를 사용해 예산 창(budget window)에 남아 있는 프라이버시 예산이 대략 얼마인지 추정할 수 있어요.
- 프라이버시 정책 소유자는 이 함수를 사용해 프라이버시 예산 한도가 모든 사용자에게 적절하도록 프라이버시 예산 설정을 미세 조정할 수 있어요.
프라이버시 예산은 쿼리별이 아니라 집계 함수별로 계산돼요. 따라서 SELECT SUM(age), COUNT(age) FROM T GROUP BY STATE; 쿼리는 SELECT SUM(age) FROM T; 쿼리보다 두 배의 프라이버시 손실을 발생시켜요(즉, 해당 쿼리는 '두 배의 비용'이 들어요). 일반적으로 모든 집계 함수의 비용은 동일해요: 프라이버시 정책 본문의 MAX_BUDGET_PER_AGGREGATE 매개변수 값. GROUP BY 절은 집계 함수로 간주되지 않으며 프라이버시 손실을 발생시키지 않는다는 점에 유의해요.
또한 이 함수는 사용된 예산(즉, 현재 누적 프라이버시 손실)도 반환해요. 하지만 Snowflake는 예산 사용량보다 추정된 남은 예산에 초점을 둘 것을 권장해요. 사용된 예산은 선형 함수(집계 수 * 집계당 비용)가 아니라 준선형(sub-linear) 함수예요. 즉, 예산 창 기간 동안 추가 집계의 총 비용은 사용량이 늘어날수록 감소해요. 이것이 추정된 남은 집계 수가 (남은 프라이버시 손실 예산) / (함수당 프라이버시 손실) 공식보다 더 큰 이유예요.
Enterprise Edition 기능: 이 기능에는 Enterprise Edition(또는 그 이상)이 필요해요. 업그레이드 문의는 Snowflake 지원팀에 문의하세요.
구문 (Syntax)
SNOWFLAKE.DATA_PRIVACY.ESTIMATE_REMAINING_DP_AGGREGATES('<table_name>')
인자 (Arguments)
- table_name — 차등 프라이버시 정책으로 보호되는 테이블의 이름이에요. 함수는 마지막 예산 갱신 이후 이 테이블에 대해 실행한 쿼리를 기반으로 프라이버시 예산 데이터를 반환해요.
출력 (Output)
함수는 다음 열이 있는 테이블을 반환해요:
| 열 (Column) | 데이터 타입 (Data type) | 설명 (Description) |
|---|---|---|
| NUMBER_OF_REMAINING_DP_AGGREGATES | INT | 분석가가 프라이버시 예산 한도를 초과하기 전에 호출할 수 있는 남은 집계 함수의 추정 수 |
| BUDGET_LIMIT | DECIMAL | 프라이버시 정책에 정의된, 지정된 테이블을 보호하는 프라이버시 예산의 현재 한도. 프라이버시 예산 한도를 조정하려면 프라이버시 예산의 프라이버시 설정 설정(Set privacy settings for a privacy budget)을 참조 |
| BUDGET_WINDOW | STRING | 프라이버시 예산의 갱신 주기, 즉 누적 프라이버시 손실이 0으로 재설정되는 빈도. 테이블을 보호하는 프라이버시 정책에 정의됨. 갱신 주기를 조정하려면 갱신 주기 수정(Modify the refresh period)을 참조 |
| BUDGET_SPENT | DECIMAL | 현재 예산 창 동안 현재 역할을 사용하는 현재 사용자가 발생시킨 누적 프라이버시 손실 |
접근 제어 권한 (Access control privileges)
이 함수를 실행하려면 다음 권한이 필요해요:
- 지정된 테이블에 대한
SELECT권한 - 지정된 테이블의 데이터베이스 및 스키마에 대한
USAGE권한
사용 메모 (Usage notes)
- 추정은 함수를 실행하는 사용자가 실행한 쿼리를 기반으로 해요. 쿼리는 여러 조건에 따라 프라이버시 예산과 연결되므로, 이 함수를 실행하는 환경이 쿼리를 실행한 환경과 정확히 동일한지(예: 사용자, 역할, 계정) 확인해야 해요.
- 여러 테이블을 사용하는 쿼리를 실행하는 경우 각 테이블에 대해
ESTIMATE_REMAINING_DP_AGGREGATES를 한 번씩 실행한 다음, 가장 낮은NUMBER_OF_REMAINING_DP_AGGREGATES값을 추정 사용량 상한으로 사용해야 해요. - 출력이 비어 있으면 테이블이 차등 프라이버시로 보호되지 않는 것(즉, 프라이버시 정책이 할당되지 않은 것)을 나타내요.
예제 (Examples)
SELECT * FROM TABLE(SNOWFLAKE.DATA_PRIVACY.ESTIMATE_REMAINING_DP_AGGREGATES('my_table'));
+-----------------------------------+--------------+---------------+--------------+
| NUMBER_OF_REMAINING_DP_AGGREGATES | BUDGET_LIMIT | BUDGET_WINDOW | BUDGET_SPENT |
|-----------------------------------+--------------+---------------+--------------|
| 994 | 233 | WEEKLY | 1.8 |
+-----------------------------------+--------------+---------------+--------------+
쿼리의 효과를 확인하기 위해 ESTIMATE_REMAINING_DP_AGGREGATES 함수를 사용하는 방법을 보여주는 확장 예제는 프라이버시 예산 지출 추적(Tracking privacy budget spending)을 참조해요.
더 알아보기 (Learn more)
- 차등 프라이버시 함수 (Differential privacy functions)
- 차등 프라이버시 (Differential privacy)
- 테이블 함수 (Table functions)