Exemple #1
0
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
Exemple #2
0
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 [])
Exemple #3
0
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)
Exemple #4
0
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 [])
Exemple #5
0
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))
Exemple #6
0
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))
Exemple #7
0
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),
    )
Exemple #8
0
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