Esempio n. 1
0
def _create_feature(column, entity, granularity, owner, serving_store,
                    warehouse_store):
    """Create Feature object. 
    
    Args:
        column (pandas.Series): data column
        entity (str): entity name
        granularity (feast.types.Granularity_pb2.Granularity): granularity of 
            the feature
        owner (str): owner of the feature
        serving_store (feast.sdk.resources.feature.DataStore): Defaults to None.
            Serving store to write the features in this instance to.
        warehouse_store (feast.sdk.resources.feature.DataStore): Defaults to None.
            Warehouse store to write the features in this instance to.
    
    Returns:
        feast.sdk.resources.Feature: feature for this data column
    """

    feature = Feature(name=column.name,
                      entity=entity,
                      granularity=granularity,
                      owner=owner,
                      value_type=dtype_to_value_type(column.dtype))
    if serving_store is not None:
        feature.serving_store = serving_store
    if warehouse_store is not None:
        feature.warehouse_store = warehouse_store
    return feature
Esempio n. 2
0
def _register_resources(client, entities_fldr, features_fldr):
    resources = []
    for ent_file in os.listdir(entities_fldr):
        resources.append(Entity.from_yaml(os.path.join(entities_fldr, ent_file)))
    for feat_file in os.listdir(features_fldr):
        resources.append(Feature.from_yaml(os.path.join(features_fldr, feat_file)))
    client.apply(resources)
Esempio n. 3
0
 def dummy_feature(self):
     my_feature = Feature(name="my_feature",
                          entity="my_entity",
                          value_type=ValueType.BYTES,
                          owner="*****@*****.**",
                          description="test feature",
                          uri="github.com/feature_repo")
     return my_feature
Esempio n. 4
0
 def test_read_from_yaml(self):
     feature = Feature.from_yaml("tests/sample/valid_feature.yaml")
     assert feature.id == "myentity.feature_bool_redis1"
     assert feature.name == "feature_bool_redis1"
     assert feature.entity == "myentity"
     assert feature.owner == "*****@*****.**"
     assert feature.description == "test entity."
     assert feature.value_type == ValueType.BOOL
     assert feature.uri == "https://github.com/bob/example"
Esempio n. 5
0
 def test_create_feature(self):
     col = pd.Series([1] * 3, dtype='int32', name="test")
     expected = Feature(name="test",
                        entity="test",
                        owner="person",
                        value_type=ValueType.INT32)
     actual = _create_feature(col, "test", "person", None, None)
     assert actual.id == expected.id
     assert actual.value_type == expected.value_type
     assert actual.owner == expected.owner
Esempio n. 6
0
    def test_apply_single_feature(self, client, mocker):
        my_feature = Feature(name="test",
                             entity="test", granularity=Granularity.NONE)
        grpc_stub = core.CoreServiceStub(grpc.insecure_channel(""))

        with mocker.patch.object(grpc_stub, 'ApplyFeature',
                                 return_value=CoreServiceTypes.ApplyFeatureResponse(
                                     featureId="test.none.test")):
            client._core_service_stub = grpc_stub
            id = client.apply(my_feature)
            assert id == "test.none.test"
Esempio n. 7
0
 def test_read_from_yaml(self):
     feature = Feature.from_yaml("tests/sample/valid_feature.yaml")
     assert feature.id == "myentity.none.feature_bool_redis1"
     assert feature.name == "feature_bool_redis1"
     assert feature.entity == "myentity"
     assert feature.owner == "*****@*****.**"
     assert feature.description == "test entity."
     assert feature.value_type == ValueType.BOOL
     assert feature.granularity == Granularity.NONE
     assert feature.uri == "https://github.com/bob/example"
     assert feature.serving_store.id == "REDIS1"
     assert feature.warehouse_store.id == "BIGQUERY1"
Esempio n. 8
0
 def dummy_feature(self):
     warehouse_data_store = Datastore(id="BIGQUERY1", options={})
     serving_data_store = Datastore(id="REDIS1", options={})
     my_feature = Feature(name="my_feature",
                          entity="my_entity",
                          value_type=ValueType.BYTES,
                          owner="*****@*****.**",
                          description="test feature",
                          uri="github.com/feature_repo",
                          warehouse_store=warehouse_data_store,
                          serving_store=serving_data_store)
     return my_feature
Esempio n. 9
0
 def test_create_feature_with_stores(self):
     col = pd.Series([1] * 3, dtype='int32', name="test")
     expected = Feature(name="test",
                        entity="test",
                        owner="person",
                        value_type=ValueType.INT32,
                        serving_store=Datastore(id="SERVING"),
                        warehouse_store=Datastore(id="WAREHOUSE"))
     actual = _create_feature(col, "test", "person",
                              Datastore(id="SERVING"),
                              Datastore(id="WAREHOUSE"))
     assert actual.id == expected.id
     assert actual.value_type == expected.value_type
     assert actual.owner == expected.owner
     assert actual.serving_store == expected.serving_store
     assert actual.warehouse_store == expected.warehouse_store