工作特性表

跟蹤特性血統和新鮮的信息,請參閱發現特性和跟蹤特性的血統

請注意

  • 這時,磚特性的商店不支持統一目錄metastore寫作。團結Catalog-enabled工作空間,您可以編寫功能表默認蜂巢metastore。

  • 數據庫和功能表名稱不能包含連字符(-)。

為功能創建一個數據庫表

在創建任何特性表之前,您必須創建一個數據庫來存儲它們。

%sql創建數據庫如果存在<database_name>

功能表存儲三角洲表。當你創建一個功能表create_table(功能存儲客戶端v0.3.6及以上)或create_feature_table(v0.3.5下麵),您必須指定數據庫名稱。例如,這個參數創建一個增量表命名customer_features在數據庫中recommender_system

name = ' recommender_system.customer_features '

當你發布一個功能表在線商店,默認表和數據庫名稱的指定在創建表時;您可以指定不同的名稱使用publish_table方法。

磚特性存儲UI顯示表的名稱和數據庫在線商店,連同其他元數據。

創建一個表在磚功能存儲特性

請注意

你也可以注冊一個存在差值表作為一個功能表。看到注冊一個現有的三角洲表特性表

創建一個功能表的基本步驟是:

  1. 編寫的Python函數計算功能。每個函數的輸出應該是一個Apache火花DataFrame獨特的主鍵。主鍵可以包含一個或多個列。

  2. 通過實例化一個創建一個功能表FeatureStoreClient和使用create_table(v0.3.6及以上)或create_feature_table(v0.3.5下麵)。

  3. 填充功能表使用write_table

databricks.feature_store進口feature_tabledefcompute_customer_features(數據):“特性計算代碼返回DataFrame customer_id“主鍵””通過由customer_id #創建功能表鍵#從compute_customer_features DataFrame輸出的模式databricks.feature_store進口FeatureStoreClientcustomer_features_df=compute_customer_features(df)fs=FeatureStoreClient()customer_feature_table=fscreate_table(的名字=“recommender_system.customer_features”,primary_keys=“customer_id”,模式=customer_features_df模式,描述=“客戶特性”)#一個替代方法是使用“create_table”並指定“df”的論點。#這段代碼自動保存功能的底層δ表。# customer_feature_table = fs.create_table (#……# df = customer_features_df,#……#)#使用組合鍵,通過所有鑰匙create_table調用# customer_feature_table = fs.create_table (#……# primary_keys = (“customer_id”、“日期”),#……#)#使用write_table寫數據到功能表#覆蓋模式全麵刷新功能表fswrite_table(的名字=“recommender_system.customer_features”,df=customer_features_df,模式=“覆蓋”)
databricks.feature_store進口feature_tabledefcompute_customer_features(數據):“特性計算代碼返回DataFrame customer_id“主鍵””通過由customer_id #創建功能表鍵#從compute_customer_features DataFrame輸出的模式databricks.feature_store進口FeatureStoreClientcustomer_features_df=compute_customer_features(df)fs=FeatureStoreClient()customer_feature_table=fscreate_feature_table(的名字=“recommender_system.customer_features”,=“customer_id”,模式=customer_features_df模式,描述=“客戶特性”)#一個替代方法是使用“create_feature_table”並指定“features_df”的論點。#這段代碼自動保存功能的底層δ表。# customer_feature_table = fs.create_feature_table (#……# features_df = customer_features_df,#……#)#使用組合鍵,通過所有鑰匙create_feature_table調用# customer_feature_table = fs.create_feature_table (#……#鍵= (“customer_id”、“日期”),#……#)#使用write_table寫數據到功能表#覆蓋模式全麵刷新功能表fswrite_table(的名字=“recommender_system.customer_features”,df=customer_features_df,模式=“覆蓋”)databricks.feature_store進口feature_tabledefcompute_customer_features(數據):“特性計算代碼返回DataFrame customer_id“主鍵””通過由customer_id #創建功能表鍵#從compute_customer_features DataFrame輸出的模式databricks.feature_store進口FeatureStoreClientcustomer_features_df=compute_customer_features(df)fs=FeatureStoreClient()customer_feature_table=fscreate_feature_table(的名字=“recommender_system.customer_features”,=“customer_id”,模式=customer_features_df模式,描述=“客戶特性”)#一個替代方法是使用“create_feature_table”並指定“features_df”的論點。#這段代碼自動保存功能的底層δ表。# customer_feature_table = fs.create_feature_table (#……# features_df = customer_features_df,#……#)#使用組合鍵,通過所有鑰匙create_feature_table調用# customer_feature_table = fs.create_feature_table (#……#鍵= (“customer_id”、“日期”),#……#)#使用write_table寫數據到功能表#覆蓋模式全麵刷新功能表fswrite_table(的名字=“recommender_system.customer_features”,df=customer_features_df,模式=“覆蓋”)

