カテゴリ:

システム関数

EXTRACT_SEMANTIC_CATEGORIES

指定されたテーブルまたはビューでサポートされている各列のカテゴリのセット(セマンティックおよびプライバシー)を返します。列のカテゴリを返すには、列で分類をサポートする データ型 を使用し、列にすべての NULL 値が含まれていない必要があります。

カテゴリは、列に含まれるメタデータとデータ、および列とデータに関するメタデータから派生します。プライバシーカテゴリは、生成されたセマンティックカテゴリ(存在する場合)に依存します。

構文

EXTRACT_SEMANTIC_CATEGORIES( '<object_name>' [ , <max_rows_to_scan> ] )
Copy

引数

必須:

object_name

分類される列を含むテーブル、外部テーブル、ビュー、またはマテリアライズドビューの名前。データベースとスキーマが現在のセッションで使用されていない場合は、名前を完全修飾する必要があります。

名前は、データベースに保存されているとおりに正確に指定する必要があります。名前に特殊文字、大文字小文字の区別、または空白スペースが含まれている場合は、名前を最初に二重引用符で囲み、次に一重引用符で囲む必要があります。

オプション:

max_rows_to_scan

指定されたテーブル/ビューの分類カテゴリを決定するために使用する行のサンプルサイズ。

有効値: 1 から 10000

デフォルト: 10000

戻り値

この関数は、分類カテゴリが生成された列ごとに、タグの名前と値のペアを含む単一の JSON オブジェクトを返します。列がサポートされていないデータ型であるか、すべての NULL 値が含まれている場合、その列は出力に含まれません。

JSON オブジェクトの構造は次のとおりです。

{
  "<col1_name>": {
    "extra_info" : {
      "alternates" : [<semantic_categories>],
      "probability" : "<number>"
    },
    "privacy_category" : "<value>",
    "semantic_category" : "<value>"
  },
 ...
 ...
  "<colN_name>": {
    "extra_info" : {
      "alternates" : [<semantic_categories>],
      "probability" : "<number>"
    },
    "privacy_category" : "<value>",
    "semantic_category" : "<value>"
  }
}
Copy

条件:

extra_info

次のキーと値のペアを含むオブジェクト:

  • alternates は、 probability0.80 より小さい場合、他の可能なセマンティックカテゴリの配列です。代替としてリストされるためには、セマンティックカテゴリの確率は 0.15 以上、 0.80 未満である必要があります。

  • probability は、分類アルゴリズムが semantic_category の正しい値を導出した可能性を示す数値です。最大確率は 1.00 で、最小しきい値は 0.15 です(つまり、すべてのセマンティックカテゴリの確率が 0.15 未満の場合、 probabilitysemantic_category の値は返されません)。

privacy_category

列のセマンティックカテゴリに基づく、タグ値として IDENTIFIERQUASI_IDENTIFIER、または SENSITIVE を使用した列のプライバシーカテゴリタグ。

semantic_category

分類アルゴリズムによって導出されたタグ値を持つ、列のセマンティックカテゴリタグ。可能な値のリストについては、 システムタグおよびカテゴリ をご参照ください。

たとえば、テーブルに fnamelnameage、および email_address という名前の列がある場合、関数は次のような出力を返す可能性があります。

{
  "AGE": {
    "extra_info" : {
      "alternates" : [],
      "probability" : "1.00"
    },
    "privacy_category" : "QUASI_IDENTIFIER",
    "semantic_category" : "AGE"
  },
  "EMAIL_ADDRESS": {
  "extra_info": {
    "alternates": [],
    "probability": "1.00"
  },
  "privacy_category": "IDENTIFIER",
  "semantic_category": "EMAIL"
},
  "FNAME": {
    "extra_info" : {
      "alternates" : [],
      "probability" : "1.00"
    },
    "privacy_category" : "IDENTIFIER",
    "semantic_category" : "NAME"
  },
  "LNAME": {
    "extra_info" : {
      "alternates" : [],
      "probability" : "1.00"
    },
    "privacy_category" : "IDENTIFIER",
    "semantic_category" : "NAME"
  }
}
Copy

使用上の注意

  • この関数には、関数が実行されるセッションでアクティブな稼動中のウェアハウスが必要です。

    ウェアハウスのサイズは、テーブル/ビューでデータを分類するために必要な時間に影響を与える可能性があります。特に、分類するデータを含む列が多数あるテーブルの場合はそうです。原則として、ウェアハウスが大きいほど時間が短縮されます。

  • 複数の可能なセマンティックカテゴリを持っていると分類が識別する列ごとに、次のようになります。

    • 確率が 0.80 (またはそれ以上)のすべてのカテゴリについて、確率が最も高いカテゴリが semantic_category の値としてリストされます。

    • 0.15 (またはそれ以上)の確率を持つすべてのカテゴリは、 alternates としてリストされます。

    • 0.80 (またはそれ以上)の確率を持つカテゴリがない場合、 semantic_categoryprobability の値は表示されません。同様に、 0.15 (またはそれ以上)の確率を持つカテゴリがない場合、 alternates の値は表示されません。

スキャンする行数のデフォルト(10000)を使用して、 my_db.my_schema.hr_data テーブルのセマンティックカテゴリとプライバシーカテゴリを抽出します。

USE ROLE data_engineer;

USE WAREHOUSE classification_wh;

SELECT EXTRACT_SEMANTIC_CATEGORIES( 'my_db.my_schema.hr_data' );
Copy

前の例と同じですが、テーブル内の5000行のみをスキャンするように制限されています。

USE ROLE data_engineer;

SELECT EXTRACT_SEMANTIC_CATEGORIES( 'my_db.my_schema.hr_data', 5000 );
Copy

最初の例と同じですが、結果をテーブルに保存します。

USE ROLE data_engineer;

CREATE OR REPLACE TABLE classification_results(v VARIANT) AS
  SELECT EXTRACT_SEMANTIC_CATEGORIES( 'my_db.my_schema.hr_data');
Copy

結果がテーブルに保存されたら、 ASSOCIATE_SEMANTIC_CATEGORY_TAGS を使用して適用する前に結果を修正できます。