Megosztás a következőn keresztül:


Funkciótáblák kezelése a munkaterület funkciótárolójában

Feljegyzés

Ez a dokumentáció a munkaterület funkciótárolóját ismerteti. A Databricks a Szolgáltatásfejlesztés használatát javasolja a Unity Catalogban. A munkaterület funkciótárolója a jövőben megszűnik.

Ez a lap bemutatja, hogyan hozhat létre és dolgozhat szolgáltatástáblákkal a Munkaterület funkciótárolójában.

Feljegyzés

Ha a munkaterület engedélyezve van a Unity Cataloghoz, a Unity Catalog által kezelt, elsődleges kulccsal rendelkező táblák automatikusan olyan funkciótáblák, amelyeket a modell betanításához és következtetéséhez használhat. A Unity Catalog összes képessége, például a biztonság, a vonalvezetés, a címkézés és a munkaterületek közötti hozzáférés automatikusan elérhető a funkciótáblában. A funkciótáblák Unity-katalógussal kompatibilis munkaterületen való használatával kapcsolatos további információkért lásd : Funkciótáblák használata.

A szolgáltatás-leállás és a frissesség nyomon követésével kapcsolatos információkért lásd a funkciók felderítését és a funkciósor nyomon követését ismertető témakört.

Feljegyzés

Az adatbázis- és funkciótáblák nevei csak alfanumerikus karaktereket és aláhúzásjeleket (_) tartalmazhatnak.

Adatbázis létrehozása funkciótáblákhoz

A funkciótáblák létrehozása előtt létre kell hoznia egy adatbázist a tárolásukhoz.

%sql CREATE DATABASE IF NOT EXISTS <database-name>

A funkciótáblák Delta-táblákként vannak tárolva. Ha szolgáltatástáblát hoz létre a (Feature Store-ügyfél 0.3.6-os vagy újabb verziójával create_table ) vagy create_feature_table (0.3.5-ös vagy újabb verzióval), meg kell adnia az adatbázis nevét. Ez az argumentum például létrehoz egy Delta-táblát customer_features az adatbázisban recommender_system.

name='recommender_system.customer_features'

Amikor egy szolgáltatástáblát egy online áruházban tesz közzé, az alapértelmezett tábla és az adatbázis neve lesz megadva a tábla létrehozásakor; a metódussal publish_table különböző neveket adhat meg.

A Databricks szolgáltatástároló felhasználói felülete megjeleníti az online áruházban található tábla és adatbázis nevét, valamint egyéb metaadatokat.

Szolgáltatástábla létrehozása a Databricks Szolgáltatástárban

Feljegyzés

Egy meglévő Delta-táblát funkciótáblaként is regisztrálhat. Lásd: Meglévő Delta-tábla regisztrálása funkciótábláként.

A funkciótáblák létrehozásának alapvető lépései a következők:

  1. Írja meg a Python-függvényeket a funkciók kiszámításához. Az egyes függvények kimenetének egyedi elsődleges kulccsal rendelkező Apache Spark DataFrame-nek kell lennie. Az elsődleges kulcs egy vagy több oszlopból állhat.
  2. Hozzon létre egy szolgáltatástáblát a FeatureStoreClient (0.3.6-os vagy újabb) vagy create_feature_table (0.3.5-ös vagy újabb) példányosításával create_table .
  3. Töltse ki a funkciótáblát a következővel write_table: .

Az alábbi példákban használt parancsokkal és paraméterekkel kapcsolatos részletekért tekintse meg a Feature Store Python API-referenciáját.

V0.3.6 és újabb verziók

from databricks.feature_store import feature_table

def compute_customer_features(data):
  ''' Feature computation code returns a DataFrame with 'customer_id' as primary key'''
  pass

# create feature table keyed by customer_id
# take schema from DataFrame output by compute_customer_features
from databricks.feature_store import FeatureStoreClient

customer_features_df = compute_customer_features(df)

fs = FeatureStoreClient()

customer_feature_table = fs.create_table(
  name='recommender_system.customer_features',
  primary_keys='customer_id',
  schema=customer_features_df.schema,
  description='Customer features'
)

# An alternative is to use `create_table` and specify the `df` argument.
# This code automatically saves the features to the underlying Delta table.

# customer_feature_table = fs.create_table(
#  ...
#  df=customer_features_df,
#  ...
# )

# To use a composite key, pass all keys in the create_table call

# customer_feature_table = fs.create_table(
#   ...
#   primary_keys=['customer_id', 'date'],
#   ...
# )

# Use write_table to write data to the feature table
# Overwrite mode does a full refresh of the feature table

fs.write_table(
  name='recommender_system.customer_features',
  df = customer_features_df,
  mode = 'overwrite'
)

