アナリストとしてのプライバシードメインの操作¶
プライバシードメイン は、数学のドメインと同様、列の可能な値を定義します。Snowflakeは、プライバシードメインを使用して、結果にどの程度のノイズを付加するかを決定します。
このセクションのタスクを完了する前に、プライバシードメインを完全に理解するには、 プライバシードメインについて をご参照ください。
データプロバイダーがベストプラクティスに従っていれば、プライバシー保護されたテーブルのほとんどの数値列とカテゴリ列がプライバシードメインを持ちます。データプロバイダーが GROUP BY 句で集計または使用したい列にプライバシードメインを設定しなかった場合は、その列に暗黙的にプライバシードメインを指定するテクニックを含むようにクエリを作成する必要があります。データプロバイダーがテーブルに設定したプライバシードメインも、テーブル上で行われた操作に基づいて失われる可能性があります。たとえば、サブクエリ内のフィールドを GROUP BY で集計すると、プライバシー制約のため、システムはプライバシードメインを導出できない場合があります。
データプロバイダーが設定したプライバシードメインを絞めるようにクエリを書くこともできます。この上書きは、集計結果を改善するのに役立ちます。
注釈
プライバシー保護されたテーブルと 結合する要件 を満たすために、アナリストは、自分のテーブルの列がプライバシー保護されていなくても、その列にプライバシードメインを定義する必要が生じる場合があります。これらのプライバシードメインはテーブルレベルで定義され、テーブルに対するすべてのクエリに適用されます。アナリストの管理者がテーブルの列にプライバシードメインを指定する必要がある場合は、 プライバシードメインの設定 をご参照ください。
プライバシードメインの表示¶
プライバシー保護されたテーブルをクエリする前に、そのテーブルのプライバシードメインを表示すると便利です。各列のプライバシードメインをチェックすることは、以下のような点で役立ちます。
データプロバイダーが列にプライバシードメインを設定したかどうかを判断します。
列に含まれる可能性のある値を判断することで、分析の改善に役立てることができます。たとえば、プライバシードメインが列に含まれる可能性のある値の範囲である場合、その範囲の最小値と最大値を判断することができます。
結果で ノイズ が予想以上に多い理由を調査してください。分析にとって重要でない異常値があるかどうかを特定し、それらの値を集計から削除することで、 結果を改善 することができます。
列にプライバシードメインがあるかどうかを確認し、もしある場合は、ドメインのタイプと可能な値を判断するには、 プライバシードメインの表示 をご参照ください。
プライバシードメインの指定¶
このセクションでは、アナリストがクエリの間のプライバシードメインを設定するために使用できるテクニックについて説明します。これは、クエリの構造がどのように列のプライバシードメインを指定するかをまとめたものです。
文字列列のプライバシードメインの指定¶
WHERE 句を使った文字列列のフィルタリングによってプライバシードメインを指定します。プライバシードメインは、フィルターにマッチする値で構成されます。たとえば、 product
列に以下の句を含む場合、クエリは次のようなプライバシードメインを指定します。
WHERE product = 'hackeysack' OR product = 'frisbee'WHERE product IN ('hackeysack', 'frisbee')
プライバシードメインは、 hackeysack
と frisbee
からなる列挙リストです。
データプロバイダーが product
列にプライバシードメインを設定済みの場合、Snowflakeはクエリの間、2つのプライバシードメインの交差を使用します。詳細については、 管理者指定のプライバシードメインとアナリスト指定のプライバシードメインの相互作用 をご参照ください。
文字列列のプライバシードメインの値は、 NULL として扱われる ことになります。
数値列、日付列、時刻列のプライバシードメインの指定¶
フィルタリング句や列変換を使用して、数値列、日付列、時刻列のプライバシードメインを指定することができます。このようなクエリテクニックは、可能な値の範囲であるプライバシードメインを指定します。
数値列、日付列、時刻列にプライバシードメインを指定するには、以下のテクニックを使用できます。
- WHERE 句
例:
WHERE a < 10 AND a >= 0
列
a
の指定されたプライバシードメインは0から10の間となっています。データプロバイダーが
a
列にプライバシードメインを設定済みの場合、Snowflakeはクエリの間、2つのプライバシードメインの交差を使用します。詳細については、 管理者指定のプライバシードメインとアナリスト指定のプライバシードメインの相互作用 をご参照ください。フィルターを使用すると、プライバシードメイン外にある値が削除されます。つまり、これらの値は集計を行う際に無視されます。詳細については、 数値、日付、時刻 をご参照ください。
- GREATEST と LEAST 列の変換
例:
GREATEST(LEAST(a, 100), 0) AS clamped_a
プライバシードメインの指定された範囲は0から100の間となっています。
データプロバイダーが
a
列にプライバシードメインを設定済みの場合、Snowflakeはクエリの間、2つのプライバシードメインの交差を使用します。詳細については、 管理者指定のプライバシードメインとアナリスト指定のプライバシードメインの相互作用 をご参照ください。データプロバイダーによって設定されたプライバシードメインを狭める場合、 GREATEST または LEAST 変換のうちの1つだけを使用して、データプロバイダーによって定義されたプライバシードメインと同じ範囲のもう一方の端を維持したまま、最大値を減らしたり最小値を増やしたりすることができます。
プライバシードメイン外にある列の値は、 クランプされます が、これはドメイン内で最も近い値(最小値または最大値)であるかのように扱われるということです。
結果を改善するためにプライバシードメインを狭める¶
Snowflakeは、プライバシードメイン内で正確な値を隠すために、十分な ノイズ を付加する必要があります。プライバシードメインに、列のほとんどのデータから外れている値が含まれている場合、Snowflakeはノイズを増やして、それらの値の存在をわかりにくくする必要があります。プライバシードメインを上書きしてその範囲を狭めると、分析にとって重要でない値の存在をSnowflakeがわかりにくくする必要がなくなるため、ノイズを減らすことができます。
プライバシードメインを狭めるために使用するテクニックは、集計方法に影響します。その選択は、分析にとって何が重要かによって決まります。
フィルター(WHERE 句)を使ってプライバシードメインを狭めると、集計の際にドメイン外の値は無視されます。
プライバシードメインの異常値がデータ品質に問題があると思われる場合、またはこれらの値がクエリに関連していない場合、フィルターの使用が望ましいテクニックです。プライバシードメインから異常値を除外することで、分析結果の整合性を保ちつつ、結果に付加されるノイズを大幅に減らすことができます。
列変換 を使用する場合、ドメイン外の列の値は クランプされます が、これはドメイン内で最も近い値(最小値または最大値)であるかのように扱われるということです。
異常値がデータ品質の問題ではないと思っても、列変換を使用することで、分析を改善することができます。たとえば、値の平均を取る場合、列変換を使って異常値をクランプすれば、分析が改善される可能性があります。
注釈
クエリにデータセット内の限られた数の記録を対象とする高度に選択的なフィルターが含まれている場合、Snowflakeは結果を使用して個人を特定できないようにする必要があるため、ノイズの相対的な量は実質的に増加します。