개인정보 보호 도메인 정보¶
Snowflake의 차등 개인정보 보호 내에서 개인정보 보호 도메인 은 수학적 도메인과 유사하게 열에서 가능한 값을 정의합니다. 개인정보 보호 도메인은 최소값과 최대값을 갖는 값의 범위이거나 열거된 값 목록입니다.
개인정보 보호 도메인은 개인정보 보호를 위해 추가해야 하는 노이즈 의 양을 계산하는 데 Snowflake가 사용하는 요소 중 하나입니다. 이러한 이유로 대부분 분야에서는 유한한 개인정보 보호 도메인이 있어야 합니다. 그렇지 않으면 추가되는 노이즈 양도 무한해야 합니다. 기본적으로 개인정보 도메인이 없는 필드는 무한 도메인을 갖는 것으로 간주됩니다.
어떤 열에 개인정보 보호 도메인이 필요합니까?¶
COUNT 함수를 제외하고 쿼리는 열에 개인정보 보호 도메인이 없으면 열을 집계할 수 없습니다. 마찬가지로, 쿼리는 열에 개인정보 보호 도메인이 없는 경우 GROUP BY 절의 열을 사용할 수 없습니다. 예를 들어, 다음 예제에서 score
및 age
열에는 모두 개인정보 보호 도메인이 있어야 합니다.
SELECT AVG(age) FROM t1
GROUP BY score;
df.group_by("score").agg(f.mean("age").as_("mean_age")).show()
이러한 요구 사항은 하위 쿼리에는 적용되지 않습니다. 예를 들어, 다음 쿼리에서 mean_age
열에는 개인정보 보호 도메인이 있어야 하지만 score
및 age
열은 집계에 사용되더라도 개인정보 보호 도메인이 없습니다.
SELECT AVG(mean_age)
FROM (SELECT AVG(age) AS mean_age FROM t1 GROUP BY score)
WHERE mean_age >= 20 AND mean_age <= 80;
df.group_by("score").agg(f.mean("age").as_("mean_age")) \
.where((f.col("mean_age") >= 20) & (f.col("mean_age") <= 80)) \
.select(f.mean("mean_age")).show()
개인정보 보호 도메인 정의하기¶
쿼리를 실행하는 관리자와 분석가는 모두 열에 대한 개인정보 보호 도메인을 정의할 수 있지만 그 방법은 서로 다릅니다.
관리자는 CREATE TABLE 및 ALTER TABLE 명령을 사용하여 열의 개인정보 보호 도메인을 설정합니다. 데이터 공급자의 관리자가 분석가에게 액세스 권한을 부여하기 전에 개인정보 보호 도메인을 설정합니다. 경우에 따라 분석가의 관리자가 데이터 공급자의 보호된 테이블과 조인되는 테이블에 개인정보 보호 도메인을 설정해야 할 수도 있습니다. 개인정보 보호 도메인을 설정해야 하는 관리자의 경우 관리자로 개인정보 보호 도메인 관련 작업하기 섹션을 참조하십시오.
분석가는 필터 및 열 변환과 같은 쿼리 요소를 사용하여 개인정보 보호 도메인을 암시적으로 지정하도록 쿼리를 구성합니다. 이러한 개인정보 도메인은 개인정보 도메인이 없는 열에 대해 지정되거나 데이터 공급자가 설정한 개인정보 도메인을 좁힐 수 있습니다. 개인정보 보호 도메인을 지정하거나 범위를 축소해야 하는 분석가의 경우 분석가로 개인정보 보호 도메인 관련 작업하기 섹션을 참조하십시오.
개인정보 도메인 간 상호 작용¶
쿼리에는 여러 개인정보 보호 도메인이 포함될 수 있습니다. 동일한 열에 관리자가 지정한 개인정보 보호 도메인과 분석가가 지정한 개인정보 보호 도메인이 있을 수 있습니다. 또는 쿼리는 두 테이블 모두에 개인정보 도메인이 있는 열을 기준으로 두 테이블을 조인할 수 있습니다.
Snowflake는 모든 개인정보 도메인을 평가하고 쿼리 기간 동안 사용할 개인정보 도메인을 계산합니다. 이 쿼리 시간 개인정보 보호 도메인이 결정되는 방식에 대한 자세한 내용은 다음을 참조하십시오.
관리자가 지정한 개인정보 보호 도메인과 분석가가 지정한 개인정보 보호 도메인 간 상호 작용¶
분석가는 쿼리 요소를 사용하여 열에 대한 개인정보 보호 도메인을 암시적으로 지정합니다. 예를 들어, 열을 필터링하면 해당 열의 개인정보 보호 도메인이 정의됩니다. 분석가가 지정한 이 개인정보 보호 도메인은 쿼리 기간 동안만 존재하며, 관리자가 열에 설정한 개인정보 보호 도메인은 변경되지 않습니다.
분석가가 지정한 개인정보 보호 도메인은 관리자가 지정한 개인정보 보호 도메인을 좁힐 수 있지만, 확장할 수는 없습니다. 쿼리 시간 개인정보 보호 도메인은 쿼리에서 지정한 개인정보 보호 도메인과 관리자가 설정한 개인정보 보호 도메인 간의 교차점입니다. 예를 들어, 데이터 공급자가 개인정보 보호 도메인을 범위 (5, 15)로 설정하고 쿼리가 필터를 사용하여 개인정보 보호 도메인을 범위 (0, 10)로 지정하는 경우, 쿼리 시점의 유효 개인정보 보호 도메인은 (5, 10)이 됩니다.
마찬가지로 관리자가 개인정보 보호 도메인을 목록( ‘blue’, ‘yellow’ )으로 설정하고 쿼리에서 필터를 사용하여 ( ‘orange’, ‘blue’)의 개인정보 보호 도메인을 지정하는 경우 쿼리 시 개인정보 보호 도메인은 ( ‘blue’ )입니다.
개인정보 보호 도메인 및 조인¶
분석가가 두 테이블 모두에 개인정보 도메인이 있는 열에 대해 두 테이블을 조인하는 경우, 조인 유형에 따라 쿼리 시 개인정보 도메인이 결정됩니다. 쿼리 기간 동안 유효한 개인정보 보호 도메인은 두 개인정보 보호 도메인의 교차점, 두 개인정보 보호 도메인의 합집합 또는 개인정보 보호 도메인 중 하나만 사용할 수 있습니다.
다음 테이블에서 domainL
은 왼쪽 테이블의 조인 열에 있는 개인정보 보호 도메인을 참조하고 domainR
은 오른쪽 테이블의 조인 열에 있는 개인정보 보호 도메인을 참조합니다.
조인 유형 |
쿼리 시간 개인정보 보호 도메인 |
---|---|
INNER |
|
OUTER |
|
LEFT |
|
RIGHT |
|
LEFT SEMI |
|
LEFT ANTI |
|
예를 들어, t1
의 day
열은 개인정보 보호 도메인이 (1, 100)이고 t2
의 day
열은 개인정보 보호 도메인이 (0, 90)이라고 가정합니다. 분석가가 t1
및 t2
를 day
에 조인할 때 쿼리 시간 개인정보 보호 도메인은 두 개인정보 보호 도메인의 교차점인 (1, 90)이 됩니다.
개인정보 도메인 외부의 값¶
개인정보 보호 도메인은 열의 가능한 값을 정의하며, 반드시 실제 값을 정의하는 것은 아닙니다. 다음은 개인정보 보호 도메인 목록이나 범위에 포함되지 않은 값에 발생하는 사항을 요약한 것입니다.
- 문자열
개인정보 보호 도메인을 벗어나는 문자열 열의 값은 쿼리 기간 동안 항상 NULL로 취급됩니다. 이는 관리자가 지정한 개인정보 보호 도메인, 분석가가 지정한 개인정보 보호 도메인 또는 개인정보 보호 도메인의 교차점에 관계없이 마찬가지입니다.
예를 들어, 데이터 공급자가 (
'california'
,'oregon'
)의state
열에 개인정보 보호 도메인을 설정하고 분석가가state
열을 ('nevada'
,'oregon'
)로 필터링하는 쿼리를 작성했다고 가정해 보겠습니다. 쿼리가 GROUP BY 절에서state
열을 사용하는 경우 결과에는 두 개의 그룹OREGON
및NULL
이 포함됩니다.NULL
그룹에는state
열의 값이OREGON
이 아닌 모든 레코드와state
열의 값이 문자 그대로NULL
인 레코드가 포함됩니다.
- 숫자, 날짜 및 시간
Snowflake는 개인정보 보호 도메인 범위를 벗어나는 숫자, 날짜 또는 시간 값을 관리자나 분석가가 개인정보 보호 도메인을 정의했는지 여부에 따라 다르게 처리합니다.
- 관리자 지정:
데이터 공급자가 열의 실제 값의 하위 세트를 포함하는 범위 개인정보 보호 도메인을 정의하면, 개인정보 보호 도메인 외부의 값은 클램핑되어 도메인에서 가장 가까운 값(최소 또는 최대 값)인 것처럼 취급됩니다. 예를 들어, 열의 개인정보 보호 도메인이 1~100 사이의 정수로 구성된 경우 실제 값이 105인 레코드는 집계를 계산할 때 값이 100인 것처럼 처리됩니다. 분석가는 개인정보 보호 도메인 외부의 값에 액세스할 수 없습니다.
개인정보 보호가 적용된 두 테이블을 조인 하면 개인정보 보호 도메인이 교차하는 경우 쿼리 시점의 개인정보 보호 도메인 외부의 값은 클램핑됩니다.
- 분석가 지정:
분석가가 개인정보 보호 도메인이 없는 열에 대해 개인정보 보호 도메인을 지정하거나 관리자가 지정한 개인정보 보호 도메인을 좁히면 쿼리 자체에서 개인정보 보호 도메인을 벗어난 값에 대해 어떤 작업을 수행할지 결정합니다.
중간 쿼리 요소가 개인정보 보호 도메인에 미치는 영향¶
쿼리가 작성되는 방식에 따라 개인정보 도메인의 범위가 변경되는지 여부나 개인정보 도메인이 열에 계속 존재하는지 여부가 영향을 받을 수 있습니다. 이 섹션은 쿼리의 중간 부분, 즉 최종 집계 이전의 쿼리 부분이 열의 개인정보 보호 도메인에 어떤 영향을 미칠 수 있는지 이해하는 데 도움이 됩니다.
- 새 열 추가
쿼리가 기존 열을 기반으로 새 열을 추가하는 경우 원래 열의 개인정보 보호 도메인을 지정하거나 좁혀도 새 열에는 아무런 영향이 없습니다.
다음 예제에서는 데이터 공급자가
score
열의 개인정보 보호 도메인을 0~100 사이의 범위로 정의했다고 가정합니다. 쿼리에서score
의 개인정보 보호 도메인을 1~2 사이의 범위로 지정하면score_derived
열의 개인정보 보호 도메인에는 영향을 미치지 않습니다.
SELECT AVG(score_derived)
FROM (SELECT score, score_derived FROM t1 WHERE score <= 2);
df.with_column("score_derived", f.col("score")) \
.where((f.col("score") >= 1) & \
(f.col("score") <= 2)) \
.select(f.mean("score_derived")).show()
예를 들어, 출력은 다음과 같습니다.
--------------------------
|"avg(""SCORE_DERIVED"")"|
--------------------------
|31.8196209349 |
--------------------------
- 중간 집계에서 GROUP BY 절 사용하기
쿼리 중간 부분의 경우 열을 집계하는 동안 GROUP BY 절을 사용하면 열에서 개인정보 보호 도메인이 제거됩니다. 결과적으로, 쿼리의 최종 집계에 사용되는 경우 해당 열에 새로운 개인정보 보호 도메인을 지정해야 합니다.
다음 예제에서는 초기 집계에서
score
열에 설정된 모든 개인정보 보호 도메인을 제거합니다. 이 쿼리는 최종 집계 전에 열의 별칭에 개인정보 보호 도메인을 설정하기 때문에 성공합니다.
SELECT AVG(num_scores)
FROM (SELECT COUNT(score) AS num_scores
FROM t1
GROUP BY age)
WHERE num_scores >= 0 AND num_scores <= 100;
df.group_by("age").agg(f.count("score").as_("num_scores")) \
.where((f.col("num_scores") >= 0) & (f.col("num_scores") <= 100)) \
.select(f.mean("num_scores")).show()