V0.3.5 és újabb

from databricks.feature_store import feature_table

def compute_customer_features(data):
  ''' Feature computation code returns a DataFrame with 'customer_id' as primary key'''
  pass

# create feature table keyed by customer_id
# take schema from DataFrame output by compute_customer_features
from databricks.feature_store import FeatureStoreClient

customer_features_df = compute_customer_features(df)

fs = FeatureStoreClient()

customer_feature_table = fs.create_feature_table(
  name='recommender_system.customer_features',
  keys='customer_id',
  schema=customer_features_df.schema,
  description='Customer features'
)

# An alternative is to use `create_feature_table` and specify the `features_df` argument.
# This code automatically saves the features to the underlying Delta table.

# customer_feature_table = fs.create_feature_table(
#  ...
#  features_df=customer_features_df,
#  ...
# )

# To use a composite key, pass all keys in the create_feature_table call

# customer_feature_table = fs.create_feature_table(
#   ...
#   keys=['customer_id', 'date'],
#   ...
# )

# Use write_table to write data to the feature table
# Overwrite mode does a full refresh of the feature table

fs.write_table(
  name='recommender_system.customer_features',
  df = customer_features_df,
  mode = 'overwrite'
)from databricks.feature_store import feature_table

def compute_customer_features(data):
  ''' Feature computation code returns a DataFrame with 'customer_id' as primary key'''
  pass

# create feature table keyed by customer_id
# take schema from DataFrame output by compute_customer_features
from databricks.feature_store import FeatureStoreClient

customer_features_df = compute_customer_features(df)

fs = FeatureStoreClient()

customer_feature_table = fs.create_feature_table(
  name='recommender_system.customer_features',
  keys='customer_id',
  schema=customer_features_df.schema,
  description='Customer features'
)

# An alternative is to use `create_feature_table` and specify the `features_df` argument.
# This code automatically saves the features to the underlying Delta table.

# customer_feature_table = fs.create_feature_table(
#  ...
#  features_df=customer_features_df,
#  ...
# )

# To use a composite key, pass all keys in the create_feature_table call

# customer_feature_table = fs.create_feature_table(
#   ...
#   keys=['customer_id', 'date'],
#   ...
# )

# Use write_table to write data to the feature table
# Overwrite mode does a full refresh of the feature table

fs.write_table(
  name='recommender_system.customer_features',
  df = customer_features_df,
  mode = 'overwrite'
)

Meglévő Delta-tábla regisztrálása funkciótáblaként

A 0.3.8-as vagy újabb verzióval egy meglévő Delta-táblát regisztrálhat funkciótáblaként. A Delta-táblának léteznie kell a metaadattárban.

Feljegyzés

Regisztrált szolgáltatástáblák frissítéséhez a Szolgáltatástár Python API-t kell használnia.

fs.register_table(
  delta_table='recommender.customer_features',
  primary_keys='customer_id',
  description='Customer features'
)

Funkciótáblákhoz való hozzáférés szabályozása

Lásd: Funkciótáblákhoz való hozzáférés szabályozása.

Funkciótábla frissítése

A funkciótáblát új funkciók hozzáadásával vagy az elsődleges kulcs alapján meghatározott sorok módosításával frissítheti.

A következő szolgáltatástábla metaadatai nem frissíthetők:

  • Elsődleges kulcs
  • Partíciókulcs
  • Meglévő szolgáltatás neve vagy típusa

Új funkciók hozzáadása meglévő funkciótáblához

Új funkciókat kétféleképpen adhat hozzá egy meglévő funkciótáblához:

  • Frissítse a meglévő funkciószámítási függvényt, és futtassa write_table a visszaadott DataFrame-et. Ez frissíti a szolgáltatástábla sémáját, és egyesíti az új funkcióértékeket az elsődleges kulcs alapján.
  • Hozzon létre egy új funkciószámítási függvényt az új funkcióértékek kiszámításához. Az új számítási függvény által visszaadott DataFrame-nek tartalmaznia kell a funkciótáblák elsődleges kulcsait és partíciókulcsait (ha meg van adva). Futtassa write_table a DataFrame-et az új funkciók meglévő funkciótáblába való írásához ugyanazzal az elsődleges kulccsal.

Csak bizonyos sorok frissítése egy szolgáltatástáblában

Használat mode = "merge" a következőben: write_table. Azok a sorok, amelyek elsődleges kulcsa nem létezik a hívásban küldött DataFrame-ben write_table , változatlanok maradnak.

fs.write_table(
  name='recommender.customer_features',
  df = customer_features_df,
  mode = 'merge'
)

