全部产品
Search
文档中心

Platform For AI:FeatureStore SDK untuk Go

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan FeatureStore SDK untuk Go untuk membaca data dari online store, termasuk fitur offline, real-time, dan urutan.

Prasyarat

Instal FeatureStore SDK untuk Go

Jalankan perintah berikut untuk menginstal FeatureStore SDK untuk Go:

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

Inisialisasi klien FeatureStore

API

// Inisialisasi klien FeatureStore.
// regionId menentukan wilayah tempat instance berada.
// accessKeyId menentukan ID AccessKey yang digunakan untuk mengakses layanan penyimpanan. Untuk mendapatkan ID AccessKey, kunjungi situs resmi Alibaba Cloud atau hubungi administrator.
// accessKeySecret menentukan Rahasia AccessKey yang digunakan untuk mengakses layanan penyimpanan. Untuk mendapatkan Rahasia AccessKey, kunjungi situs resmi Alibaba Cloud atau hubungi administrator.
// projectName menentukan nama Proyek FeatureStore yang Anda buat di konsol Platform for AI (PAI).
func NewFeatureStoreClient(regionId, accessKeyId, accessKeySecret, projectName string, opts ...ClientOption) (*FeatureStoreClient, error)
Catatan

Klien FeatureStore harus berjalan dalam virtual private cloud (VPC) agar SDK untuk Go dapat langsung terhubung ke online store. Sebagai contoh, SDK untuk Go hanya dapat mengakses instance Hologres melalui VPC tertentu.

Contoh kode

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

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

Ambil data fitur dari tampilan fitur

API

// Ambil data fitur dari tampilan fitur berdasarkan join ID, nama fitur, dan alias fitur.
GetOnlineFeatures(joinIds []interface{}, features []string, alias map[string]string) ([]map[string]interface{}, error)

Parameter

Parameter

Deskripsi

joinIds

Menentukan join ID (primary key) dari fitur yang ingin Anda ambil.

features

Menentukan nama fitur yang ingin Anda ambil. []string{"*"} menentukan untuk mengambil semua fitur dalam tampilan fitur.

alias

Menentukan alias fitur yang ingin Anda ambil. Parameter ini tidak berlaku untuk tampilan fitur urutan.

Contoh kode

// dapatkan proyek berdasarkan nama
project, err := client.GetProject("project_name")
if err != nil {
    // t.Fatal(err)
}

// dapatkan featureview berdasarkan nama
user_feature_view := project.GetFeatureView("feature_view_name")
if user_feature_view == nil {
    // t.Fatal("feature view not exist")
}

// dapatkan fitur online
features, err := user_feature_view.GetOnlineFeatures([]interface{}{"key1", "key2"}, []string{"*"}, nil)
  • Respon Sukses: Ambil Data dari Tampilan Fitur Offline atau Real-Time

    [
        {
            "city":"Hefei",
            "follow_cnt":1,
            "gender":"male",
            "user_id":"100043186"
        },
        {
            "city":"",
            "follow_cnt":5,
            "gender":"male",
            "user_id":"100060369"
        }
    ]
  • Respon Sukses: Ambil Data dari Tampilan Fitur Urutan

    • Tabel berikut menjelaskan konfigurasi fitur urutan yang digunakan dalam contoh ini.

      Bidang fitur urutan offline

      Nama event

      Panjang urutan

      Nama fitur urutan online

      click_seq_50_seq

      click

      50

      click_seq_50_seq

      expr_seq_100_seq

      expr

      100

      expr_seq_100

    • Contoh Keluaran

      [
        {
          "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"
        }
      ]

Ambil data fitur dari fitur model

API

// Ambil data fitur dari fitur model berdasarkan join ID dan entitas fitur.
GetOnlineFeatures(joinIds map[string][]interface{}) ([]map[string]interface{}, error) 
// Ambil data fitur tentang entitas tertentu dari fitur model berdasarkan join ID.
GetOnlineFeaturesWithEntity(joinIds map[string][]interface{}, featureEntityName string) ([]map[string]interface{}, error)

Parameter

Parameter

Deskripsi

joinIds

Kumpulan pasangan nilai-kunci dari join ID. Kunci adalah nama join ID dan nilainya adalah nilai join ID.

featureEntityName

Menentukan nama entitas fitur yang ingin Anda ambil datanya.

Contoh kode

Setiap fitur model dapat dikaitkan dengan beberapa entitas fitur. Anda dapat menentukan beberapa join ID untuk mengambil fitur yang sesuai.

Contoh kode berikut menentukan dua join ID: user_id dan item_id. Anda harus menentukan semua join ID yang telah dikonfigurasikan.

// dapatkan proyek berdasarkan nama
project, err := client.GetProject("fs_test_ots")
if err != nil {
    // t.Fatal(err)
}

// dapatkan ModelFeature berdasarkan nama
model_feature := project.GetModelFeature("rank")
if model_feature == nil {
    // t.Fatal("model feature not exist")
}

// dapatkan fitur online
features, err := model_feature.GetOnlineFeatures(map[string][]interface{}{"user_id": {"100000676", "100004208"}, "item_id":{"238038872", "264025480"}} )

Anda juga dapat menentukan entitas fitur untuk mengambil fiturnya.

features, err := model_feature.GetOnlineFeaturesWithEntity(map[string][]interface{}{"user_id": {"100000676", "100004208"}}, "user" )
  • Respon Sukses: Ambil Data dari Fitur Model (Tidak Termasuk Fitur Urutan)

    [
        {
            "age":26,
            "city":"Shenyang",
            "gender":"male",
            "user_id":"100000676"
        },
        {
            "age":23,
            "city":"Xi'an",
            "gender":"male",
            "user_id":"100004208"
        }
    ]
  • Respon Sukses: Ambil Data dari Fitur Model (Termasuk Fitur Urutan)

    Saat mendaftarkan fitur model, Anda dapat menentukan fitur urutan offline yang ingin digunakan untuk pelatihan model. Fitur urutan offline yang ditentukan disinkronkan ke penyimpanan data online. Kemudian, Anda dapat memperoleh fitur urutan online yang sesuai menggunakan FeatureStore SDK untuk Go.

    Secara umum, entitas fitur urutan adalah pengguna. Contoh kode berikut menentukan dua join ID: user_id dan item_id. Anda harus menentukan semua join ID yang telah dikonfigurasikan.

    • Tabel berikut menjelaskan konfigurasi fitur urutan yang digunakan dalam contoh ini.

      Bidang fitur urutan offline

      Nama event

      Panjang urutan

      Nama fitur urutan online

      click_seq_50_seq

      click

      50

      click_seq_50_seq

    • Contoh Keluaran

      [
        {
          "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": "#Workout tracking",
          "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": "#Idiom story",
          "user_id": "186569870"
        }
      ]