def test_get_list_alltypes(client: Client, alltypes_entity: Entity, alltypes_featuretable: FeatureTable): # ApplyEntity client.apply_entity(alltypes_entity) # GetEntity Check assert client.get_entity(name="alltypes_id") == alltypes_entity # ListEntities Check alltypes_filtering_labels = {"cat": "alltypes"} actual_alltypes_entities = client.list_entities( labels=alltypes_filtering_labels) assert len(actual_alltypes_entities) == 1 # ApplyFeatureTable client.apply_feature_table(alltypes_featuretable) # GetFeatureTable Check actual_get_feature_table = client.get_feature_table(name="alltypes") assert actual_get_feature_table == alltypes_featuretable # ListFeatureTables Check actual_list_feature_table = [ ft for ft in client.list_feature_tables() if ft.name == "alltypes" ][0] assert actual_list_feature_table == alltypes_featuretable
def start_stream_to_online(feature_table: str, jar: str): """ Start stream to online sync job """ client = Client() table = client.get_feature_table(feature_table) client.start_stream_to_online_ingestion(table, [jar] if jar else [])
def sync_offline_to_online(feature_table: str, start_time: str, end_time: str): """ Sync offline store to online. """ import feast.pyspark.aws.jobs client = Client() table = client.get_feature_table(feature_table) feast.pyspark.aws.jobs.sync_offline_to_online(client, table, start_time, end_time)
def start_stream_to_online(feature_table: str, jar: str): """ Start stream to online sync job. """ import feast.pyspark.aws.jobs client = Client() table = client.get_feature_table(feature_table) feast.pyspark.aws.jobs.start_stream_to_online(client, table, [jar] if jar else [])
def sync_offline_to_online(feature_table: str, start_time: str, end_time: str): """ Sync offline store data to online store """ from datetime import datetime client = Client() table = client.get_feature_table(feature_table) client.start_offline_to_online_ingestion( table, datetime.fromisoformat(start_time), datetime.fromisoformat(end_time))
def feature_table_describe(name: str, project: str): """ Describe a feature table """ feast_client = Client() # type: Client ft = feast_client.get_feature_table(name=name, project=project) if not ft: print(f'Feature table with name "{name}" could not be found') return print(yaml.dump(yaml.safe_load(str(ft)), default_flow_style=False, sort_keys=False))
def sync_offline_to_online(feature_table: str, start_time: str, end_time: str): """ Sync offline store data to online store """ from datetime import datetime client = Client() table = client.get_feature_table(feature_table) client.start_offline_to_online_ingestion( table, datetime.strptime(start_time, DATETIME_ISO), datetime.strptime(end_time, DATETIME_ISO), )
def test_get_list_basic( client: Client, customer_entity: Entity, driver_entity: Entity, basic_featuretable: FeatureTable, ): # ApplyEntity client.apply_entity(customer_entity) client.apply_entity(driver_entity) # GetEntity Check assert client.get_entity(name="customer_id") == customer_entity assert client.get_entity(name="driver_id") == driver_entity # ListEntities Check common_filtering_labels = {"common_key": "common_val"} matchmaking_filtering_labels = {"team": "matchmaking"} actual_common_entities = client.list_entities( labels=common_filtering_labels) actual_matchmaking_entities = client.list_entities( labels=matchmaking_filtering_labels) assert len(actual_common_entities) == 2 assert len(actual_matchmaking_entities) == 1 # ApplyFeatureTable client.apply_feature_table(basic_featuretable) # GetFeatureTable Check actual_get_feature_table = client.get_feature_table( name="basic_featuretable") assert actual_get_feature_table == basic_featuretable # ListFeatureTables Check actual_list_feature_table = [ ft for ft in client.list_feature_tables() if ft.name == "basic_featuretable" ][0] assert actual_list_feature_table == basic_featuretable