Sdílet prostřednictvím


Práce s funkcí tables v úložišti funkcí Workspace (starší verze)

Poznámka:

Tato dokumentace se zabývá Úložištěm funkcí pro pracovní prostor. Databricks doporučuje používat feature engineering v Unity Catalog. Úložiště funkcí pracovního prostoru bude v budoucnu přestat být podporováno.

Informace o práci s funkcemi tables v Unity Catalognaleznete v tématu Práce s funkcemi tables v Unity Catalog.

Tato stránka popisuje, jak vytvořit a pracovat s vlastností tables v úložišti vlastností pracovního prostoru.

Poznámka:

Pokud je váš pracovní prostor povolený pro Unity Catalog, jakýkoliv table spravovaný pomocí Unity Catalog, který má primární klíč, je automaticky funkce table, kterou můžete použít pro trénování a predikci modelu. Všechny možnosti Catalog Unity, jako je zabezpečení, rodokmen, označování a přístup mezi pracovními prostory, jsou automaticky dostupné pro funkci table. Informace o práci s funkcemi tables v pracovním prostoru s podporou CatalogUnity najdete v tématu Práce s funkcemi tables v Unity Catalog.

Informace o sledování původu a aktuálnosti funkcí najdete v tématu Objevování funkcí a sledování jejich původu v úložišti funkcí pracovního prostoru (starší verze).

Poznámka:

Názvy databází a funkcí table můžou obsahovat pouze alfanumerické znaky a podtržítka (_).

Vytvoření databáze pro funkci tables

Před vytvořením jakékoli funkce tablesje nutné vytvořit databázi k jejich uložení.

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

Funkce tables jsou uloženy jako delta tables. Při vytváření funkce table s create_table (klient úložiště funkcí v0.3.6 a novější) nebo create_feature_table (v0.3.5 a níže), je nutné zadat název databáze. Například tento argument vytvoří Delta table s názvem customer_features v databázi recommender_system.

name='recommender_system.customer_features'

Když publikujete funkci table do online obchodu, výchozí table a název databáze jsou ty, které jsou zadané při vytváření table; pomocí metody publish_table můžete zadat různé názvy.

Uživatelské rozhraní Databricks Feature Store zobrazuje název table a databázi v online obchodě spolu s dalšími metadaty.

Vytvoření funkce table v úložišti funkcí Databricks

Poznámka:

Můžete také zaregistrovat existující Delta table jako funkci table. Podívejte se na Zaregistrujte existující Delta table jako funkci table.

Základní kroky vytvoření funkce table jsou:

  1. Napište funkce Pythonu pro výpočet funkcí. Výstupem každé funkce by měl být datový rámec Apache Spark s jedinečným primárním klíčem. Primární klíč se může skládat z jednoho nebo více columns.
  2. Vytvořte funkci table vytvořením instance FeatureStoreClient a použitím create_table (v0.3.6 a novější) nebo create_feature_table (v0.3.5 a novější).
  3. Naplňte funkci table pomocí write_table.

Podrobnosti o příkazech a parameters použitých v následujících příkladech najdete v referenčních informacích k rozhraní PYTHON API feature store.

V0.3.6 a novější

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 a novější

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'
)

Zaregistrovat existující Delta table jako funkci table

S v0.3.8 a vyššími verzemi můžete zaregistrovat existující Delta table jako funkci table. Rozdílový table musí existovat v metastoru.

Poznámka:

Pokud chcete zaregistrovat update jako funkci table, musíte použít rozhraní Feature Store Python API.

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

Řízení přístupu k funkci tables

Viz Řízení přístupu k funkcím tables v úložišti funkcí pracovního prostoru (starší verze).

Update funkce table

Můžete update prvek table přidáním nových vlastností nebo úpravou konkrétních řádků na základě primárního klíče.

Následující funkce table metadata nelze aktualizovat:

  • Primární klíč
  • klíč Partition
  • Název nebo typ existující funkce

Přidání nových funkcí do existující funkce table

Nové funkce můžete do existující funkce přidat table jedním ze dvou způsobů:

  • Spusťte existující výpočetní funkci Update a spusťte write_table s vráceným datovým rámcem. Tato aktualizace se týká funkce tableaschema a sloučí novou funkci values na základě primárního klíče.
  • Vytvořte novou funkci pro výpočet nové funkce values. Datový rámec vrácený touto novou výpočetní funkcí musí obsahovat primární klíče prvku tablesa klíče partition (pokud jsou definovány). Spuštěním write_table s datovým rámcem zapište nové funkce do existujícího tablefunkce pomocí stejného primárního klíče.

Update pouze konkrétní řádky ve funkci table

Použít mode = "merge" v write_table. Řádky, jejichž primární klíč v datovém rámci odeslaném write_table ve volání neexistuje, zůstanou beze změny.

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

Naplánujte úlohu pro update funkci table

Aby funkce ve funkcionalitě tables vždy měly nejnovější values, doporučuje Databricks vytvořit úlohu, která spouští poznámkový blok k update vaší funkcionality table pravidelně, například každý den. Pokud už máte neplánovanou úlohu vytvořenou, můžete ji změnit na naplánovanou úlohu, abyste měli jistotu, že funkce values jsou vždy up-to-date. Viz Plán a orchestrace pracovních postupů.

Kód pro update funkce table používá mode='merge', jak je znázorněno v následujícím příkladu.

fs = FeatureStoreClient()

customer_features_df = compute_customer_features(data)

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

Ukládání minulých values denních funkcí

Definujte funkci table složeným primárním klíčem. Zahrňte datum do primárního klíče. Například pro tablestore_purchasesfunkce můžete použít složený primární klíč (date, user_id) a partition klíč date pro efektivní čtení.

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

