示例#1
0
def test_request_data_source_deprecation():
    with pytest.warns(DeprecationWarning):
        request_data_source = RequestDataSource(
            name="vals_to_add",
            schema={"val_to_add": ValueType.INT64, "val_to_add_2": ValueType.INT64},
        )
        request_data_source_proto = request_data_source.to_proto()
        returned_request_source = RequestSource.from_proto(request_data_source_proto)
        assert returned_request_source == request_data_source
示例#2
0
def create_driver_age_request_feature_view():
    return RequestFeatureView(
        name="driver_age",
        request_data_source=RequestDataSource(
            name="driver_age_source", schema={"driver_age": ValueType.INT32}
        ),
    )
示例#3
0
    def from_proto(cls, request_feature_view_proto: RequestFeatureViewProto):
        """
        Creates a request feature view from a protobuf representation.

        Args:
            request_feature_view_proto: A protobuf representation of an request feature view.

        Returns:
            A RequestFeatureView object based on the request feature view protobuf.
        """

        request_feature_view_obj = cls(
            name=request_feature_view_proto.spec.name,
            request_data_source=RequestDataSource.from_proto(
                request_feature_view_proto.spec.request_data_source
            ),
        )

        # FeatureViewProjections are not saved in the RequestFeatureView proto.
        # Create the default projection.
        request_feature_view_obj.projection = FeatureViewProjection.from_definition(
            request_feature_view_obj
        )

        return request_feature_view_obj
示例#4
0
def create_similarity_request_data_source():
    return RequestDataSource(
        name="similarity_input",
        schema={
            "vector_double": ValueType.DOUBLE_LIST,
            "vector_float": ValueType.FLOAT_LIST,
        },
    )
示例#5
0
    def from_proto(cls,
                   on_demand_feature_view_proto: OnDemandFeatureViewProto):
        """
        Creates an on demand feature view from a protobuf representation.

        Args:
            on_demand_feature_view_proto: A protobuf representation of an on-demand feature view.

        Returns:
            A OnDemandFeatureView object based on the on-demand feature view protobuf.
        """
        inputs = {}
        for (
                input_name,
                on_demand_input,
        ) in on_demand_feature_view_proto.spec.inputs.items():
            if on_demand_input.WhichOneof("input") == "feature_view":
                inputs[input_name] = FeatureView.from_proto(
                    on_demand_input.feature_view).projection
            elif on_demand_input.WhichOneof(
                    "input") == "feature_view_projection":
                inputs[input_name] = FeatureViewProjection.from_proto(
                    on_demand_input.feature_view_projection)
            else:
                inputs[input_name] = RequestDataSource.from_proto(
                    on_demand_input.request_data_source)
        on_demand_feature_view_obj = cls(
            name=on_demand_feature_view_proto.spec.name,
            features=[
                Feature(
                    name=feature.name,
                    dtype=ValueType(feature.value_type),
                    labels=dict(feature.labels),
                ) for feature in on_demand_feature_view_proto.spec.features
            ],
            inputs=inputs,
            udf=dill.loads(
                on_demand_feature_view_proto.spec.user_defined_function.body),
        )

        # FeatureViewProjections are not saved in the OnDemandFeatureView proto.
        # Create the default projection.
        on_demand_feature_view_obj.projection = FeatureViewProjection.from_definition(
            on_demand_feature_view_obj)

        if on_demand_feature_view_proto.meta.HasField("created_timestamp"):
            on_demand_feature_view_obj.created_timestamp = (
                on_demand_feature_view_proto.meta.created_timestamp.ToDatetime(
                ))

        return on_demand_feature_view_obj
示例#6
0
def test_modify_feature_views_success():
    # Create Feature Views
    date_request = RequestDataSource(
        name="date_request", schema={"some_date": ValueType.UNIX_TIMESTAMP})

    @on_demand_feature_view(
        inputs={"date_request": date_request},
        features=[Feature("output", ValueType.UNIX_TIMESTAMP)],
    )
    def test_view(features_df: pd.DataFrame) -> pd.DataFrame:
        data = pd.DataFrame()
        data["output"] = features_df["some_date"]
        return data

    test_view.infer_features()
示例#7
0
    def from_proto(cls,
                   on_demand_feature_view_proto: OnDemandFeatureViewProto):
        """
        Creates an on demand feature view from a protobuf representation.

        Args:
            on_demand_feature_view_proto: A protobuf representation of an on-demand feature view.

        Returns:
            A OnDemandFeatureView object based on the on-demand feature view protobuf.
        """
        inputs = {}
        for (
                input_name,
                on_demand_input,
        ) in on_demand_feature_view_proto.spec.inputs.items():
            if on_demand_input.WhichOneof("input") == "feature_view":
                inputs[input_name] = FeatureView.from_proto(
                    on_demand_input.feature_view)
            else:
                inputs[input_name] = RequestDataSource.from_proto(
                    on_demand_input.request_data_source)
        on_demand_feature_view_obj = cls(
            name=on_demand_feature_view_proto.spec.name,
            features=[
                Feature(
                    name=feature.name,
                    dtype=ValueType(feature.value_type),
                    labels=dict(feature.labels),
                ) for feature in on_demand_feature_view_proto.spec.features
            ],
            inputs=inputs,
            udf=dill.loads(
                on_demand_feature_view_proto.spec.user_defined_function.body),
        )

        return on_demand_feature_view_obj
示例#8
0
def create_conv_rate_request_data_source():
    return RequestDataSource(
        name="conv_rate_input", schema={"val_to_add": ValueType.INT32}
    )
示例#9
0
        ),
        Feature(
            name="string_feature",
            dtype=ValueType.STRING,
            labels=dict(description="String feature"),
        ),
    ],
    online=True,
    batch_source=driver_hourly_stats_source,
    tags={},
)

input_request = RequestDataSource(
    name="vals_to_add",
    schema={
        "val_to_add": ValueType.INT64,
        "val_to_add_2": ValueType.INT64
    },
)


@on_demand_feature_view(  # type: ignore
    inputs={
        "driver_hourly_stats": driver_hourly_stats_view,
        "vals_to_add": input_request,
    },
    features=[
        Feature(name="conv_rate_plus_val1", dtype=ValueType.DOUBLE),
        Feature(name="conv_rate_plus_val2", dtype=ValueType.DOUBLE),
    ],
)