注冊一個現有的三角洲表特性表

v0.3.8和上麵,你可以注冊一個現有的差值表作為一個功能表。表必須存在於metastore三角洲。

請注意

更新注冊表功能,你必須使用Python API特性存儲

fsregister_table(delta_table=“recommender.customer_features”,primary_keys=“customer_id”,描述=“客戶特性”)

更新一個功能表

你可以更新一個功能表添加新特性或通過修改特定行基於主鍵。

以下功能表元數據不能更新:

  • 主鍵

  • 分區鍵

  • 名稱或類型的現有功能

新功能添加到現有的功能表

您可以將新功能添加到現有特性表兩種方式中的一種:

  • 更新現有的特性計算功能和運行write_tableDataFrame返回。這個更新功能表模式和合並新特性值基於主鍵。

  • 創建一個新的特性計算函數值計算新特性。這個新的計算函數必須包含返回的DataFrame功能表的主鍵和分區鍵(如果定義)。運行write_table與DataFrame編寫新功能到現有的功能表,使用相同的主鍵。

隻更新特定的功能表中的行

使用模式=“合並”write_table。主鍵的行不存在DataFrame發送的write_table電話保持不變。

fswrite_table(的名字=“recommender.customer_features”,df=customer_features_df,模式=“合並”)

安排一個工作表更新功能

確保功能特性表中總是有最新值,磚建議你創建一個工作運行一個筆記本表定期更新功能,如每天。如果你已經有一個非正常的工作,你可以將它轉換成一個安排的工作確保特性值總是最新的。

代碼更新表使用一個特征模式=“合並”,如以下示例所示。

fs=FeatureStoreClient()customer_features_df=compute_customer_features(數據)fswrite_table(df=customer_features_df,的名字=“recommender_system.customer_features”,模式=“合並”)

存儲過去值的日常功能

用一個複合主鍵定義一個功能表。包括主鍵的日期。例如,對於一個功能表store_purchases,您可以使用一個複合主鍵(日期,user_id)和分區鍵日期為有效的讀取。

然後,您可以創建代碼來讀取從功能表過濾日期感興趣的時期。保持功能表,建立定期工作寫功能,或流新特性值到功能表中。

創建一個流特性計算管道更新功能

創建一個流特性計算管道,通過流媒體DataFrame作為參數write_table。這個方法返回一個StreamingQuery對象。

defcompute_additional_customer_features(數據):“返回流DataFrame“‘通過#沒有顯示customer_transactions=火花readStream負載(“dbfs: /事件/ customer_transactions”)stream_df=compute_additional_customer_features(customer_transactions)fswrite_table(df=stream_df,的名字=“recommender_system.customer_features”,模式=“合並”)

從功能表讀取

使用read_table讀特性值。

fs=feature_storeFeatureStoreClient()customer_features_df=fsread_table(的名字=“recommender.customer_features”,)

搜索和瀏覽功能表

使用該特性存儲UI搜索或瀏覽功能表。

  1. 點擊功能存儲圖標特色商店在側邊欄顯示功能存儲UI。這個圖標出現隻有當你在的時候機器學習的角色

  2. 在搜索框中,輸入的全部或部分功能表的名稱,功能,或一個數據源用於特性計算。您還可以輸入的全部或部分鍵或值的標簽。搜索文本是不區分大小寫的。

    下麵的屏幕截圖顯示了一個例子。搜索的結果“年齡”包括一個表功能年齡,一個表功能HouseAge,基於數據源的表raw_data.usage_logs

    特征搜索示例

得到特征表元數據

表元數據API獲得功能取決於磚使用運行時版本。v0.3.6和上麵使用get_table。v0.3.5和下麵使用get_feature_table

#這個例子使用v0.3.6以上# v0.3.5,使用“get_feature_table”databricks.feature_store進口FeatureStoreClientfs=FeatureStoreClient()fsget_table(“feature_store_example.user_feature_table”)

工作特性表標簽

標簽是鍵值,您可以創建和使用搜索功能表。您可以創建、編輯和刪除使用特性存儲UI或標簽Python API特性存儲

工作特性表標簽在UI中

使用該特性存儲UI搜索或瀏覽功能表。訪問界麵,點擊功能存儲圖標特色商店在側邊欄顯示功能存儲UI。這個圖標出現隻有當你在的時候機器學習的角色

