Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Unity Kataloğu'nda depolanan Özellik Görünümü tanımlarınızı oluşturduktan sonra, özellik tanımlarını kullanarak kaynak tablonuzdan özellik verileri oluşturabilirsiniz. Bu işleme özelliklerinizin somutlaştırılması denir. Azure Databricks model eğitimi ve toplu puanlama veya çevrimiçi sunum için Unity Kataloğu'ndaki tabloları doldurmak için Lakeflow işlem hatlarını oluşturur ve yönetir.
Özellik Görünümlerini sunma hakkında bilgi için bkz. Özellik Görünümlerini Sunma.
Geçmiş kaynak verisini düzelttikten veya ekledikten sonra somutlaştırılmış değerleri yeniden hesaplamak için Backfill Feature Views bölümüne bakın.
Seçilen varlıklar için somutlaştırılmış değerleri kaldırmak üzere, Varlıklar için özellik değerlerini temizleme bölümüne bakın.
Bir pakette maddeleştirilmiş özellikleri belirtmek için, Deklaratif Otomasyon Paketlerini Kullanarak Özellik Görünümlerini Yönetme bölümüne bakın.
Gereksinimler
- Özellikler Özellik Görünümleri olarak oluşturulmalı ve Unity Kataloğu'nda depolanmalıdır.
- Sürüm gereksinimleri için Gereksinimler bölümüne bakın.
Özellik türüne göre maddeleştirme desteği
Bir özelliğin nerede ve nerede gerçekleşebileceği türüne bağlıdır:
-
ColumnSelectionözellikler çevrimiçi mağazalarda somutlaştırılabilir. Bkz. ColumnSelection materyalizasyon. - Bir
RollingWindowile topluLastözellikler çevrimiçi depolara somutlaştırılabilir. Bkz. Güncellikle sınırlı en son değerleri somutlaştırma. -
RequestSource,FeatureViewSourceveCustomUDFözellikleri somutlaştırılamaz. Bkz. İsteğe bağlı özellikler ve somutlaştırma. -
SdpSourceözellikler,DeltaTableSourceözellikler gibi, kaynak boru hattı her çalıştırmadan sonra güncellendiğinde somutlaştırılır. Bkz. Özellik kaynağı olarak Lakeflow boru hattı kullanın.
Yalnızca çevrimiçi mağazalarda materialize edilen özellikler çevrimdışıyken de kullanılabilir: create_training_set ve compute_features, belirli bir andaki değerlerini doğrudan kaynaktan hesapladığından çevrimdışı materialize etmeye gerek yoktur.
ColumnSelection materialization
ColumnSelection özellikleri, her varlık anahtarı için tek bir sütunun en son değerini toplama olmadan seçer. Yalnızca çevrimiçi mağazalar için kullanılabilir duruma getirilebilirler. Çevrimdışı kullanım örnekleri için (eğitim ve toplu çıkarım), ColumnSelection özellikler sorgu zamanında doğrudan kaynak verilerden getirilir, bu nedenle çevrimdışı gerçekleştirme gerekmez.
Malzemeleştirme davranışı
- Pipeline, varlık anahtarı başına en son satırı toplama penceresi olmadan çevrimiçi tabloya yazar.
- Çevrimiçi gerçekleştirme, çevrimiçi tabloyu her bir varlık anahtarı için geçerli olan en son değerle doldurur.
Example
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import (
DeltaTableSource, Feature, ColumnSelection, TableTrigger, OnlineStoreConfig,
)
fe = FeatureEngineeringClient()
delta_source = DeltaTableSource(
catalog_name="catalog",
schema_name="schema",
table_name="transactions",
)
amount_feature = Feature(
source=delta_source,
function=ColumnSelection("amount"),
entity=["user_id"],
timeseries_column="transaction_time",
name="latest_transaction_amount",
)
# Register before materializing
amount_feature = fe.register_feature(
feature=amount_feature,
catalog_name="catalog",
schema_name="schema",
)
mfs = fe.materialize_features(
features=[amount_feature],
online_config=OnlineStoreConfig(
catalog_name="catalog",
schema_name="feats_online",
table_name_prefix="txn_",
online_store_name="lb_usw2"
),
trigger=TableTrigger(),
)
ColumnSelection özellikleri TableTrigger kullanır; bu da kaynak Delta tablosu yeni bir commit aldığında işlem hattını çalıştırır. Çevrimdışı kullanım senaryoları (eğitim ve toplu çıkarım) için özellikler doğrudan kaynaktan okunduğundan, offline_config gerekmez ColumnSelection.
Note
RequestSource özellikler materialize edilemez çünkü bunlar çıkarım zamanında çağıran tarafından sağlanan verileri temsil eder (veya veriler eğitim zamanında etiketli DataFrame'den çıkarılır). Okunacak kaynak tablo yok. Değerler yalnızca istek yükünde veya Eğitim DataFrame'de bulunur.
Tazelik sınırına bağlı en güncel değerleri somutlaştırın
RollingWindow içeren bir toplu Last toplama, çevrimiçi bir özelliğin zaman aşımı süresini (TTL) tanımlar: hiçbir kaynak değer pencere içinde yer almadığında, değeri çevrimiçi depodan silinir. Bu, bir değerin yaşı servisin güvenli olup olmadığını belirlediğinde faydalıdır. Örneğin, son bir saate ait bir cihaz durumu döndürülebilirken, daha eski bir durum süresiz olarak erişilebilir kalmak yerine null değerine çözülür.
RollingWindow, özelliğe TTL benzeri bir davranış kazandıran açıkça tanımlanmış bir süre belirtir. Örneğin, kaynak her gün değerler yayımlıyorsa ve sadece son yedi günün değerlerini korumak istiyorsanız, yedi günlük süreli a RollingWindow kullanın. Her tetiklemede, materialization çevrimiçi tabloyu tamamen değiştirir; böylece pencerenin dışına çıkan değerler öngörülebilir bir zamanlamaya göre kaldırılır. Bu, bir Last ile akış yapan RollingWindow ile aynı sonucu üretir, ancak hesaplamayı sürekli çalıştırmadığı için daha düşük maliyetlidir.
Bu yayın deseni, anlık görüntü modunda yayınlanan TTL'ye sahip bir özellik tablosuna benzer. Bir dizi özellik tablosu bulunduruyorsan ve onları diğer Özellik Görünümleriyle birlikte kullanmak istiyorsan, bunları Özellik Görünümleri yazarlık çerçevesine uyarlayabilirsin.
Last toplu işlemini RollingWindow ve TableTrigger ile kullanın.
Bu kombinasyon, aşağıdaki gereksinimlerle özel bir çevrimiçi materyalizasyon moduna sahiptir:
- Kaynak bir
DeltaTableSourceolmalıdır. - Toplama fonksiyonu
Last, penceresi ise birRollingWindowolmalıdır. - Materialization, bir
OnlineStoreConfigsağlamalı,OfflineStoreConfigöğesini atlamalı veTableTriggerkullanmalıdır.
Aşağıdaki örnekte, latest_device_state_1h bu gereksinimleri karşılayan kayıtlı bir Özellik bulunmaktadır:
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import OnlineStoreConfig, TableTrigger
fe = FeatureEngineeringClient()
materialized = fe.materialize_features(
features=[latest_device_state_1h],
online_config=OnlineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="latest_device_state_serving",
online_store_name="device_state_store",
),
trigger=TableTrigger(),
)
Çevrimdışı eğitim ve toplu puanlama için özellik mühendisliği istemcisi, belirli bir zamandaki değeri doğrudan kaynaktan hesaplar. Bu özellik için çevrimdışı bir maddeleştirme okumaz.
Değerlendirmeler
- Son kullanma tarihi sadece tetikleyiciye göre avans alır. Bir kaynak tablodaki commit işlemi bir materialization yenilemesini tetiklediğinde, çevrimiçi değer ve son kullanma süresi ileri alınır. Sadece zaman geçmesi yenilemeyi tetiklemez. Kaynak yayınlamayı durdurursa, son maddeleştirilen değer çevrimiçi mağazada kalır, ta ki sonraki bir commit yenilemeyi tetikleene kadar.
- Zaman serisi sütununu kaynak yayın zamanıyla hizalayın. Zaman serisi sütunu, kaynağın veriyi ne zaman yayımladığını göstermelidir. Aksi takdirde, çevrimiçi ve çevrimdışı değerler birbirinden ayrılır, çünkü çevrimiçi mağaza tetikleme zamanında katılırken, çevrimdışı okumalar zaman serisi zamanında birleşir.
- Pencere süresini yayınlama sıklığının bir katına ayarlayın.
RollingWindowsüresi, kaynağın yayınlama sıklığının bir katı değilse bazı değerler, çevrimiçi ortamda hâlâ görünür durumdayken çevrimdışı eğitim sırasında süresi dolmuş olarak değerlendirilir.
İstek üzerine özellikler ve materyalizasyon
RequestSource değerler eğitim DataFrame'inden veya çıkarım isteğinden gelir, bu nedenle somutlaştırılacak kaynak tablo yoktur.
FeatureViewSource özellikleri, eğitim veya hizmet sırasında yukarı akış özellik değerlerine bir CustomUDF uygular. Önceden hesaplanmış bir sonucu saklamazlar. Delta tablosuyla desteklenen özellikler için de materyalizasyon desteklenmemektedir CustomUDF .
cost_sum_7d özelliğini besleyen revenue_sum_7d ve margin gibi bir bağımlılık grafiği için:
- Çevrimdışı eğitim için
marginilecreate_training_setöğesini çağırın. Üst akış özelliklerini çözer ve mevcut olduğunda uyumlu çevrimdışı materyalizasyonlar kullanarak nokta-zaman değerleri hesaplar. - Çevrimiçi servis için, desteklenen gelir ve maliyet özelliklerini bir online mağazaya aktarın. Uç nokta, bunları bulur ve her istek için
marginhesaplar. - Yalnızca desteklenen upstream özellikleri
materialize_featuresöğesine iletin,marginöğesine veya istek destekli herhangi bir özelliğe değil. Maddeleşme, türetilmiş bir özelliğin bağımlılıklarını özyinelemeli olarak maddeleştirmez.
Yalnızca isteğe dayalı özellikler kullanan bir grafik, çevrimiçi mağazaya ihtiyaç duymaz. FeatureViewSource özellikleriyle eğitme ve türetilmiş özellikleri sunma konularına bakın.
Permissions
Maddeleştirme, özellik ve kaynak ile hedef kaynaklar üzerinde ayrıcalıklar gerektirir. Tam Unity Kataloğu ayrıcalık açıklamaları için Unity Kataloğu ayrıcalıkları referansına bakınız.
Bir özelliğin gerçekleştirilmesi için
MANAGEgerekir.materialize_featuresçağrısı, arka plandaki Lakeflow işlem hatlarını ve Unity Catalog tablolarını oluşturur ve yönetir; dolayısıyla bu bir yönetim işlemidir. Somutlaştırılan özellik tanımını okumak için, özellikteMANAGEve ayrıcaREAD FEATUREolmalıdır.Somutlaştırılmış bir özelliğin silinmesi yalnızca onu oluşturan kişiyle sınırlıdır. Yalnızca bir maddeleştirilmiş özellik oluşturan kullanıcı onu silebilir.
delete_materialized_featureBu kısıtlama, Unity Kataloğu ayrıcalıklarından bağımsızdır:MANAGEözellik veya ana şeması üzerinde başka bir kullanıcının onu silmesine izin vermez.Kaynak verilerini okumak için
SELECTgereklidir. Delta tablo kaynağı kullanan bir özellik için, kaynak tabloda mutlaka olmalıdırSELECT. Stream kaynağı kullanan bir özellik için, Stream'in alma tablosundaSELECTbulunmalıdır.Bir Akış'ın kimlik doğrulama yapılandırması için gereken diğer izinler için bakınız: Kafka kimlik doğrulama.
Hedef tablolar oluşturmak için
CREATE TABLEgereklidir.OnlineStoreConfigveyaCREATE TABLEtarafından belirtilen her şemadaOfflineStoreConfigbulunmalıdır. Çevrimdışı ve çevrimiçi varış noktaları farklı şemalarda veya kataloglarda olabilir ve materyalizasyon her bir destinasyon üzerinde ayrıcalıklar gerektirir.Çevrimiçi bir mağaza oluşturmak için
CAN USEgerekir. Çevrimiçi mağaza tarafından kullanılan Lakebase örneğinde veya projesindeCAN USEolmalıdır. Lakebase izinleri hakkında bilgi için bkz. Proje izinleri ver.Somutlaştırılmış özellikleri listelemek için üst özellikte
READ FEATUREgerekir.list_materialized_featureskullanmak için, somutlaştırılan özellikteREAD FEATUREolmalıdır.Somutlaştırılmış verilerin okunması için
SELECTgerekir. Eriştiğiniz her çevrimdışı veya çevrimiçi çıkış tablosundaSELECTbulunmalıdır.READ FEATUREolan ebeveyn özellik bu tablolara erişim izni vermez.
Maddeleştirmede yer alan her Unity Catalog kaynağı için, üst kataloğunda USE SCHEMA ve üst şemasında USE CATALOG iznine de ihtiyacınız vardır. Bu gereklilik, her bir kaynak veya Akış alım tablosu ve her yapılandırılmış hedef için geçerlidir.
READ FEATURE ve MANAGE, bir şema veya katalog üzerinde verildiğinde, içerdiği tüm mevcut ve gelecekteki nesneler için geçerlidir.
API veri yapıları
OfflineStoreConfig
Gerçekleştirilmiş özelliklerin yazılacağı çevrimdışı depo yapılandırması. Çağrıldığında materialize_features, özellik deposu arka planı bu ön eki kullanarak tablolar oluşturur. Her işlem hattı yürütmesi, gerçekleştirme zamanlamasına göre tabloya en son özellik değerlerini oluşturur.
OfflineStoreConfig(
catalog_name: str, # Catalog name for the offline table where materialized features will be stored
schema_name: str, # Schema name for the offline table
table_name_prefix: str # Table name prefix for the offline table. The pipeline may create multiple tables with this prefix, each updated at different cadences
)
from databricks.feature_engineering.entities import OfflineStoreConfig
offline_store = OfflineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="customer_features"
)
OnlineStoreConfig
Model teslim hizmeti için özellikleri depolayan çevrimiçi mağaza yapılandırması. Gerçekleştirme, catalog.schema.table_name_prefix ile Delta tabloları oluşturur ve tabloları aynı adla Çevrimiçi Özellik Deposu'na akıtır.
from databricks.feature_engineering.entities import OnlineStoreConfig
online_store = OnlineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="customer_features_serving",
online_store_name="customer_features_store"
)
MaterializedFeature
Unity Catalog'da önceden hesaplanmış bir temsili bulunan, yani somutlaştırılmış bir Özellik Görünümünü temsil eder. Çevrimdışı tablo ve çevrimiçi tablo için ayrı somutlaştırılmış özellikler bulunur. Genellikle, doğrudan bir MaterializedFeature örneği oluşturmazsınız.
latest_backfill_operation alanı somutlaştırılmış özelliğin en son backfill'inin adını tutar. Bkz. Backfill Feature Views.
API işlev çağrıları
materialize_features()
Özellik Görünümlerinin listesini çevrimdışı Delta tablosuna veya Çevrimiçi Özellik Mağazası'na aktarır. Bu işlevi çağırmadan önce özelliklerin Unity Kataloğu'nda kaydedilmesi gerekir (örneğin create_feature veya register_feature kullanarak). Kaydedilmemiş yerel olarak yapılmış özellikler çalışmaz.
FeatureEngineeringClient.materialize_features(
*, # Arguments are keyword-only
features: List[Feature], # List of Feature Views to materialize
offline_config: Optional[OfflineStoreConfig] = None, # Offline store config (aggregation features only)
online_config: Optional[OnlineStoreConfig] = None, # Online store config
trigger: Union[CronSchedule, TableTrigger, StreamingMode], # Materialization trigger
tags: Optional[Dict[str, str]] = None, # Custom tags for cost attribution
budget_policy_id: Optional[str] = None, # Serverless usage policy for cost attribution
) -> List[MaterializedFeature]:
Method, özellik değerlerinin ne zaman güncellendiğine ve bu özelliklerin maddileştirildiği Unity Catalog tablolarına dair meta verileri içeren maddileştirilmiş özellikler listesini döndürür.
Eğer hem bir OnlineStoreConfig hem de bir OfflineStoreConfig sağlanırsa, sağlanan her özellik için, her mağaza türü başına bir tane olmak üzere iki somutlaştırılmış özellik döndürülür.
trigger parametresi, gerçekleştirme işlem hattının ne zaman çalıştırılacağını denetler.
-
CronSchedule: Özellik zamanlamasından türetilen bir zamanlamaya göre veya çağıran tarafından sağlanan Quartz cron zamanlamasına göre çalışır. Toplu toplama özellikleri için desteklenir (AggregationFunctionfromDeltaTableSource). -
TableTrigger: Yukarı akış Delta tablosu bir commit aldığında çalışır.DeltaTableSourcetarafından desteklenenColumnSelectionözellikleri ve toplama özellikleri (AggregationFunction) için destek sunulur. Toplama özellikleri için boru hattının çalışma sıklığı, özelliğin granülerliğinin yarısı başına en fazla bir kez olacak şekilde kısıtlanır (kayan pencere için kayma süresi, atlamalı pencere için ise pencere uzunluğu); bu süre en fazla 1 saat ile sınırlandırılır ve hiçbir durumda 5 dakikada birden daha sık çalışmaz. Örneğin, 1 saatlik bir granülerlik için en fazla 30 dakikada bir veya 2 saat veya daha fazla granülarlık için en fazla saatte bir kez. Aralık, önceki çalıştırmadan itibaren ölçülür; bu nedenle süre dolduktan sonra gelen bir commit yine de hemen bir çalıştırmayı tetikler. -
StreamingMode: Sürekli akış boru hattı olarak çalışır.StreamSourcetarafından desteklenen özellikler için gereklidir. Ayrıca, bir programa göre çalışmak yerine işlem hattının tablonun değişiklik veri akışını mikro toplu modda okuduğu birColumnSelectiontarafından desteklenenDeltaTableSourceözellikleri veRollingWindowtoplama özellikleri için de desteklenir. Bkz.DeltaTableSourceakışından.
Bir materialize_features çağrı, farklı tetikleyiciler, kaynaklar ve boru hatlarıyla toplu özellikler içerebilir. Her kaynak, pipeline ve programın kendine ait bir işi olur. Akış özellikleri ayrı bir çağrı gerektiriyor.
Bir somutlaştırmanın maliyetini atamak için tags, budget_policy_id veya her ikisini birden geçirin. Azure Databricks bunları oluşturduğu işe veya işlem hattına uygular; böylece yaptığı harcama, faturalandırılabilir kullanım sistem tablosunda ilişkilendirmenizi içerir. Her ikisi de yaratılışta uygulanır, bu yüzden mevcut bir maddileşmeyi farklı şekilde atfetmek yeni bir maddileşme yaratmak anlamına gelir.
budget_policy_id sunucusuz kullanım politikasının kimliğini alır. Bir tane oluşturmak ve kimliğini almak için Sunucusuz kullanım politikası oluştur sayfasına bakınız. Etiket sınırları, her değerin ulaştığı kaynaklar ve atriteli harcamanın nasıl sorgulanacağı için Feature Store maliyet yönetimine bakınız.
Çevrimdışı mağazaya dönüştürme
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import (
CronSchedule, OfflineStoreConfig,
)
fe = FeatureEngineeringClient()
materialized = fe.materialize_features(
features=features,
offline_config=OfflineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="customer_features"
),
trigger=CronSchedule(
quartz_cron_expression="0 0 * * * ?", # Hourly
timezone_id="UTC",
),
)
Çevrimiçi mağazaya geçiş
Note
Çoğu toplama özelliğini çevrimiçi mağazaya aktarmak için, aynı zamanda çevrimdışı bir mağazaya da ulaşmanız gerekir. Her ikisi de offline_config ve online_config gereklidir. , online_store_name mevcut bir Çevrimiçi Özellik Deposu'na başvurmalıdır. Oluşturma yönergeleri için bkz. Databricks Online Özellik Mağazaları.
ColumnSelection özellikler bir OfflineStoreConfig gerektirmez. Bkz. ColumnSelection materyalizasyon.
Özel durumlu RollingWindow parti Last de sadece çevrimiçi olarak sunuluyor. Bkz. Güncellikle sınırlı en son değerleri somutlaştırma.
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import (
CronSchedule, OfflineStoreConfig, OnlineStoreConfig,
)
fe = FeatureEngineeringClient()
materialized = fe.materialize_features(
features=features,
offline_config=OfflineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="customer_features"
),
online_config=OnlineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="customer_features_serving",
online_store_name="customer_features_store"
),
trigger=CronSchedule(
quartz_cron_expression="0 0 * * * ?", # Hourly
timezone_id="UTC",
),
)
Akış özelliklerini oluşturma
Akış özellikleri yalnızca çevrimiçi mağazalara gerçekleştirilebilir; offline_config parametresi desteklenmiyor. Akış özellikleri, verilerin bir saniyenin altında güncel kalmasını sağlamak için gerçek zamanlı bir işlem hattı gerektirdiğinden, çevrimdışı materyalizasyon desteklenmez. Çevrimdışı eğitim veya değerlendirme için özellik mühendisliği istemcisi, değerlendirilen her veri noktasına göre özellik değerlerini yeniden derler.
Akış özellikleri aynı materialize_features çağrıdaki toplu iş özellikleriyle karıştırılamaz.
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import (
OnlineStoreConfig, StreamingMode,
)
fe = FeatureEngineeringClient()
materialized = fe.materialize_features(
features=[streaming_feature],
online_config=OnlineStoreConfig(
catalog_name="my_catalog",
schema_name="my_schema",
table_name_prefix="streaming_features_serving",
online_store_name="feature_store_online"
),
trigger=StreamingMode(),
)
list_materialized_features()
Tam adına göre tanımlanan tek bir özelliğin gerçekleştirimlerini döndürür.
feature_name zorunludur ve yalnızca anahtar sözcük olarak kullanılabilir. Birçok özellikteki materyalizasyonları gözden geçirmek için önce özellikleri bir katalogda veya şemada listeleyin, ardından döndürülen her özellik için list_materialized_features öğesini çağırın.
Varsayılan olarak, en fazla 100 materialization döndürülür. parametresini max_results kullanarak bu sınırı değiştirebilirsiniz.
FeatureEngineeringClient.list_materialized_features(
*, # Arguments are keyword-only
feature_name: str, # Required: full name of the feature whose materializations to list
max_results: int = 100, # Maximum number of materializations to return
) -> List[MaterializedFeature]:
delete_materialized_feature()
Gerçekleştirilmiş bir özelliği silmeden önce, özelliğe başvuran modelleri veya özellik belirtimlerini kaldırın veya güncelleştirin.
Gerçekleştirilmiş bir özelliği siler. Geçirilecek özellik, özelliğin türüne bağlıdır.
-
Agregasyon özellikleri: Çevrimdışı somutlaştırılmış özelliği geçirin. Aynı özellik için çevrimiçi gerçekleştirilmiş bir özellik varsa, her ikisi de silinir.
RollingWindowiçeren yalnızca çevrimiçi topluLastözelliği için, çevrimiçi somutlaştırılmış özelliği geçirin. -
ColumnSelectionözellikler: Çevrimiçi somutlaştırılmış özelliği sağlayın.ColumnSelectionözellikler yalnızca çevrimiçi depoya materyalize edilir (bkz. ColumnSelection materyalizasyonu), yani eşleştirilmiş çevrimdışı özellik yoktur.
Gerçekleştirmenin bir parçası olarak özellikler, verimlilik için veri kaynağına ve toplama penceresine göre gruplandırılır.
ColumnSelection özelliklerin toplama penceresi yoktur, bu yüzden sadece veri kaynağına göre gruplandırılırlar. Gerçekleştirme işlem hattı, çevrimdışı tablo ve çevrimiçi tablo, gruplandırılmış tüm özellikler silinene kadar silinmez. Bir gruptaki son somutlaştırılmış özellik silindiğinde, özellik deposu ilişkili kaynakları bir arka plan süreci tarafından otomatik olarak temizlenmek üzere planlar. Bkz. Arka plan kaynağı temizleme.
Gerçekleştirilmiş özellikleri temizlemek için gerçekleşmiş özelliğe bağlı tabloyu inceleyin. İşlem ve Delta tablosu kaynakları temizlenmeden önce tablodaki her özelliğin (sütun başına bir tane) silinmesi gerekir.
list_materialized_features() kullanarak materialized_feature bağımsız değişkenini alın.
FeatureEngineeringClient.delete_materialized_feature(
materialized_feature: MaterializedFeature, # Required: The materialized feature to delete
) -> None
from databricks.feature_engineering import FeatureEngineeringClient
fe = FeatureEngineeringClient()
feature_names = [
"main.feature_store.amount_sum_sliding_7d_1d",
"main.feature_store.amount_sum_sliding_30d_1d",
"main.feature_store.transaction_count_sliding_7d_1d",
"main.feature_store.latest_transaction_amount",
"main.feature_store.latest_user_tier",
]
for name in feature_names:
mfs = fe.list_materialized_features(feature_name=name) # required, keyword-only
offline = [mf for mf in mfs if not mf.is_online]
for mf in (offline or mfs):
fe.delete_materialized_feature(materialized_feature=mf)
fe.delete_feature(full_name=name)
Arka plan kaynağı temizleme
Gerçekleştirilmiş bir özelliği sildiğinizde Databricks özellik meta verilerini hemen kaldırır. İlişkili altyapı (tablolar, işlem hatları ve işler) arka plan işlemi tarafından zaman uyumsuz olarak temizlenir.
Birden çok gerçekleştirilmiş özellik aynı tabloları ve işlem hatlarını paylaşabildiğinden, bu paylaşılan kaynaklar bunlara başvuran tüm gerçekleştirilmiş özellikler silinene kadar kaldırılmaz. Bir tablo kümesini paylaşan son gerçekleştirilmiş özellik silindiğinde, arka plan işlemi aşağıdaki kaynakları otomatik olarak siler:
- Gerçekleştirilmiş özellik verilerini içeren çevrimdışı Delta tabloları
- Özelliklerin çevrimiçi bir mağazada gerçekleştirilmesi durumunda çevrimiçi tablolar
- Somutlaştırma işlem hattı
- Düzenleme işi
Bu arka plan işlemi, çalışma alanınızdaki tabloları, işlem hatlarını ve işleri silme de dahil olmak üzere bu temizleme eylemlerini sizin adınıza gerçekleştirmek için Databricks tarafından yönetilen bir sistem hizmet sorumlusu kullanır. Hiçbir işlem yapmanız gerekmez. Temizleme tamamen özellik deposu tarafından yönetilir.
Note
Bir gruptaki son materyalize edilmiş özelliğin silinmesi ile ilgili tabloların ve diğer kaynakların kaldırılması arasında kısa bir gecikme olabilir.
Gerçekleştirme durumunu görüntüleme
Özellik Görünümlerinizin Azure Databricks kullanıcı arabirimindeki maddeselleştirme durumunu görüntülemek ve maddeselleştirme hatalarında hata ayıklamak için Unity Catalog'da Özellik Görünümlerini Keşfet bölümüne bakın.
RollingWindow'un uçtan uca tazeliğini doğrulayın
Note
Tazelik doğrulaması, Kamu Önizleme aşamasında olan Lakebase Change Data Feed (CDF) kullanır. CDF'yi açabilmeniz için bir çalışma alanı yöneticisinin Lakebase Change Data Feed önizlemesini etkinleştirmesi gerekir.
Bu bölüm yalnızca RollingWindow agregasyonları için geçerlidir. Toplu öznitelikler, burada tarif edilen akış tazeliği meta verilerini ortaya çıkarmaz.
Lakebase online store'a getirilen akışla somutlaştırılan RollingWindow özellikler, satır başına tazelik meta verisi taşır. CDF ile, çevrimiçi tablodaki her güncellemeyi Unity Catalog'daki bir Delta geçmiş tablosuna kaydeder ve ek bir boru hattı çalıştırmadan uçtan uca tazeliği ölçersiniz. Uçtan uca tazelik, bir olayın gerçekleştiği tarih ile toplulaştırılmış değerinin servis için kullanılabilir hale geldiği zaman arasındaki gecikmedir.
RollingWindow özellikleri satırları nasıl üretir
Bir RollingWindow özellik için, her varlığın değeri, sabit bir zaman aralığındaki olayları özetler (örneğin, son saatteki işlem sayısı). Pencere sürekli olarak ileri kayar, böylece iki durumda çevrimiçi mağazaya bir satır yazılır:
-
Veri odaklı güncelleme (
is_timer=false): yeni bir olay gelir ve agregi günceller. Bu sıra, penceredeki en son olayı yansıtıyor. -
Pencere süresinin dolması (
is_timer=true): yeni bir olay gelmez, ancak zaman ilerler ve en eski olaylar pencerenin dışına çıkar veya zaman aşımına uğrar. Bu olaylar artık agregasyon sonucuna dahil edilmediği için değer değişir (örneğin, sayı azalır), böylece özellik zamanlayıcıda güncellenmiş bir satır yayar. Bu sıra, en eski olayın zaman penceresinden çıktığı anı yansıtıyor; bu da o olayın penceresinin sonudur.
Her iki durumda da, event_time, satırı oluşturan değişikliğin gerçekleştiği zamandır: yeni bir olayın ortaya çıkması ya da en eski olayın zaman aşımına uğraması. Dolayısıyla commit_time - event_time, nasıl yayıldığından bağımsız olarak satırın ne kadar taze olduğunu gösterir.
Tazelik meta verileri
Her çevrimiçi akış satırında aşağıdaki sütunlar yer alır:
| Column | Description |
|---|---|
event_time |
Satırı ortaya çıkaran değişim gerçekleştiğinde. Veri odaklı güncellemede (is_timer = false), penceredeki en güncel (maksimum) olay zamanı. Bir pencere süresi dolması güncellemesinde (is_timer = true), en eski olayın pencereden çıktığı zaman: o olayın zamanı artı pencere süresi. Çevrimiçi tabloda farklı pencere sürelerine sahip özellikler varsa, süresi dolan pencere kullanılır. |
output_time |
Yayım sırasında akış penceresi sınırı (watermark). |
is_timer |
Satır nasıl yayımlandı: false = yeni gelen bir olay toplulaştırmayı (veri odaklı) ilerletti; true = bir zamanlayıcıyla ilerleyen pencere ve en eski verinin süresi doldu (pencere süresi doldu). |
commit_time |
Satır Lakebase online mağazasına yazıldığında. |
CDF etkinleştirildiğinde, her değişiklik CDF meta veri sütunlarıyla bir lb_<online_table>_history Delta tablosuna eklenir.
_pg_change_type Sütun (insert, update_preimage, update_postimage, veya delete) her değişim tipini tanımlar.
CDF'yi çevrimiçi tabloda etkinleştirin
Warning
CDF'yi, bir pipeline test ederken veya yapılandırmasını ayarlarken uçtan uca tazeliği doğrulamak için kullanın; üretim ortamındaki çevrimiçi mağazada tazeliği sürekli izlemek yerine. CDF ve REPLICA IDENTITY FULL Lakebase örneğine yük ekliyor, özellikle değişikliklerin kodunu çözmek için CPU’ya ve ek write-ahead log hacmine. Ek yük, senkronize edilen tablo sayısı ve diziler veya haritalar gibi büyük sütun değerleri ile artar. Üretim trafiğine hizmet veren bir çevrimiçi mağazada CDF'yi etkinleştirirseniz, otomatik ölçeklendirmenin kapasite payı olması için maksimum hesaplama birimlerini (CU) artırın ve CPU ile çevrimiçi hizmet gecikmesini izleyin.
Lakebase CDF, güncellemelerin tam önce-sonrası satır görüntüleriyle yakalanabilmesi için her kaynak tabloda replika kimliğinin
FULLolarak ayarlanmasını gerektirir. Bunu çevrimiçi tabloya koy:ALTER TABLE <schema>.<online_table> REPLICA IDENTITY FULL;Çevrimiçi mağaza için Lakebase CDF'yi başlatın, kaynak şemayı ve hedef Unity Kataloğu kataloğunu ve şemasını seçin. Kurulum detayları için Lakebase Change Data Feed'e bakınız.
CDF, hedef şemada lb_<online_table>_history oluşturur.
Değişiklikleri yakalamayı durdurmak için Lakebase CDF'yi devre dışı bırak bölümüne bakın. CDF'nin devre dışı bırakılması, projedeki tüm şemaların akışını durdurur. CDF'yi devre dışı bıraktıktan sonra, çevrimiçi tablonun replika kimliğini sıfırlayarak ekstra write-ahead log (WAL) hacmini kaldırabilirsiniz:
ALTER TABLE <schema>.<online_table> REPLICA IDENTITY DEFAULT;
Hesaplama tazeliği
Tazelik commit_time - event_time hem veri odaklı hem de pencere süresi sona erme satırları içindir. İki emit tipini karşılaştırabilmek için is_timer öğesini ekleyin ve sorguyu ölçmek istediğiniz döneme bağlayın.
SELECT
event_time,
commit_time,
is_timer,
(unix_micros(commit_time) - unix_micros(event_time)) / 1000 AS feature_freshness_ms
FROM <dest_catalog>.<dest_schema>.lb_<online_table>_history
WHERE _pg_change_type IN ('insert', 'update_postimage')
AND commit_time >= (
SELECT max(commit_time) - INTERVAL 1 DAY
FROM <dest_catalog>.<dest_schema>.lb_<online_table>_history
);
feature_freshness_ms olay zamanından çevrimiçi mağazaya yazma işlemine kadar milisaniye cinsinden olan gecikmedir. Bu, servis için sunulan değerin tazeliğidir.
Note
CDF'yi zaten satırlar içeren bir çevrimiçi tabloda etkinleştirdiğinizde, ilk anlık görüntü her mevcut satırı geçmiş tablosuna bir insert olarak kopyalamaktadır. Her kopyalanan satır, o varlığın son yazısındaki commit_time ve event_time öğelerini korur, bu yüzden tazelik değeri doğrudur, ancak anlık görüntü her varlık için tam olarak bir örnek sağlar. Yalnızca besleme tarafından yakalanan yazma işlemlerini ölçmek için, Lakebase CDF sekmesindeki tablonun durumu Snapshotting durumundan Streaming durumuna değişene kadar bekleyin, zamanı not edin ve onu max(commit_time) - INTERVAL 1 DAY yerine alt sınır olarak kullanın. Çevrimiçi tablodaki şema değişikliği, başka bir tam anlık görüntü tetikler; bu da zaten yakalanan akışı tekrar yazar. Tüm insert satırları filtrelemeyin, çünkü her yeni varlık için ilk yazma işlemi aynı zamanda bir insert.
Sonuçları yorumlama
- Hem p50 hem de p99'u takip
feature_freshness_msedin ve veri odaklı (is_timer = false) satırları pencere bitiş (is_timer = true) satırlarıyla karşılaştırın. - Gerçek zamanlı mod parti sınırında (varsayılan olarak 5 dakika) küçük, periyodik bir sıçrama bekleyin; bunun nedeni, işlem hattının denetim noktası oluşturup işlemleri kesinleştirmek için kısa süreliğine duraklamasıdır. Bu genellikle varsayılan aralıkta önemsiz olur.
- Nadir görülen uzun kuyruk değerlerini (maksimum, p99'un ötesindeki değer) izleyin. Bu, sabit durumdan ziyade pipeline’ın açığı kapatmasını yansıtır; özellikle de bakım amaçlı yeniden başlatma gibi bir yeniden başlatmadan sonra, pipeline tamponlanmış olayları işlediğinde. Yeniden başlatmaları hariç tutan bir pencere boyunca sabit durum tazeliğini ölçün ve yeniden başlatma artışlarını ayrı ayrı değerlendirin.
Sınırlamalar
Toplu işlem özellikleri
- Toplu somutlaştırma işlem hatları, sunucusuz Lakeflow işlem hatları olarak çalışır.
- Toplu kayan pencere özellikleri,
Lastbölümünde açıklanan yalnızca çevrimiçi özel durum dışında somutlaştırılamaz. Çevrimdışı eğitim veya toplu tahmin için, her belirli zaman noktası sorgulaması için kaynak verilerden kayan pencere özellikleri hesaplanır. -
ColumnSelectionözellikler yalnızca çevrimiçi mağazalarda somutlaştırılabilir. -
RequestSource,FeatureViewSourceveCustomUDFözellikleri somutlaştırılamaz. Bkz. İsteğe bağlı özellikler ve somutlaştırma. - Bir
SdpSourceözellik için kaynak boru hattı güncellemesi başarısız olursa, materyalizasyon çalışması da başarısız olur. Bkz. Özellik kaynağı olarak Lakeflow boru hattı kullanın. - Gerçekleştirilmiş özellikler yalnızca oluşturuldukları çalışma alanında silinebilir.
- Yalnızca bir maddeleştirilmiş özelliği oluşturan kullanıcı, Unity Kataloğu'nun bu özellik veya ana şeması üzerindeki ayrıcalıklarına bakılmaksızın onu silebilir.
- Materyalize edilmiş toplama özellikleri için çevrimiçi materyalize edilmiş özellik doğrudan silinemez. Eşleştirilmiş çevrimdışı malzemeleştirilmiş özellikleri silerseniz, değişiklik her iki özelliğe de yayılır.
- 20 Nisan 2026'dan önce oluşturulan materyalize edilmiş toplama özellikleri için, hattaki tüm materyalize edilmiş özellikler silinene kadar materyalizasyon hattı yeni özellik değerleri üretmeye devam eder ve bu da kaynak temizlemeyi tetikler. Özellik başına silmeyi destekleyen güncelleştirilmiş bir işlem hattı oluşturmak için özelliği silin ve yeniden maddeleştirin.
- Gerçekleştirilmiş
ColumnSelectionözellikler için, işlem hattındaki tüm gerçekleştirilmiş özellikler silinene kadar gerçekleştirme işlem hattı yeni özellik değerleri üretmeye devam eder ve bu da kaynak temizlemeyi tetikler.
Akış özellikleri
- Akış özellikleri yalnızca çevrimiçi mağazalara gerçekleştirilebilir. Eğitim sırasında akış özellikleri, milisaniye düzeyinde doğruluk sağlamak amacıyla her bir veri noktası için geçmiş olaylardan yeniden hesaplanacak şekilde tasarlandığından, çevrimdışı materyalizasyona gerek yoktur.
- Akış özellikleri, tek bir
materialize_featuresçağrısında toplu iş özellikleriyle karıştırılamaz. -
compute_featuresakış özelliklerini desteklemiyor. - Çalışma alanı, Lakebase örneklerini destekleyen bir bölgede olmalıdır.
- Kafka mesajları JSON, Avro veya Protobuf kullanabilir. Şema gereksinimleri ve şema kaydı sınırlamaları için bkz. Şema kaydı.
- Akış toplama özellikleri için yalnızca
RollingWindowveSawtoothWindowdesteklenir.TumblingWindowveSlidingWindowtoplu özelliklerle birlikte kullanılmalıdır. Akış özellikleri için Zaman Pencerelerine bakınız. - Yalnızca
Count,Avg,Sum,StddevPop,Max,Min,FirstNLastLastNFirstFirstDistinctveLastDistincttoplama fonksiyonları yayın özellikleri için desteklenir. - Akış kaynaklarından sütun seçme özellikleri, sırası bozuk iletileri işleyemez. Zaman aralıkları sütun değeri daha önce alınan bir olaydan önce olsa bile Kafka akışındaki en son olay gösterilir.
- Akış işlem hatları haftada iki kez yeniden başlatılır. Her yeniden başlatma işlemi gecikmelere ve 1 dakikaya kadar başlatma sürelerine neden olabilir. Yeniden başlatmalar hariç, p99'un güncelliği 200ms'dir.
- Akış özellikleri
backfill_featuresile geriye dönük doldurulamaz. Bir Akış'a eğitim için geçmiş veri eklemek için, Akışta bir geri doldurma kaynağı yapılandırın. - Çevrimiçi mağazadaki bir
RollingWindowözellik, yalnızca somutlaştırma başladıktan sonra gelen olayları kapsar, bu yüzden değerleri ancak tamwindow_durationsüresi geçtikten sonra eksiksiz olur. BirSawtoothWindowözellik, materializasyon başladığında tarihsel değerlerini Stream'in alım tablosundan hesaplar. Maddeleştirme, daha sonra veriyi alım tablosunda düzeltirseniz bu değerleri yeniden hesaplamaz. - Yalnızca Databricks Online Özellik Deposu desteklenir.
- Akışlı somutlaştırma işlem hatları, sunucusuz Lakeflow işlem hatları olarak çalıştırılır.