すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:FeatureStore SDK for Go

最終更新日:Aug 21, 2026

FeatureStore SDK for Go を使用すると、モデル推論中にオンラインデータストアからオフライン特徴量、リアルタイム特徴量、シーケンス特徴量などの特徴量データを取得できます。

前提条件

開始する前に、以下が用意されていることを確認してください。

  • FeatureStore プロジェクト、特徴量エンティティ、特徴量ビュー、モデル特徴量が作成され、オンラインストアとオフラインストア間でデータが同期されていること。 詳細については、「FeatureStore プロジェクトの設定」をご参照ください。

  • AccessKey ID と AccessKey シークレット。 詳細については、「AccessKey ペアの作成」をご参照ください。

  • 仮想プライベートクラウド (VPC) 内で実行されているアプリケーション。 FeatureStore クライアントは VPC 経由でオンラインデータストアに接続します。たとえば、Hologres は特定の VPC 経由でのみアクセスできます。

AccessKey ID と AccessKey シークレットは、コードにハードコーディングするのではなく、環境変数として保存してください。 詳細については、「環境変数の設定」をご参照ください。

SDK のインストール

go get github.com/aliyun/aliyun-pai-featurestore-go-sdk/v2

クイックスタート

ステップ 1: FeatureStore クライアントの初期化

API

func NewFeatureStoreClient(regionId, accessKeyId, accessKeySecret, projectName string, opts ...ClientOption) (*FeatureStoreClient, error)
パラメーター 説明
regionId インスタンスが存在するリージョン
accessKeyId ストレージサービスへのアクセスに使用される AccessKey ID
accessKeySecret ストレージサービスへのアクセスに使用される AccessKey シークレット
projectName Platform for AI (PAI) コンソールで作成された FeatureStore プロジェクトの名前

例

accessId := os.Getenv("AccessId")
accessKey := os.Getenv("AccessKey")

client, err := featurestore.NewFeatureStoreClient("cn-beijing", accessId, accessKey, "project_name")

ステップ 2: 特徴量ビューからの特徴量データの取得

GetOnlineFeatures を使用して、ジョイン ID (プライマリキー) を指定して特徴量ビューから特徴量を取得します。

API

GetOnlineFeatures(joinIds []interface{}, features []string, alias map[string]string) ([]map[string]interface{}, error)
パラメーター 説明
joinIds 取得する特徴量のジョイン ID (プライマリキー)
features 取得する特徴量名。 特徴量ビュー内のすべての特徴量を取得するには、[]string{"*"} を使用します
alias 取得した特徴量のエイリアス。 シーケンス特徴量ビューには適用されません

例

// 名前でプロジェクトを取得
project, err := client.GetProject("project_name")
if err != nil {
    // t.Fatal(err)
}

// 名前で特徴量ビューを取得
user_feature_view := project.GetFeatureView("feature_view_name")
if user_feature_view == nil {
    // t.Fatal("feature view not exist")
}

// 2 つのキーの特徴量を取得
features, err := user_feature_view.GetOnlineFeatures([]interface{}{"key1", "key2"}, []string{"*"}, nil)

レスポンス: オフラインまたはリアルタイム特徴量ビュー

レスポンスの各要素は 1 つのジョイン ID に対応します。 オンラインデータストアにデータがないフィールドは、空の文字列になります。

[
    {
        "city": "Hefei",
        "follow_cnt": 1,
        "gender": "male",
        "user_id": "100043186"
    },
    {
        "city": "",
        "follow_cnt": 5,
        "gender": "male",
        "user_id": "100060369"
    }
]

レスポンス: シーケンス特徴量ビュー

シーケンス特徴量は、セミコロンで区切られた文字列として返されます。 各サフィックスフィールド (__event、__event_time、__item_id、__playtime、__ts) には、特徴量シーケンスと同じ順序で対応する属性値が格納されます。

次の例では、このシーケンス特徴量設定を使用します:

オフラインシーケンス特徴量フィールド イベント名 シーケンス長 オンラインシーケンス特徴量名
click_seq_50_seq click 50 click_seq_50_seq
expr_seq_100_seq expr 100 expr_seq_100
[
  {
    "click_seq_50_seq": "216751275;228787053;220852269;242884721",
    "click_seq_50_seq__event": "click;click;click;click",
    "click_seq_50_seq__event_time": "1699128398;1699128398;1699118623;1699118623",
    "click_seq_50_seq__item_id": "216751275;228787053;220852269;242884721",
    "click_seq_50_seq__playtime": "65.40;72.06;104.69;62.74",
    "click_seq_50_seq__ts": "389018;389018;398793;398793",
    "expr_seq_100": "207474427;216751275;228787053;247136848;270584471;299485479;220852269;242884721;245999124;265863707",
    "expr_seq_100__event": "expr;expr;expr;expr;expr;expr;expr;expr;expr;expr",
    "expr_seq_100__event_time": "1699128398;1699128398;1699128398;1699128398;1699128398;1699128398;1699118623;1699118623;1699118623;1699118623",
    "expr_seq_100__item_id": "207474427;216751275;228787053;247136848;270584471;299485479;220852269;242884721;245999124;265863707",
    "expr_seq_100__playtime": "0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00",
    "expr_seq_100__ts": "389018;389018;389018;389018;389018;389018;398793;398793;398793;398793",
    "user_id": "186569075"
  },
  {
    "click_seq_50_seq": "201741544;236327912;293320498",
    "click_seq_50_seq__event": "click;click;click",
    "click_seq_50_seq__event_time": "1699178245;1699178245;1699178245",
    "click_seq_50_seq__item_id": "201741544;236327912;293320498",
    "click_seq_50_seq__playtime": "97.41;70.32;135.21",
    "click_seq_50_seq__ts": "339171;339171;339171",
    "expr_seq_100": "201741544;224940066;236327912;240253906;247562151;293320498",
    "expr_seq_100__event": "expr;expr;expr;expr;expr;expr",
    "expr_seq_100__event_time": "1699178245;1699178245;1699178245;1699178245;1699178245;1699178245",
    "expr_seq_100__item_id": "201741544;224940066;236327912;240253906;247562151;293320498",
    "expr_seq_100__playtime": "0.00;0.00;0.00;0.00;0.00;0.00",
    "expr_seq_100__ts": "339171;339171;339171;339171;339171;339171",
    "user_id": "186569870"
  }
]

