特徴グループを作成する

特徴グループを作成して、特徴データを含む、BigQuery のテーブルまたはビューを登録できます。

特徴グループに関連付ける BigQuery のテーブルまたはビューについては、次のことを確認する必要があります。

特徴グループを作成して BigQuery データソースを関連付けたら、特徴を作成してデータソースの列と関連付けることができます。特徴グループの作成時にデータソースを指定するのは省略可能です。しかし、特徴を作成する前にはデータソースを指定する必要があります。

特徴グループと特徴を使用してデータソースを登録すると、次のような利点があります。

  • 複数の BigQuery データソースから、特定の特徴列を使用して、オンライン サービング用の特徴ビューを定義できます。

  • 必要に応じて、特徴のタイムスタンプ列を指定して、データを時系列としてフォーマットできます。Vertex AI Feature Store は、特徴データから最新の特徴値のみを提供し、履歴値は除外します。

  • Data Catalog で特徴グループ リソースを検索すると、BigQuery ソースを関連する特徴データソースとして検出できます。

  • 特徴モニタリングを設定すると、特徴の統計情報を取得して特徴量のドリフトを検出できます。

始める前に

まだ行っていない場合は、Vertex AI に対する認証を行います。

Select the tab for how you plan to use the samples on this page:

Console

When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

Python

ローカル開発環境でこのページの Python サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

詳細については Set up authentication for a local development environment をご覧ください。

REST

このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

    Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

BigQuery ソースから特徴グループを作成する

次のサンプルを使用して、特徴グループを作成し、BigQuery データソースを関連付けます。

コンソール

Google Cloud コンソールを使用して特徴グループを作成するには、次の操作を行います。

  1. Google Cloud コンソールの [Vertex AI] セクションで、[Feature Store] ページに移動します。

    [Feature Store] ページに移動

  2. [特徴グループ] セクションで [作成] をクリックし、[特徴グループの作成] ページの [基本情報] ペインを開きます。

  3. [特徴グループ名] を指定します。

  4. 省略可: ラベルを追加するには、[ラベルを追加] をクリックし、ラベル名と値を指定します。特徴グループには複数のラベルを追加できます。

  5. [BigQuery のパス] フィールドで [参照] をクリックし、BigQuery のソーステーブルまたはビューを選択して、そのテーブルまたはビューを特徴グループに関連付けます。

  6. [エンティティ ID 列] リストで、BigQuery ソーステーブルまたはビューのエンティティ ID 列を選択します。

    BigQuery ソーステーブルまたはビューに entity_id という名前の列がある場合は、省略可能です。このとき、エンティティ ID 列を選択しない場合、特徴グループは entity_id 列をデフォルトのエンティティ ID 列として使用します。

  7. [続行] をクリックします。

  8. [登録] ペインで、次のいずれかのオプションをクリックして、新しい特徴グループに特徴を追加するかどうかを指定します。

    • BigQuery テーブルのすべての列を含める - BigQuery ソーステーブルまたはビュー内のすべての列の特徴グループ内に特徴を作成します。

    • 手動で特徴を入力する - BigQuery ソースの特定の列に基づいて特徴を作成します。特徴ごとに特徴名を入力し、リストの対応する BigQuery ソース列名をクリックします。

      別の特徴を追加するには、[他の特徴を追加] をクリックします。

    • 空の特徴グループを作成する - 特徴を追加せずに特徴グループを作成します。

  9. [作成] をクリックします。

Vertex AI SDK for Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Vertex AI SDK for Python API のリファレンス ドキュメントをご覧ください。


from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
from typing import List


def create_feature_group_sample(
    project: str,
    location: str,
    feature_group_id: str,
    bq_table_uri: str,
    entity_id_columns: List[str],
):
    aiplatform.init(project=project, location=location)
    fg = feature_store.FeatureGroup.create(
        name=feature_group_id,
        source=feature_store.utils.FeatureGroupBigQuerySource(
            uri=bq_table_uri, entity_id_columns=entity_id_columns
        ),
    )
    return fg

  • project: 実際のプロジェクト ID。
  • location: 特徴グループを作成するリージョン(us-central1 など)。
  • feature_group_id: 作成する新しい特徴グループの名前。
  • bq_table_uri: 特徴グループに登録する BigQuery ソーステーブルまたはビューの URI。
  • entity_id_columns: エンティティ ID を含む列の名前。1 つまたは複数の列を指定できます。
    • エンティティ ID 列を 1 つだけ指定するには、列名を次の形式で指定します。
      "entity_id_column_name"
    • 複数のエンティティ ID 列を指定するには、列名を次の形式で指定します。
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]

REST

FeatureGroup リソースを作成するには、featureGroups.create メソッドを使用して POST リクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 特徴グループを作成するリージョン(us-central1 など)。
  • ENTITY_ID_COLUMNS: エンティティ ID を含む列の名前。1 つまたは複数の列を指定できます。
    • エンティティ ID 列を 1 つだけ指定するには、列名を次の形式で指定します。
      "entity_id_column_name"
    • 複数のエンティティ ID 列を指定するには、列名を次の形式で指定します。
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]
  • PROJECT_ID: 実際のプロジェクト ID。
  • FEATUREGROUP_NAME: 作成する新しい特徴グループの名前。
  • BIGQUERY_SOURCE_URI: 特徴グループに登録する BigQuery ソーステーブルまたはビューの URI。
  • TIMESTAMP_COLUMN: 省略可。BigQuery のソーステーブルまたはビューに特徴のタイムスタンプを含む列の名前を指定します。
    タイムスタンプ列の名前を指定する必要があるのは、データが時系列としてフォーマットされ、特徴のタイムスタンプを含む列の名前が feature_timestamp でない場合のみです。
  • STATIC_DATA_SOURCE: 省略可。データが時系列としてフォーマットされていない場合は、「true」と入力します。デフォルトの設定は false です。
  • DENSE: 省略可。特徴グループに関連付けられた特徴ビューからデータを提供するときに、Vertex AI Feature Store が null 値を処理する方法を指定します。
    • false - これはデフォルトの設定です。Vertex AI Feature Store は、最新の null 以外の特徴値のみを指定します。特徴の最新の値が null の場合、Vertex AI Feature Store は、null 以外の過去の値の中で最新の値を指定します。ただし、その特徴の現在の値と過去の値が null の場合、Vertex AI Feature Store は特徴値として null を指定します。
    • true - データ同期がスケジュール設定されている特徴ビューの場合、Vertex AI Feature Store は最新の特徴値(null 値を含む)のみを指定します。継続的なデータ同期を使用する特徴ビューの場合、Vertex AI Feature Store は最新の null 以外の特徴値のみを指定します。ただし、特徴の現在の値と過去の値が null の場合、Vertex AI Feature Store は特徴値として null を指定します。データ同期の種類と、特徴ビューでデータ同期の種類を構成する方法については、特徴ビューでデータを同期するをご覧ください。

HTTP メソッドと URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME

リクエストの本文(JSON):

{
  "big_query": {
    "entity_id_columns": "ENTITY_ID_COLUMNS",
    "big_query_source": {
      "input_uri": "BIGQUERY_SOURCE_URI",
    }
    "time_series": {
      "timestamp_column": ""TIMESTAMP_COLUMN"",
    },
    "static_data_source": STATIC_DATA_SOURCE,
    "dense": DENSE
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateFeatureGroupOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-18T03:00:13.060636Z",
      "updateTime": "2023-09-18T03:00:13.060636Z"
    }
  }
}

次のステップ