建立特徵群組

您可以建立特徵群組,註冊包含特徵資料的 BigQuery 資料表或檢視表。

對於與特徵群組相關聯的任何 BigQuery 資料表或檢視畫面,您必須確保以下事項:

  • 資料來源的結構定義符合資料來源準備規範

  • 資料來源至少包含一個實體 ID 欄,其中含有 stringint 值。

建立特徵群組並連結 BigQuery 資料來源後,您可以建立特徵,並與資料來源中的資料欄建立關聯。您可以選擇在建立特徵群組時指定資料來源。不過,您必須先指定資料來源,才能建立地圖項目。

使用特徵群組和特徵登錄資料來源有以下優點:

  • 您可以使用多個 BigQuery 資料來源的特定特徵欄,定義線上服務的特徵檢視畫面。

  • 您可以選擇指定地圖項目時間戳記資料欄,將資料格式化為時間序列。Vertex AI 特徵儲存庫只會提供特徵資料中的最新特徵值,不包含歷來值。

  • 在資料目錄中搜尋特徵群組資源時,您可以發現 BigQuery 來源是相關聯的特徵資料來源。

  • 您可以設定特徵監控功能,擷取特徵統計資料並偵測特徵偏移。

為功能群組設定服務帳戶

特徵群組會使用服務帳戶存取 BigQuery 中的來源資料。Vertex AI 特徵儲存庫會將 BigQuery 資料檢視器 身分與存取權管理 (IAM) 角色指派給這個服務帳戶。

根據預設,功能群組會使用為專案設定的服務帳戶。有了這項設定,任何在專案中具備建立功能群組權限的使用者,都能存取 BigQuery 中的功能資料。

或者,您也可以設定功能群組使用自己的服務帳戶。Vertex AI 特徵儲存庫會為特徵群組設定專屬服務帳戶。透過這項設定,您可以限制 BigQuery 中功能資料的存取權,或授予其他使用者存取權。您可以使用 FeatureGroup.service_agent_type 參數指定服務帳戶設定。請注意,Vertex AI 特徵儲存庫會為每個特徵群組產生專屬服務帳戶電子郵件地址,這些群組會設為擁有專屬服務帳戶。

如果功能群組已設定專屬服務帳戶,您可以透過下列任一方式查看服務帳戶電子郵件地址:

事前準備

驗證 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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  5. 詳情請參閱 Set up authentication for a local development environment

REST

如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

    After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

詳情請參閱 Google Cloud 驗證說明文件中的「驗證以使用 REST」。

使用預設服務帳戶設定建立功能群組

使用下列範例,以預設服務帳戶設定建立特徵群組,並關聯 BigQuery 資料來源。

控制台

請按照下列操作說明,使用 Google Cloud 主控台建立功能群組。

  1. 在 Google Cloud 控制台的 Vertex AI 專區中,前往「Feature Store」頁面。

    前往「Feature Store」頁面

  2. 在「特徵群組」部分,按一下「建立」,開啟「建立特徵群組」頁面中的「基本資訊」窗格。

  3. 指定「Feature group name」(特徵群組名稱)

  4. 選用:如要新增標籤,請按一下「新增標籤」,然後指定標籤名稱和值。您可以為功能群組新增多個標籤。

  5. 在「BigQuery 路徑」欄位中,按一下「瀏覽」,選取要與地圖項目群建立關聯的 BigQuery 來源資料表或檢視表。

  6. 在「實體 ID 欄」清單中,選取 BigQuery 來源資料表或檢視表中的實體 ID 欄。

    請注意,如果 BigQuery 來源資料表或檢視表含有名為 entity_id 的資料欄,則這項操作為選用項目。在這種情況下,如果您未選取實體 ID 欄,則特徵群組會使用 entity_id 欄做為預設實體 ID 欄。

  7. 按一下「繼續」

  8. 在「註冊」窗格中,按一下下列任一選項,指出是否要將功能新增至新功能群組:

    • 加入 BigQuery 資料表中的所有資料欄:針對 BigQuery 來源資料表或檢視表中的所有資料欄,在特徵群組中建立特徵。

    • 手動輸入功能:根據 BigQuery 來源中的特定欄建立功能。針對每個功能輸入「功能名稱」,然後在清單中按一下對應的 BigQuery 來源欄名稱。

      如要新增更多功能,請按一下「新增其他功能」

    • 建立空的特徵群組:建立特徵群組,但不加入任何特徵。

  9. 按一下 [建立]。