ステップ 3: モデル特徴量からの特徴量データの取得

各モデル特徴量は、複数の特徴量エンティティに関連付けることができます。 GetOnlineFeatures を使用してすべてのエンティティ特徴量を一度に取得するか、GetOnlineFeaturesWithEntity を使用して特定のエンティティの特徴量を取得します。

API

// すべてのエンティティの特徴量を取得
GetOnlineFeatures(joinIds map[string][]interface{}) ([]map[string]interface{}, error)

// 特定のエンティティの特徴量を取得
GetOnlineFeaturesWithEntity(joinIds map[string][]interface{}, featureEntityName string) ([]map[string]interface{}, error)
パラメーター 説明
joinIds ジョイン ID 名とその値のマップ。 モデル特徴量に設定されているすべてのジョイン ID を指定します
featureEntityName 特徴量を取得する特徴量エンティティの名前

例

モデル特徴量は、複数の特徴量エンティティに関連付けることができます。次の例では、モデル特徴量設定に一致する 2 つの結合 ID である user_id と item_id を指定します。

// 名前でプロジェクトを取得
project, err := client.GetProject("fs_test_ots")
if err != nil {
    // t.Fatal(err)
}

// 名前でモデル特徴量を取得
model_feature := project.GetModelFeature("rank")
if model_feature == nil {
    // t.Fatal("model feature not exist")
}

// 設定されたすべてのジョイン ID の特徴量を取得
features, err := model_feature.GetOnlineFeatures(map[string][]interface{}{"user_id": {"100000676", "100004208"}, "item_id": {"238038872", "264025480"}})

特定のエンティティの特徴量のみを取得するには:

features, err := model_feature.GetOnlineFeaturesWithEntity(map[string][]interface{}{"user_id": {"100000676", "100004208"}}, "user")

レスポンス: シーケンス特徴量を含まないモデル特徴量

[
    {
        "age": 26,
        "city": "Shenyang",
        "gender": "male",
        "user_id": "100000676"
    },
    {
        "age": 23,
        "city": "Xi'an",
        "gender": "male",
        "user_id": "100004208"
    }
]

レスポンス: シーケンス特徴量を含むモデル特徴量

モデル特徴量を登録する際に、モデルトレーニング用にオフラインシーケンス特徴量を含めることができます。 これらのシーケンス特徴量はオンラインデータストアに同期され、通常の特徴量とともに返されます。

通常、シーケンスエンティティはユーザーです。 次の例では、このシーケンス特徴量設定を使用します:

オフラインシーケンス特徴量フィールド イベント名 シーケンス長 オンラインシーケンス特徴量名
click_seq_50_seq click 50 click_seq_50_seq
[
  {
    "age": 51,
    "author": 147848300,
    "category": "7",
    "city": "",
    "click_count": 0,
    "click_seq_50_seq": "216751275;228787053;220852269;242884721",
    "click_seq_50_seq__event": "click;click;click;click",
    "click_seq_50_seq__event_time": "1699128398;1699128398;1699118623;1699118623",
    "click_seq_50_seq__item_id": "216751275;228787053;220852269;242884721",
    "click_seq_50_seq__playtime": "65.40;72.06;104.69;62.74",
    "click_seq_50_seq__ts": "391447;391447;401222;401222",
    "duration": 48,
    "follow_cnt": 2,
    "follower_cnt": 0,
    "gender": "female",
    "item_cnt": 0,
    "item_id": 299485479,
    "praise_count": 2,
    "pub_time": 1697885713,
    "register_time": 1696582012,
    "tags": "0",
    "title": "#ワークアウト記録",
    "user_id": "186569075"
  },
  {
    "age": 28,
    "author": 119734983,
    "category": "18",
    "city": "",
    "click_count": 0,
    "click_seq_50_seq": "201741544;236327912;293320498",
    "click_seq_50_seq__event": "click;click;click",
    "click_seq_50_seq__event_time": "1699178245;1699178245;1699178245",
    "click_seq_50_seq__item_id": "201741544;236327912;293320498",
    "click_seq_50_seq__playtime": "97.41;70.32;135.21",
    "click_seq_50_seq__ts": "341600;341600;341600",
    "duration": 15,
    "follow_cnt": 0,
    "follower_cnt": 2,
    "gender": "male",
    "item_cnt": 0,
    "item_id": 207474427,
    "praise_count": 79,
    "pub_time": 1697731285,
    "register_time": 1699135393,
    "tags": "1",
    "title": "#慣用句の物語",
    "user_id": "186569870"
  }
]