管理者としてのプライバシードメインの操作

プライバシードメイン は、数学のドメインと同様、列の可能な値を定義します。Snowflakeは、プライバシードメインを使用して、結果にどの程度のノイズを付加するかを決定します。

このセクションのタスクを完了する前に、プライバシードメインを完全に理解するには、 プライバシードメインについて をご参照ください。

データプロバイダーにとってのベストプラクティスは、アナリストにデータを配布する に、アナリストがアクセスする可能性のあるすべての数値列とカテゴリ列にプライバシードメインを設定することです。

プライバシードメインの選択

プライバシードメインは、列の 可能な 値を定義するものであり、必ずしも 実際の 値を定義するものではありません。プライバシードメインは、実際の値を含まないように、必要に応じて狭めたり広げたりすることができます。たとえば、以下のいずれかを実行できます。

  • 正確な値をわかりにくくするために、より広範なリストを定義する。アナリストはプライバシードメインを表示できるので、列の正確な内容を公開したくない場合があります。たとえば、ある列に郵便番号のサブセットが含まれているとします。可能な郵便番号すべてを含むようにプライバシードメインを広げることで、特定の郵便番号がデータセットに含まれているかどうかをわかりにくくすることができます。

  • 異常値の存在をわかりにくくするために、より狭い範囲を定義する。たとえば、ほとんどの値が1から50の間である場合、平均が異常に高いことでアナリストが100の存在を推測できるため、100の値を平均に含めたくない場合があります。

プライバシードメイン外の値がどのように扱われるかについての情報は、 プライバシードメイン外の値 をご参照ください。

重要

プライバシー保護されたテーブルをクエリする権限を持つ人であれば、そのテーブルの列のプライバシードメインを表示できるので、プライバシードメインは慎重に選ぶようにしてください。

ほとんどのフィールドがプライバシードメインを持つべきですが、重要な例外もあります。たとえば、ユーザー ID、電子メール、クレジットカード番号、社会保障番号のような一意識別子フィールドは、プライバシードメインを 持つべきではありません。ユーザーは正確なプライバシードメインを見ることができるため、通常は、特定の識別子がデータセットに存在するかどうかをアナリストに知られたくありません。

対照的に、郵便番号、ヘルスケアデータの ICD コード、 NAICS コードなど、個々のエンティティに固有ではなく、可能な値が公開されている識別子フィールドについては、プライバシードメインに実際の値を含めるべきです。

プライバシードメインの設定

プライバシードメインは、最小値と最大値を持つ値の範囲、または値の列挙リストとして定義します。一般的に、プライバシードメインのタイプは列のデータ型に基づいています。データ型が以下のリストにない列には、プライバシードメインを設定できません。

データ型

プライバシードメインのタイプ

数値

日付と時刻

範囲

文字列

列挙リスト

プライバシードメインを設定、変更、削除するには、テーブルに対する OWNERSHIP 権限が必要です。プライバシードメインは、以下を実行する場合に設定できます。

このような方法のそれぞれで、新しいプライバシードメインの構文は同一です。

注釈

テーブルが削除されると、そのプライバシードメインも削除されます。これは CREATE OR REPLACE コマンドにも適用されます。

プライバシードメインの構文

プライバシードメインを作成する構文は次のようになります。