Feladat ütemezése funkciótáblák frissítéséhez

Annak érdekében, hogy a funkciótáblák funkciói mindig a legújabb értékekkel rendelkezzenek, a Databricks azt javasolja, hogy hozzon létre egy jegyzetfüzetet futtató feladatot , amely rendszeresen, például naponta frissíti a funkciótáblát. Ha már létrehozott egy nem ütemezett feladatot, átkonvertálja ütemezett feladattá, hogy a funkció értékei mindig naprakészek legyenek.

A funkciótáblák frissítéséhez használt mode='merge'kód az alábbi példában látható.

fs = FeatureStoreClient()

customer_features_df = compute_customer_features(data)

fs.write_table(
  df=customer_features_df,
  name='recommender_system.customer_features',
  mode='merge'
)

A napi funkciók múltbeli értékeinek tárolása

Összetett elsődleges kulccsal rendelkező funkciótábla definiálása. Adja meg a dátumot az elsődleges kulcsban. Egy funkciótáblához store_purchasespéldául összetett elsődleges kulcsot (date, user_id) és partíciókulcsot date használhat a hatékony olvasáshoz.

fs.create_table(
  name='recommender_system.customer_features',
  primary_keys=['date', 'customer_id'],
  partition_columns=['date'],
  schema=customer_features_df.schema,
  description='Customer features'
)

Ezután létrehozhat olyan kódot, amely beolvassa a funkciótábla szűréséből date a kamatidőszakra.

Idősorozat-funkciótáblát úgy is létrehozhat, hogy az date oszlopot időbélyegkulcsként adja meg az timestamp_keys argumentum használatával.

fs.create_table(
  name='recommender_system.customer_features',
  primary_keys=['date', 'customer_id'],
  timestamp_keys=['date'],
  schema=customer_features_df.schema,
  description='Customer timeseries features'
)

Ez lehetővé teszi az időponthoz kötött kereséseket a használat create_training_set score_batchvagy a . A rendszer időbélyeg-alapú illesztéseket hajt végre az timestamp_lookup_key Ön által megadott módon.

A funkciótábla naprakészen tartásához állítson be egy rendszeresen ütemezett feladatot a szolgáltatások írásához, vagy streamelje az új funkcióértékeket a funkciótáblába.

Streamelési szolgáltatás számítási folyamatának létrehozása a funkciók frissítéséhez

Streamelési szolgáltatás számítási folyamatának létrehozásához adjon át egy streamelést DataFrame argumentumként.write_table Ez a metódus egy objektumot StreamingQuery ad vissza.

def compute_additional_customer_features(data):
  ''' Returns Streaming DataFrame
  '''
  pass  # not shown

customer_transactions = spark.readStream.load("dbfs:/events/customer_transactions")
stream_df = compute_additional_customer_features(customer_transactions)

fs.write_table(
  df=stream_df,
  name='recommender_system.customer_features',
  mode='merge'
)

Olvasás funkciótáblából

Funkcióértékek olvasására használható read_table .

fs = feature_store.FeatureStoreClient()
customer_features_df = fs.read_table(
  name='recommender.customer_features',
)

Funkciótáblák keresése és tallózása

A Szolgáltatástár felhasználói felületén kereshet vagy tallózhat a szolgáltatástáblák között.

  1. Az oldalsávon válassza a Machine Learning > Feature Store lehetőséget a funkciótár felhasználói felületének megjelenítéséhez.

  2. A keresőmezőbe írja be a funkciótáblák, szolgáltatások vagy a funkciószámításhoz használt adatforrás nevének egészét vagy egy részét. A címke kulcsának vagy értékének egészét vagy egy részét is megadhatja. A keresési szöveg nem érzékeny a kis- és nagybetűkre.

    Példa funkciókeresésre

Funkciótáblázat metaadatainak lekérése

A funkciótáblázat metaadatait lekérő API a használt Databricks futtatókörnyezet verziójától függ. A 0.3.6-os vagy újabb verzióval használja a következőt get_table: . A 0.3.5-ös vagy újabb verzióval használja a következőt get_feature_table: .

# this example works with v0.3.6 and above
# for v0.3.5, use `get_feature_table`
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()
fs.get_table("feature_store_example.user_feature_table")

Funkciótáblacímkék használata

A címkék kulcs-érték párok, amelyeket szolgáltatástáblák létrehozására és keresésére használhat. Címkéket hozhat létre, szerkeszthet és törölhet a Funkciótár felhasználói felületén vagy a Szolgáltatástár Python API-jában.

Funkciótáblacímkék használata a felhasználói felületen