Pak můžete vytvořit kód pro čtení z funkce table filtrování date do časového období zájmu.

Funkci časových řad můžete vytvořit také table zadáním datecolumn jako klíče časového razítka pomocí argumentu timestamp_keys.

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'
)

To umožňuje vyhledávání k určitému bodu v čase při použití create_training_set nebo score_batch. Systém provádí as-of časové razítko joinpomocí zadaného timestamp_lookup_key.

Pokud chcete, aby byla funkce table aktuální, set pravidelně naplánovanou úlohu pro zápis funkcí nebo streamování nových funkcí values do funkce table.

Vytvořit kanál pro výpočet funkcí streamování až do update funkcí

Pokud chcete vytvořit výpočetní kanál funkce streamování, předejte streamování DataFrame jako argument .write_table Tato metoda vrátí StreamingQuery objekt.

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'
)

Čtení z funkce table

Ke čtení funkce valuespoužijte read_table .

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

Funkce vyhledávání a procházení tables

Pomocí uživatelského rozhraní úložiště funkcí vyhledejte nebo procházejte funkce tables.

  1. Na bočním panelu klikněte na selectMachine Learning > úložiště funkcí pro zobrazení uživatelského rozhraní úložiště funkcí.

  2. Do vyhledávacího pole zadejte celý název funkce nebo jeho část table, funkci nebo zdroj dat používaný pro výpočet funkce. Můžete také zadat celý klíč nebo část klíče nebo hodnoty značky. Hledaný text nerozlišuje velká a malá písmena.

    Příklad vyhledávání funkcí

metadata funkce Gettable

Rozhraní API pro metadata funkce gettable závisí na verzi runtime Databricks, kterou používáte. S v0.3.6 a vyšší použijte get_table. S v0.3.5 a níže použijte 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")

Pracujte s funkčními značkami table

Značky jsou páry klíčů a hodnot, které můžete vytvořit a použít k hledání funkcí tables. Značky můžete vytvářet, upravovat a odstraňovat pomocí uživatelského rozhraní úložiště funkcí nebo rozhraní Python API úložiště funkcí.

Práce s funkčními značkami table v uživatelském rozhraní

Pomocí uživatelského rozhraní úložiště funkcí vyhledejte nebo procházejte funkce tables. Pokud chcete získat přístup k uživatelskému rozhraní, na bočním panelu selectstrojové učení > úložiště funkcí.

Přidání značky pomocí uživatelského rozhraní úložiště funkcí

  1. Klikněte, Ikona značky pokud ještě není otevřený. Značka table se zobrazí.

    značky table

  2. Klikněte do polí Název a Hodnota a zadejte klíč a hodnotu značky.

  3. Klikněte na tlačítko Přidat.

Úprava nebo odstranění značky pomocí uživatelského rozhraní úložiště funkcí

Pokud chcete upravit nebo odstranit existující značku, použijte ikony v sekci Akcecolumn.

akce značek

Práce se značkami funkcí table pomocí rozhraní Python API úložiště funkcí

Na clusterech se systémem v0.4.1 a novějším můžete vytvářet, upravovat a odstraňovat značky pomocí rozhraní Python API úložiště funkcí.

Požadavky

Klient úložiště funkcí verze 0.4.1 a vyšší

Vytvoření prvku table se štítkem pomocí rozhraní Python API Feature Store

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", ...},
  ...
)

Přidejte, updatea odstraňte značky pomocí rozhraní Python API Feature Store

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")

Update zdroje dat pro funkci table

Úložiště funkcí automaticky sleduje zdroje dat používané k výpočetním funkcím. Zdroje dat můžete také ručně update pomocí Python API úložiště funkcí .

Požadavky

Klient úložiště funkcí verze 0.5.0 a vyšší

Přidání zdrojů dat pomocí rozhraní Python API úložiště funkcí

Tady je několik ukázkových příkazů. Podrobnosti najdete v dokumentaci k rozhraní API.

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")

Odstranění zdrojů dat pomocí rozhraní Python API úložiště funkcí

Podrobnosti najdete v dokumentaci k rozhraní API.

Poznámka:

Následující příkaz odstraní zdroje dat všech typů ("table", path" a "custom"), které odpovídají názvům zdrojů.

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

Odstranění funkce table

Funkcionalitu table můžete odstranit pomocí uživatelského rozhraní úložiště vlastností nebo pomocí Python API úložiště vlastností.

Poznámka:

  • Odstranění funkce table může vést k neočekávaným chybám u nadřazených výrobců a podřízených příjemců (modelů, koncových bodů a plánovaných úloh). U poskytovatele cloudu musíte odstranit publikovaná online úložiště.
  • Když odstraníte funkci table pomocí rozhraní API, odstraní se také základní Delta table. Když odstraníte funkci table z uživatelského rozhraní, musíte samostatně smazat související Delta table.

Odstranění funkce table pomocí uživatelského rozhraní

  1. Na stránce funkce table klikněte na tlačítko Dolů vpravo od názvu funkce table a na selectOdstranit. Pokud nemáte oprávnění CAN MANAGE pro funkci table, tato možnost se nezobrazí.

    Select odstranit z rozevírací nabídky

  2. V dialogovém okně Odstranit funkci Table kliknutím na Odstranit potvrďte.

  3. Pokud chcete také vypustit základní Delta , table, spusťte v poznámkovém bloku následující příkaz.

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

Odstraňte funkci table pomocí Python API Feature Store

Pomocí klienta úložiště funkcí verze 0.4.1 a vyšší můžete pomocí drop_table odstranit funkci table. Když odstraníte table s drop_table, odstraní se také podkladový Delta table.

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