PRIVACY DOMAIN
  {
      [ BETWEEN ( <lo_value>, <hi_value> ) ]
    | [ IN ( '<value1>, '<value2>', ... ) ]
    | [ REFERENCES <table_name>( <col_name> ) ]
  }
Copy

パラメーター

パラメーターを1つ指定する必要があります。

BETWEEN ( lo_value, hi_value )

列に可能な値の範囲であるプライバシードメインを作成します。ここで、 lo_value が最小値、 hi_value が最大値になります。

IN ( 'value1', 'value2', ... )

指定された値の列挙リストであるプライバシードメインを作成します。

IN パラメーターには最大50個の値が許可され、各値には最大100文字を含めることができます。50を超える値の列挙リストを指定する必要がある場合は、 REFERENCES パラメーターを使用します。

REFERENCES table_name( col_name )

テーブルの列に含まれる値からなる列挙リストであるプライバシードメインを作成します。

REFERENCES プライバシードメインを持つテーブルに対して差分プライベートのクエリを行うユーザーは、プライバシードメインで参照される列を含むテーブルに対する SELECT 権限を持っていなければなりません。つまり、プライバシー保護されたテーブルを共有し、そのテーブルが別のテーブルを参照している場合は、参照されているテーブルを同じ共有内で共有するのがベストです。

プライバシードメインはそれ自体を参照することができますが、この機能を使うときは注意が必要です。プライバシードメインがそれ自体の列を参照する場合、列挙されたリストには、列のすべての 可能な 値ではなく、列の 実際の 値がすべて含まれます。たとえば、 zipcode の列のプライバシードメインがそれ自体を参照している場合、アナリストがプライバシードメインを表示すると、特定の郵便番号がデータセットに含まれているかどうかか確実にわかります。

注釈

初めてテーブルを作成するときに、それ自体を参照するプライバシードメインを定義することはできません。まずテーブルを作成してから、 別のコマンドでプライバシードメインを設定 します。

参照される列には、16,384の固有の値を含めることができます。

新しいテーブルを作成する際のプライバシードメインの設定

CREATE TABLE コマンドを使用してテーブルを作成する際に、列にプライバシードメインを設定する構文は次のようになります。

CREATE TABLE <table_name>
  ( <col_name> <col_type> PRIVACY DOMAIN
    {
        [ BETWEEN ( <lo_value>, <hi_value> ) ]
      | [ IN ( '<value1>', '<value2>', ... ) ]
      | [ REFERENCES <table_name>( <col_name> ) ]
    }
  )
Copy

詳細については、 プライバシードメインの構文 をご参照ください。

新しい列を追加する際のプライバシードメインの設定

ALTER TABLE を使用して既存のテーブルに新しい列を追加する際に、プライバシードメインを設定する構文は次のようになります。

ALTER TABLE <table_name>
  ADD COLUMN <col_name> <col_type> PRIVACY DOMAIN
    {
        [ BETWEEN ( <lo_value>, <hi_value> ) ]
      | [ IN ( '<value1>', '<value2>', ... ) ]
      | [ REFERENCES <table_name>( <col_name> ) ]
    }
Copy

詳細については、 プライバシードメインの構文 をご参照ください。

列の変更によるプライバシードメインの設定

ALTER TABLE ... ALTER COLUMN を使用してテーブルの既存の列にプライバシードメインを設定する構文は次のようになります。

ALTER TABLE <table_name>
  { ALTER | MODIFY } COLUMN <col1_name> SET PRIVACY DOMAIN
    {
        [ BETWEEN ( <lo_value>, <hi_value> ) ]
      | [ IN ( '<value1>', '<value2>', ... ) ]
      | [ REFERENCES <table_name>( <col_name> ) ]
    }
Copy

詳細については、 プライバシードメインの構文 をご参照ください。

プライバシードメインの変更

既存のプライバシードメインを変更する構文は、 既存の列に新しいプライバシードメインを作成する 構文と同じです。ALTER TABLE ..ALTER COLUMN ... SET PRIVACY DOMAIN コマンドは古いプライバシードメインを新しいものに置き換えます。

プライバシードメインの削除

ALTER TABLE ... ALTER COLUMN コマンドを使用して列からプライバシードメインを削除する構文は次のようになります。

ALTER TABLE <table_name>
  { ALTER | MODIFY } COLUMN <col1_name> UNSET PRIVACY DOMAIN
Copy

プライバシードメインの表示

プライバシー保護されたテーブルまたはビューのプライバシードメインを表示するには、 DESCRIBE TABLE または DESCRIBE VIEW コマンドを実行します。列のプライバシードメインは、出力の PRIVACY_DOMAIN 列に表示されます。

プライバシー保護されたテーブルのプライバシードメインを表示するには、 SELECT 権限が必要です。

プライバシードメインオブジェクトの解釈

列のプライバシードメインは JSON オブジェクトとして返されます。JSON オブジェクトの domain_type フィールドは、プライバシードメインが値の範囲か列挙リストかを示します。オブジェクトの残りのフィールドは、 domain_type フィールドの値に依存します。

プライバシードメインの JSON オブジェクトは、以下のフィールドを含むことができます。

domain_type

プライバシードメインのタイプを示します。

BETWEEN

プライバシードメインは、列の可能な値の範囲になります。

IN

プライバシードメインは、列の可能な値の列挙リストになります。

REFERENCES

プライバシードメインは、列の可能な値の列挙リストになります。このリストは、同じテーブルまたは別のテーブルの列に由来します。プライバシードメインの列挙リストを表示するには、参照する列の内容をクエリします。

low

domain_type = BETWEEN の場合、可能な値の範囲における最小値を指定します。

high

domain_type = BETWEEN の場合、可能な値の範囲における最大値を指定します。

values

domain_type = IN の場合、配列として構造化された可能な値の列挙リストを指定します。

database

domain_type = REFERENCES の場合、可能な値の列挙リストを作成するためにSnowflakeが参照する列を含むデータベースを指定します。

schema

domain_type = REFERENCES の場合、可能な値の列挙リストを作成するためにSnowflakeが参照する列を含むスキーマを指定します。

table

domain_type = REFERENCES の場合、可能な値の列挙リストを作成するためにSnowflakeが参照する列を含むテーブルを指定します。

column

domain_type = REFERENCES の場合、可能な値の列挙リストを構築するためにSnowflakeが参照する列を指定します。プライバシードメインの列挙リストを表示するには、この列の内容をクエリします。