添加一個標簽使用特性存儲UI

  1. 點擊標簽圖標如果尚未打開。標簽表出現。

    標簽表
  2. 點擊的名字價值字段並輸入的鍵和值標簽。

  3. 點擊添加

編輯或刪除一個標簽使用特性存儲UI

編輯或刪除現有標簽,使用的圖標行動列。

標簽的行為

工作特性表標簽使用Python特性存儲API

在集群v0.4.1以上運行,您可以創建、編輯和刪除標簽使用Python API特性存儲

需求

功能存儲客戶端v0.4.1以上

創建功能表與標簽使用Python特性存儲API

databricks.feature_store進口FeatureStoreClientfs=FeatureStoreClient()customer_feature_table=fscreate_table(標簽={“tag_key_1”:“tag_value_1”,“tag_key_2”:“tag_value_2”,},)

添加、更新和刪除標簽使用Python特性存儲API

databricks.feature_store進口FeatureStoreClientfs=FeatureStoreClient()#插入一個標簽fsset_feature_table_tag(table_name=“my_table”,關鍵=“質量”,價值=“黃金”)#刪除一個標簽fsdelete_feature_table_tag(table_name=“my_table”,關鍵=“質量”)

為一個功能表更新數據源

使用的數據源的功能存儲自動跟蹤計算功能。你也可以通過使用手動更新數據源Python API特性存儲

需求

功能存儲客戶端v0.5.0以上

添加數據源使用Python特性存儲API

下麵是一些示例命令。有關詳細信息,請參見API文檔

databricks.feature_store進口FeatureStoreClientfs=FeatureStoreClient()#使用' source_type =“表”中添加一個表metastore作為數據源。fsadd_data_sources(feature_table_name=“點擊”,data_sources=“user_info.clicks”,source_type=“表”)#使用source_type =“路徑”的路徑格式添加一個數據源。fsadd_data_sources(feature_table_name=“user_metrics”,data_sources=“dbfs: / FileStore / user_metrics.json”,source_type=“路徑”)#使用' source_type =“定製”如果源不是一個表或一個路徑。fsadd_data_sources(feature_table_name=“user_metrics”,data_sources=“user_metrics.txt”,source_type=“自定義”)

刪除數據源使用Python特性存儲API

有關詳細信息,請參見API文檔

請注意

以下命令刪除所有類型的數據源(“表”、“路徑”和“自定義”)相匹配的名字來源。

databricks.feature_store進口FeatureStoreClientfs=FeatureStoreClient()fsdelete_data_sources(feature_table_name=“點擊”,sources_names=“user_info.clicks”)

刪除一個功能表

你可以刪除一個使用特性存儲用戶界麵或功能表Python API特性存儲

請注意

  • 刪除功能表可以導致上遊生產商和下遊消費者意想不到的失敗(模型、端點和安排工作)。你必須刪除與你的雲提供商發布在線商店。

  • 當你刪除一個功能表使用API,底層三角洲表也下降了。當你刪除一個UI功能表,你必須單獨刪除底層三角洲表。

刪除一個表使用UI功能

  1. 在功能表頁麵,點擊紐扣在功能表名和選擇的權利刪除。如果你沒有可以管理權限功能表,你不會看到這個選項。

    從下拉菜單中選擇刪除
  2. 在刪除功能表對話框中,點擊刪除來確認。

  3. 如果你也想的話底層三角洲表下降運行以下命令在一個筆記本上。

    %sql下降如果存在<feature_table_name>;

刪除一個表使用特性存儲Python API功能

與功能存儲客戶v0.4.1以上,你可以使用drop_table刪除一個功能表。當你刪除一個表drop_table,底層δ表也刪除。

fsdrop_table(的名字=“recommender_system.customer_features”)

支持的數據類型

支持以下功能商店PySpark數據類型:

  • IntegerType

  • FloatType

  • BooleanType

  • StringType

  • 倍增式

  • LongType

  • TimestampType

  • DateType

  • ShortType

  • ArrayType

  • BinaryType(v0.3.5及以上)

  • DecimalType(v0.3.5及以上)

  • MapType(v0.3.5及以上)

上麵列出的數據類型支持特性類型常見的機器學習應用。例如:

  • 你可以儲存密度向量,張量和嵌入的ArrayType

  • 你可以存儲稀疏向量,張量和嵌入MapType

  • 你可以存儲文本StringType

功能界麵顯示元數據存儲在特性數據類型:

複雜數據類型的例子

當發布到在線商店,ArrayTypeMapType功能是存儲在JSON格式。