Python 適用的 Vertex AI SDK

如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 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 的資料欄名稱。您可以指定一或多個資料欄。
    • 如要只指定一個實體 ID 欄,請使用下列格式指定欄名稱:
      "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 的資料欄名稱。您可以指定一或多個資料欄。
    • 如要只指定一個實體 ID 欄,請使用下列格式指定欄名稱:
      "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 特徵儲存庫在提供與特徵群組相關聯的特徵檢視資料時,如何處理空值:
    • false:這是預設設定。Vertex AI 特徵儲存庫只會提供最新的非空值特徵值。如果特徵的最新值為空值,Vertex AI 特徵儲存庫會提供最近的非空值歷史值。不過,如果該特徵的目前和歷史值皆為空值,Vertex AI 特徵儲存庫會以空值做為特徵值。
    • true:如果是已排定資料同步作業的特徵檢視畫面,Vertex AI 特徵儲存庫只會提供最新的特徵值,包括空值。如果是使用持續性資料同步功能的特徵檢視畫面,Vertex AI 特徵儲存庫只會提供最新的非空值特徵值。不過,如果特徵的目前和歷史值皆為空值,Vertex AI 特徵儲存庫會以空值做為特徵值。如要進一步瞭解資料同步類型,以及如何在功能檢視畫面中設定資料同步類型,請參閱「在功能檢視畫面中同步資料」。

HTTP 方法和網址:

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"
    }
  }
}

建立使用專用服務帳戶的特徵組

使用下列範例,指定服務帳戶設定,從 BigQuery 資料來源建立特徵群組。

REST

如要建立 FeatureGroup 資源,請使用 featureGroups.create 方法傳送 POST 要求。

使用任何要求資料之前,請先替換以下項目:

  • LOCATION_ID:要建立地圖項目群組的區域,例如 us-central1
  • SERVICE_AGENT_TYPE:功能群組的服務帳戶設定。如要為功能群組使用專屬服務帳戶,請輸入 SERVICE_AGENT_TYPE_FEATURE_GROUP
  • PROJECT_ID:您的專案 ID。
  • ENTITY_ID_COLUMNS:包含實體 ID 的資料欄名稱。您可以指定一或多個資料欄。
    • 如要只指定一個實體 ID 欄,請使用下列格式指定欄名稱:
      "entity_id_column_name"
    • 如要指定多個實體 ID 欄,請使用以下格式指定欄名稱:
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]
  • FEATUREGROUP_NAME:您要建立的新地圖項目群組名稱。
  • BIGQUERY_SOURCE_URI:您要為功能群組註冊的 BigQuery 來源資料表或檢視畫面的 URI。
  • TIMESTAMP_COLUMN:選用。在 BigQuery 來源資料表或檢視表中,指定含有特徵時間戳記的資料欄名稱。
    只有在資料格式為時序資料,且含有特徵時間戳記的資料欄名稱不是 feature_timestamp 時,才需要指定時間戳記資料欄名稱。
  • STATIC_DATA_SOURCE:選用。如果資料格式不是時間序列,請輸入 true。預設為 false
  • DENSE:選用。指出 Vertex AI 特徵儲存庫在提供與特徵群組相關聯的特徵檢視資料時,如何處理空值:
    • false:這是預設設定。Vertex AI 特徵儲存庫只會提供最新的非空值特徵值。如果特徵的最新值為空值,Vertex AI 特徵儲存庫會提供最近的非空值歷史值。不過,如果該特徵的目前和歷史值皆為空值,Vertex AI 特徵儲存庫會以空值做為特徵值。
    • true:如果是已排定資料同步作業的特徵檢視畫面,Vertex AI 特徵儲存庫只會提供最新的特徵值,包括空值。如果是使用持續性資料同步功能的特徵檢視畫面,Vertex AI 特徵儲存庫只會提供最新的非空值特徵值。不過,如果特徵的目前和歷史值皆為空值,Vertex AI 特徵儲存庫會以空值做為特徵值。如要進一步瞭解資料同步類型,以及如何在功能檢視畫面中設定資料同步類型,請參閱「在功能檢視畫面中同步資料」。

HTTP 方法和網址:

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

JSON 要求主體:

{
  "service_agent_type": "SERVICE_AGENT_TYPE",
  "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"
    }
  }
}

後續步驟