A Szolgáltatástár felhasználói felületén kereshet vagy tallózhat a szolgáltatástáblák között. A felhasználói felület eléréséhez az oldalsávon válassza a Machine Learning > Feature Store lehetőséget.

Címke hozzáadása a Funkciótár felhasználói felületével

  1. Kattintson Címke ikon , ha még nincs megnyitva. Megjelenik a címkék táblázata.

    címketábla

  2. Kattintson a Név és érték mezőkre, és adja meg a címke kulcsát és értékét.

  3. Kattintson a Hozzáadás gombra.

Címke szerkesztése vagy törlése a Funkciótár felhasználói felületén

Meglévő címke szerkesztéséhez vagy törléséhez használja a Műveletek oszlop ikonjait.

címkeműveletek

Funkciótábla-címkék használata a Feature Store Python API használatával

A 0.4.1-es vagy újabb verziót futtató fürtökön címkéket hozhat létre, szerkeszthet és törölhet a Feature Store Python API használatával.

Követelmények

Feature Store-ügyfél v0.4.1 vagy újabb verzió

Szolgáltatástábla létrehozása címkével a Feature Store Python API használatával

from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()

customer_feature_table = fs.create_table(
  ...
  tags={"tag_key_1": "tag_value_1", "tag_key_2": "tag_value_2", ...},
  ...
)

Címkék hozzáadása, frissítése és törlése a Feature Store Python API használatával

from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()

# Upsert a tag
fs.set_feature_table_tag(table_name="my_table", key="quality", value="gold")

# Delete a tag
fs.delete_feature_table_tag(table_name="my_table", key="quality")

Adatforrások frissítése funkciótáblához

A funkciótároló automatikusan nyomon követi a funkciók kiszámításához használt adatforrásokat. Az adatforrásokat manuálisan is frissítheti a Feature Store Python API-val.

Követelmények

Feature Store-ügyfél 0.5.0-s vagy újabb verziója

Adatforrások hozzáadása a Feature Store Python API használatával

Az alábbiakban néhány példaparancs látható. További részletekért tekintse meg az API dokumentációját.

from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()

# Use `source_type="table"` to add a table in the metastore as data source.
fs.add_data_sources(feature_table_name="clicks", data_sources="user_info.clicks", source_type="table")

# Use `source_type="path"` to add a data source in path format.
fs.add_data_sources(feature_table_name="user_metrics", data_sources="dbfs:/FileStore/user_metrics.json", source_type="path")

# Use `source_type="custom"` if the source is not a table or a path.
fs.add_data_sources(feature_table_name="user_metrics", data_sources="user_metrics.txt", source_type="custom")

Adatforrások törlése a Feature Store Python API használatával

További részletekért tekintse meg az API dokumentációját.

Feljegyzés

A következő parancs törli a forrásneveknek megfelelő összes típusú adatforrást ("tábla", "elérési út" és "egyéni").

from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()
fs.delete_data_sources(feature_table_name="clicks", sources_names="user_info.clicks")

Funkciótábla törlése

A Szolgáltatástár felhasználói felületén vagy a Szolgáltatástár Python API-jával törölheti a szolgáltatástáblát.

Feljegyzés

  • A szolgáltatástáblák törlése váratlan hibákat okozhat a felsőbb rétegbeli gyártókban és az alsóbb rétegbeli felhasználókban (modellek, végpontok és ütemezett feladatok). A közzétett online áruházakat törölnie kell a felhőszolgáltatójával.
  • Ha az API-val töröl egy funkciótáblát, a mögöttes Delta-tábla is el lesz távolítva. Ha töröl egy szolgáltatástáblát a felhasználói felületről, külön kell elvetnie a mögöttes Delta-táblát.

Funkciótábla törlése a felhasználói felületen

  1. A funkciótábla lapján kattintson Lefelé gomb a funkciótábla neve jobb oldalán, és válassza a Törlés lehetőséget. Ha nem rendelkezik a funkciótáblához tartozó MANAGE engedéllyel, akkor ez a beállítás nem jelenik meg.

    Törlés kiválasztása a legördülő menüből

  2. A Funkciótábla törlése párbeszédpanelen kattintson a Törlés gombra a megerősítéshez.

  3. Ha a mögöttes Delta-táblát is el szeretné dobni, futtassa a következő parancsot egy jegyzetfüzetben.

    %sql DROP TABLE IF EXISTS <feature-table-name>;
    

Szolgáltatástábla törlése a Feature Store Python API használatával

A Feature Store 0.4.1-s és újabb verziójú ügyfélalkalmazásával funkciótáblát törölhet drop_table . Ha töröl egy táblát, drop_tablea mögöttes Delta-tábla is el lesz távolítva.

fs.drop_table(
  name='recommender_system.customer_features'
)