フィーチャ ビューを配信

Important

この機能は パブリック プレビュー段階です。 ワークスペース管理者は、[ プレビュー] ページからこの機能へのアクセスを制御できます。 Manage Azure Databricks プレビューを参照してください。

フィーチャー ビューは、次の 2 つの方法でオンラインで提供できます。

  • モデルの提供: フィーチャー ビューでトレーニングされたモデルをデプロイします。 エンドポイントは、モデルのログ記録時に追跡された系列を使用して、オンライン ストアの機能値を自動的に検索します。 これを使用して、モデル予測を提供します。
  • フィーチャー サービス: モデルを使用せずにフィーチャー ビューを直接参照する FeatureSpec を配置します。 エンドポイントは、検索された機能の値を返します。 これは、アプリケーションでモデル予測ではなく特徴値が必要な場合に使用します。

どちらの方法も、事前計算済みの機能値をオンライン ストアから読み取るので、まず オンライン ストアに機能を具体化する必要があります。

Databricks の特徴量を使用してトレーニングされたモデルでは、トレーニングされた特徴量に対する系列が自動的に追跡されます。 エンドポイントを提供するモデルとしてデプロイすると、これらのモデルは Unity カタログを使用してオンライン ストアの機能を検索します。

Permissions

フィーチャを提供するには、モデル サービング エンドポイントを作成するプリンシパルに、マテリアライズド フィーチャの基になる Unity Catalog テーブルに対する SELECT 権限が必要です。 オンライン参照は具体化されたテーブルから直接読み取られます。そのため、テーブル レベルの SELECT は、サービスへのアクセスを許可します。 権限の説明については、 SELECTを参照してください。

具体化されたテーブルには複数の機能を保持できるため、そのテーブルに SELECT を付与すると、サービスを提供する予定のフィーチャだけでなく、そのテーブル内のすべての機能へのアクセスが許可されます。 サービスへのアクセス権を付与する前に、テーブルを共有するすべての機能をプリンシパルと共有できることを確認します。 露出を制限するには、機密性の高い特徴を個別に具体化します。

テーブルを手動で解決せずにこのアクセス権を付与するには、 FeatureEngineeringClient.grant_feature_serving_accessを使用します。 モデルまたは機能仕様を指定すると、各機能に対応するオンライン テーブルを特定し、それらのテーブルに対して SELECTUSE CATALOG および USE SCHEMA と併せて)を指定したプリンシパルに付与し、各テーブルと、その付与によってアクセス可能になる追加の機能をまとめたレポートを返します。 許可する前に、 dry_run=True を渡してレポートをプレビューします。

from databricks.feature_engineering import FeatureEngineeringClient

fe = FeatureEngineeringClient()

# Preview the tables and the features each grant would expose.
report = fe.grant_feature_serving_access(
    grant_to=["serving-principal@example.com"],
    model_uri="models:/main.ecommerce.fraud_model/1",
    dry_run=True,
)
print(report)

# Grant SELECT on the resolved online tables.
fe.grant_feature_serving_access(
    grant_to=["serving-principal@example.com"],
    model_uri="models:/main.ecommerce.fraud_model/1",
)

モデルサービスエンドポイントを配備する

既存のモデル サービス エンドポイントを使用するか、Databricks SDK を使用して新しいエンドポイントを作成します。 モデルは Unity カタログに登録する必要があります。

次のコードは、エンドポイントを提供する新しいモデルを作成する方法を示しています。 詳細については、「 カスタム モデル サービス エンドポイントの作成」を参照してください。

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

w = WorkspaceClient()

endpoint_name = "fraud-detection-endpoint"
model_name = "main.ecommerce.fraud_model"

w.serving_endpoints.create(
    name=endpoint_name,
    config=EndpointCoreConfigInput(
        name=endpoint_name,
        served_entities=[
            ServedEntityInput(
                entity_name=model_name,
                entity_version=1,
                max_provisioned_concurrency=4,
                min_provisioned_concurrency=0,
            )
        ],
    ),
)

エンドポイントのクエリを実行する

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

response = w.serving_endpoints.query(
    name="fraud-detection-endpoint",
    dataframe_records=[
        {"user_id": "user_123", "transaction_time": "2026-03-01T12:00:00"},
    ],
)

RequestSource 機能を使用してエンドポイントにクエリを実行する

モデルが RequestSource 機能を使用してトレーニングされた場合、要求ペイロードには、すべての RequestSource 列も含める必要があります。 これらの列は、 log_model中に MLflow モデルシグネチャに追加されたので、エンドポイントの API スキーマに必要な要求フィールドが反映されます。

response = w.serving_endpoints.query(
    name="fraud-detection-endpoint",
    dataframe_records=[
        {
            "user_id": "user_123",
            "transaction_time": "2026-03-01T12:00:00",
            "transaction_amount": 275.30,  # RequestSource column
            "vendor_id": "v_42",           # RequestSource column (also used as entity key)
        },
    ],
)

エンティティ キーは、オンライン ストアからテーブルに基づく機能を検索するために使用されます。 RequestSource 列はモデルに直接渡されます。

curl を使用することもできます。

curl -X POST "https://<workspace>.cloud.databricks.com/serving-endpoints/<endpoint>/invocations" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "dataframe_records": [
      {
        "user_id": "user_123",
        "transaction_time": "2026-03-01T12:00:00",
        "transaction_amount": 275.30,
        "vendor_id": "v_42"
      }
    ]
  }'

FeatureSpec を使用して機能を提供する

モデルなしでフィーチャー ビューを提供するには、フィーチャーを参照する FeatureSpec を作成し、フィーチャー サービス エンドポイントに配置します。 エンドポイントは、要求内のエンティティ キーの検索された機能の値を返します。

エンドポイントを作成する前に、機能を Unity カタログ に登録し、オンライン ストアに具体化 する必要があります。

Note

フィーチャー ビューを含む FeatureSpec には、 FeatureLookup 定義や FeatureFunction 定義を含めることはできません。 フィーチャー ビューを同じ FeatureSpec内の定義と混在させることはできません。

from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities.feature_serving_endpoint import (
    EndpointCoreConfig,
    ServedEntity,
)

fe = FeatureEngineeringClient()

# 1. Retrieve a registered Feature View
agg_feature = fe.get_feature(full_name="main.ecommerce.amount_sum_sliding_7d_1d")

# 2. Create a FeatureSpec that includes the Feature View
feature_spec_name = "main.ecommerce.transaction_feature_spec"
fe.create_feature_spec(name=feature_spec_name, features=[agg_feature])

# 3. Deploy a Feature Serving endpoint backed by the FeatureSpec
fe.create_feature_serving_endpoint(
    name="transaction-features",
    config=EndpointCoreConfig(
        served_entities=ServedEntity(
            feature_spec_name=feature_spec_name,
            workload_size="Small",
            scale_to_zero_enabled=True,
        )
    ),
)

具体化された特徴を検索するために使用されるエンティティ キーを使用してエンドポイントにクエリを実行します。

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

response = w.serving_endpoints.query(
    name="transaction-features",
    dataframe_records=[{"user_id": "user_123"}],
)

フィーチャー サービス エンドポイントの詳細については、「 機能サービス エンドポイント」を参照してください。