# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from . import _utilities
from . import outputs
from ._inputs import *

__all__ = ['FeatureEngineeringFeatureArgs', 'FeatureEngineeringFeature']

@pulumi.input_type
class FeatureEngineeringFeatureArgs:
    def __init__(__self__, *,
                 full_name: pulumi.Input[_builtins.str],
                 function: pulumi.Input['FeatureEngineeringFeatureFunctionArgs'],
                 inputs: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
                 source: pulumi.Input['FeatureEngineeringFeatureSourceArgs'],
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 filter_condition: Optional[pulumi.Input[_builtins.str]] = None,
                 lineage_context: Optional[pulumi.Input['FeatureEngineeringFeatureLineageContextArgs']] = None,
                 provider_config: Optional[pulumi.Input['FeatureEngineeringFeatureProviderConfigArgs']] = None,
                 time_window: Optional[pulumi.Input['FeatureEngineeringFeatureTimeWindowArgs']] = None):
        """
        The set of arguments for constructing a FeatureEngineeringFeature resource.
        :param pulumi.Input[_builtins.str] full_name: The full three-part name (catalog, schema, name) of the feature
        :param pulumi.Input['FeatureEngineeringFeatureFunctionArgs'] function: The function by which the feature is computed
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] inputs: Deprecated: Use AggregationFunction.inputs instead. Kept for backwards compatibility.
               The input columns from which the feature is computed
        :param pulumi.Input['FeatureEngineeringFeatureSourceArgs'] source: The data source of the feature
        :param pulumi.Input[_builtins.str] description: The description of the feature
        :param pulumi.Input[_builtins.str] filter_condition: Deprecated: Use DeltaTableSource.filter_condition or KafkaSource.filter_condition instead. Kept for backwards compatibility.
               The filter condition applied to the source data before aggregation
        :param pulumi.Input['FeatureEngineeringFeatureLineageContextArgs'] lineage_context: Lineage context information for this feature.
               WARNING: This field is primarily intended for internal use by Databricks systems and
               is automatically populated when features are created through Databricks notebooks or jobs.
               Users should not manually set this field as incorrect values may lead to inaccurate lineage tracking or unexpected behavior.
               This field will be set by feature-engineering client and should be left unset by SDK and terraform users
        :param pulumi.Input['FeatureEngineeringFeatureProviderConfigArgs'] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input['FeatureEngineeringFeatureTimeWindowArgs'] time_window: Deprecated: Use Function.aggregation_function.time_window instead. Kept for backwards compatibility.
               The time window in which the feature is computed
        """
        pulumi.set(__self__, "full_name", full_name)
        pulumi.set(__self__, "function", function)
        pulumi.set(__self__, "inputs", inputs)
        pulumi.set(__self__, "source", source)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if filter_condition is not None:
            pulumi.set(__self__, "filter_condition", filter_condition)
        if lineage_context is not None:
            pulumi.set(__self__, "lineage_context", lineage_context)
        if provider_config is not None:
            pulumi.set(__self__, "provider_config", provider_config)
        if time_window is not None:
            pulumi.set(__self__, "time_window", time_window)

    @_builtins.property
    @pulumi.getter(name="fullName")
    def full_name(self) -> pulumi.Input[_builtins.str]:
        """
        The full three-part name (catalog, schema, name) of the feature
        """
        return pulumi.get(self, "full_name")

    @full_name.setter
    def full_name(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "full_name", value)

    @_builtins.property
    @pulumi.getter
    def function(self) -> pulumi.Input['FeatureEngineeringFeatureFunctionArgs']:
        """
        The function by which the feature is computed
        """
        return pulumi.get(self, "function")

    @function.setter
    def function(self, value: pulumi.Input['FeatureEngineeringFeatureFunctionArgs']):
        pulumi.set(self, "function", value)

    @_builtins.property
    @pulumi.getter
    def inputs(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
        """
        Deprecated: Use AggregationFunction.inputs instead. Kept for backwards compatibility.
        The input columns from which the feature is computed
        """
        return pulumi.get(self, "inputs")

    @inputs.setter
    def inputs(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
        pulumi.set(self, "inputs", value)

    @_builtins.property
    @pulumi.getter
    def source(self) -> pulumi.Input['FeatureEngineeringFeatureSourceArgs']:
        """
        The data source of the feature
        """
        return pulumi.get(self, "source")

    @source.setter
    def source(self, value: pulumi.Input['FeatureEngineeringFeatureSourceArgs']):
        pulumi.set(self, "source", value)

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The description of the feature
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "description", value)

    @_builtins.property
    @pulumi.getter(name="filterCondition")
    def filter_condition(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Deprecated: Use DeltaTableSource.filter_condition or KafkaSource.filter_condition instead. Kept for backwards compatibility.
        The filter condition applied to the source data before aggregation
        """
        return pulumi.get(self, "filter_condition")

    @filter_condition.setter
    def filter_condition(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "filter_condition", value)

    @_builtins.property
    @pulumi.getter(name="lineageContext")
    def lineage_context(self) -> Optional[pulumi.Input['FeatureEngineeringFeatureLineageContextArgs']]:
        """
        Lineage context information for this feature.
        WARNING: This field is primarily intended for internal use by Databricks systems and
        is automatically populated when features are created through Databricks notebooks or jobs.
        Users should not manually set this field as incorrect values may lead to inaccurate lineage tracking or unexpected behavior.
        This field will be set by feature-engineering client and should be left unset by SDK and terraform users
        """
        return pulumi.get(self, "lineage_context")

    @lineage_context.setter
    def lineage_context(self, value: Optional[pulumi.Input['FeatureEngineeringFeatureLineageContextArgs']]):
        pulumi.set(self, "lineage_context", value)

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> Optional[pulumi.Input['FeatureEngineeringFeatureProviderConfigArgs']]:
        """
        Configure the provider for management through account provider.
        """
        return pulumi.get(self, "provider_config")

    @provider_config.setter
    def provider_config(self, value: Optional[pulumi.Input['FeatureEngineeringFeatureProviderConfigArgs']]):
        pulumi.set(self, "provider_config", value)

    @_builtins.property
    @pulumi.getter(name="timeWindow")
    def time_window(self) -> Optional[pulumi.Input['FeatureEngineeringFeatureTimeWindowArgs']]:
        """
        Deprecated: Use Function.aggregation_function.time_window instead. Kept for backwards compatibility.
        The time window in which the feature is computed
        """
        return pulumi.get(self, "time_window")

    @time_window.setter
    def time_window(self, value: Optional[pulumi.Input['FeatureEngineeringFeatureTimeWindowArgs']]):
        pulumi.set(self, "time_window", value)


@pulumi.input_type
class _FeatureEngineeringFeatureState:
    def __init__(__self__, *,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 filter_condition: Optional[pulumi.Input[_builtins.str]] = None,
                 full_name: Optional[pulumi.Input[_builtins.str]] = None,
                 function: Optional[pulumi.Input['FeatureEngineeringFeatureFunctionArgs']] = None,
                 inputs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 lineage_context: Optional[pulumi.Input['FeatureEngineeringFeatureLineageContextArgs']] = None,
                 provider_config: Optional[pulumi.Input['FeatureEngineeringFeatureProviderConfigArgs']] = None,
                 source: Optional[pulumi.Input['FeatureEngineeringFeatureSourceArgs']] = None,
                 time_window: Optional[pulumi.Input['FeatureEngineeringFeatureTimeWindowArgs']] = None):
        """
        Input properties used for looking up and filtering FeatureEngineeringFeature resources.
        :param pulumi.Input[_builtins.str] description: The description of the feature
        :param pulumi.Input[_builtins.str] filter_condition: Deprecated: Use DeltaTableSource.filter_condition or KafkaSource.filter_condition instead. Kept for backwards compatibility.
               The filter condition applied to the source data before aggregation
        :param pulumi.Input[_builtins.str] full_name: The full three-part name (catalog, schema, name) of the feature
        :param pulumi.Input['FeatureEngineeringFeatureFunctionArgs'] function: The function by which the feature is computed
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] inputs: Deprecated: Use AggregationFunction.inputs instead. Kept for backwards compatibility.
               The input columns from which the feature is computed
        :param pulumi.Input['FeatureEngineeringFeatureLineageContextArgs'] lineage_context: Lineage context information for this feature.
               WARNING: This field is primarily intended for internal use by Databricks systems and
               is automatically populated when features are created through Databricks notebooks or jobs.
               Users should not manually set this field as incorrect values may lead to inaccurate lineage tracking or unexpected behavior.
               This field will be set by feature-engineering client and should be left unset by SDK and terraform users
        :param pulumi.Input['FeatureEngineeringFeatureProviderConfigArgs'] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input['FeatureEngineeringFeatureSourceArgs'] source: The data source of the feature
        :param pulumi.Input['FeatureEngineeringFeatureTimeWindowArgs'] time_window: Deprecated: Use Function.aggregation_function.time_window instead. Kept for backwards compatibility.
               The time window in which the feature is computed
        """
        if description is not None:
            pulumi.set(__self__, "description", description)
        if filter_condition is not None:
            pulumi.set(__self__, "filter_condition", filter_condition)
        if full_name is not None:
            pulumi.set(__self__, "full_name", full_name)
        if function is not None:
            pulumi.set(__self__, "function", function)
        if inputs is not None:
            pulumi.set(__self__, "inputs", inputs)
        if lineage_context is not None:
            pulumi.set(__self__, "lineage_context", lineage_context)
        if provider_config is not None:
            pulumi.set(__self__, "provider_config", provider_config)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if time_window is not None:
            pulumi.set(__self__, "time_window", time_window)

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The description of the feature
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "description", value)

    @_builtins.property
    @pulumi.getter(name="filterCondition")
    def filter_condition(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Deprecated: Use DeltaTableSource.filter_condition or KafkaSource.filter_condition instead. Kept for backwards compatibility.
        The filter condition applied to the source data before aggregation
        """
        return pulumi.get(self, "filter_condition")

    @filter_condition.setter
    def filter_condition(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "filter_condition", value)

    @_builtins.property
    @pulumi.getter(name="fullName")
    def full_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The full three-part name (catalog, schema, name) of the feature
        """
        return pulumi.get(self, "full_name")

    @full_name.setter
    def full_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "full_name", value)

    @_builtins.property
    @pulumi.getter
    def function(self) -> Optional[pulumi.Input['FeatureEngineeringFeatureFunctionArgs']]:
        """
        The function by which the feature is computed
        """
        return pulumi.get(self, "function")

    @function.setter
    def function(self, value: Optional[pulumi.Input['FeatureEngineeringFeatureFunctionArgs']]):
        pulumi.set(self, "function", value)

    @_builtins.property
    @pulumi.getter
    def inputs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Deprecated: Use AggregationFunction.inputs instead. Kept for backwards compatibility.
        The input columns from which the feature is computed
        """
        return pulumi.get(self, "inputs")

    @inputs.setter
    def inputs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "inputs", value)

    @_builtins.property
    @pulumi.getter(name="lineageContext")
    def lineage_context(self) -> Optional[pulumi.Input['FeatureEngineeringFeatureLineageContextArgs']]:
        """
        Lineage context information for this feature.
        WARNING: This field is primarily intended for internal use by Databricks systems and
        is automatically populated when features are created through Databricks notebooks or jobs.
        Users should not manually set this field as incorrect values may lead to inaccurate lineage tracking or unexpected behavior.
        This field will be set by feature-engineering client and should be left unset by SDK and terraform users
        """
        return pulumi.get(self, "lineage_context")

    @lineage_context.setter
    def lineage_context(self, value: Optional[pulumi.Input['FeatureEngineeringFeatureLineageContextArgs']]):
        pulumi.set(self, "lineage_context", value)

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> Optional[pulumi.Input['FeatureEngineeringFeatureProviderConfigArgs']]:
        """
        Configure the provider for management through account provider.
        """
        return pulumi.get(self, "provider_config")

    @provider_config.setter
    def provider_config(self, value: Optional[pulumi.Input['FeatureEngineeringFeatureProviderConfigArgs']]):
        pulumi.set(self, "provider_config", value)

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[pulumi.Input['FeatureEngineeringFeatureSourceArgs']]:
        """
        The data source of the feature
        """
        return pulumi.get(self, "source")

    @source.setter
    def source(self, value: Optional[pulumi.Input['FeatureEngineeringFeatureSourceArgs']]):
        pulumi.set(self, "source", value)

    @_builtins.property
    @pulumi.getter(name="timeWindow")
    def time_window(self) -> Optional[pulumi.Input['FeatureEngineeringFeatureTimeWindowArgs']]:
        """
        Deprecated: Use Function.aggregation_function.time_window instead. Kept for backwards compatibility.
        The time window in which the feature is computed
        """
        return pulumi.get(self, "time_window")

    @time_window.setter
    def time_window(self, value: Optional[pulumi.Input['FeatureEngineeringFeatureTimeWindowArgs']]):
        pulumi.set(self, "time_window", value)


@pulumi.type_token("databricks:index/featureEngineeringFeature:FeatureEngineeringFeature")
class FeatureEngineeringFeature(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 filter_condition: Optional[pulumi.Input[_builtins.str]] = None,
                 full_name: Optional[pulumi.Input[_builtins.str]] = None,
                 function: Optional[pulumi.Input[Union['FeatureEngineeringFeatureFunctionArgs', 'FeatureEngineeringFeatureFunctionArgsDict']]] = None,
                 inputs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 lineage_context: Optional[pulumi.Input[Union['FeatureEngineeringFeatureLineageContextArgs', 'FeatureEngineeringFeatureLineageContextArgsDict']]] = None,
                 provider_config: Optional[pulumi.Input[Union['FeatureEngineeringFeatureProviderConfigArgs', 'FeatureEngineeringFeatureProviderConfigArgsDict']]] = None,
                 source: Optional[pulumi.Input[Union['FeatureEngineeringFeatureSourceArgs', 'FeatureEngineeringFeatureSourceArgsDict']]] = None,
                 time_window: Optional[pulumi.Input[Union['FeatureEngineeringFeatureTimeWindowArgs', 'FeatureEngineeringFeatureTimeWindowArgsDict']]] = None,
                 __props__=None):
        """
        [![Private Preview](https://img.shields.io/badge/Release_Stage-Private_Preview-blueviolet)](https://docs.databricks.com/aws/en/release-notes/release-types)

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[_builtins.str] description: The description of the feature
        :param pulumi.Input[_builtins.str] filter_condition: Deprecated: Use DeltaTableSource.filter_condition or KafkaSource.filter_condition instead. Kept for backwards compatibility.
               The filter condition applied to the source data before aggregation
        :param pulumi.Input[_builtins.str] full_name: The full three-part name (catalog, schema, name) of the feature
        :param pulumi.Input[Union['FeatureEngineeringFeatureFunctionArgs', 'FeatureEngineeringFeatureFunctionArgsDict']] function: The function by which the feature is computed
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] inputs: Deprecated: Use AggregationFunction.inputs instead. Kept for backwards compatibility.
               The input columns from which the feature is computed
        :param pulumi.Input[Union['FeatureEngineeringFeatureLineageContextArgs', 'FeatureEngineeringFeatureLineageContextArgsDict']] lineage_context: Lineage context information for this feature.
               WARNING: This field is primarily intended for internal use by Databricks systems and
               is automatically populated when features are created through Databricks notebooks or jobs.
               Users should not manually set this field as incorrect values may lead to inaccurate lineage tracking or unexpected behavior.
               This field will be set by feature-engineering client and should be left unset by SDK and terraform users
        :param pulumi.Input[Union['FeatureEngineeringFeatureProviderConfigArgs', 'FeatureEngineeringFeatureProviderConfigArgsDict']] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input[Union['FeatureEngineeringFeatureSourceArgs', 'FeatureEngineeringFeatureSourceArgsDict']] source: The data source of the feature
        :param pulumi.Input[Union['FeatureEngineeringFeatureTimeWindowArgs', 'FeatureEngineeringFeatureTimeWindowArgsDict']] time_window: Deprecated: Use Function.aggregation_function.time_window instead. Kept for backwards compatibility.
               The time window in which the feature is computed
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: FeatureEngineeringFeatureArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        [![Private Preview](https://img.shields.io/badge/Release_Stage-Private_Preview-blueviolet)](https://docs.databricks.com/aws/en/release-notes/release-types)

        :param str resource_name: The name of the resource.
        :param FeatureEngineeringFeatureArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(FeatureEngineeringFeatureArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 filter_condition: Optional[pulumi.Input[_builtins.str]] = None,
                 full_name: Optional[pulumi.Input[_builtins.str]] = None,
                 function: Optional[pulumi.Input[Union['FeatureEngineeringFeatureFunctionArgs', 'FeatureEngineeringFeatureFunctionArgsDict']]] = None,
                 inputs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 lineage_context: Optional[pulumi.Input[Union['FeatureEngineeringFeatureLineageContextArgs', 'FeatureEngineeringFeatureLineageContextArgsDict']]] = None,
                 provider_config: Optional[pulumi.Input[Union['FeatureEngineeringFeatureProviderConfigArgs', 'FeatureEngineeringFeatureProviderConfigArgsDict']]] = None,
                 source: Optional[pulumi.Input[Union['FeatureEngineeringFeatureSourceArgs', 'FeatureEngineeringFeatureSourceArgsDict']]] = None,
                 time_window: Optional[pulumi.Input[Union['FeatureEngineeringFeatureTimeWindowArgs', 'FeatureEngineeringFeatureTimeWindowArgsDict']]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = FeatureEngineeringFeatureArgs.__new__(FeatureEngineeringFeatureArgs)

            __props__.__dict__["description"] = description
            __props__.__dict__["filter_condition"] = filter_condition
            if full_name is None and not opts.urn:
                raise TypeError("Missing required property 'full_name'")
            __props__.__dict__["full_name"] = full_name
            if function is None and not opts.urn:
                raise TypeError("Missing required property 'function'")
            __props__.__dict__["function"] = function
            if inputs is None and not opts.urn:
                raise TypeError("Missing required property 'inputs'")
            __props__.__dict__["inputs"] = inputs
            __props__.__dict__["lineage_context"] = lineage_context
            __props__.__dict__["provider_config"] = provider_config
            if source is None and not opts.urn:
                raise TypeError("Missing required property 'source'")
            __props__.__dict__["source"] = source
            __props__.__dict__["time_window"] = time_window
        super(FeatureEngineeringFeature, __self__).__init__(
            'databricks:index/featureEngineeringFeature:FeatureEngineeringFeature',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            description: Optional[pulumi.Input[_builtins.str]] = None,
            filter_condition: Optional[pulumi.Input[_builtins.str]] = None,
            full_name: Optional[pulumi.Input[_builtins.str]] = None,
            function: Optional[pulumi.Input[Union['FeatureEngineeringFeatureFunctionArgs', 'FeatureEngineeringFeatureFunctionArgsDict']]] = None,
            inputs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
            lineage_context: Optional[pulumi.Input[Union['FeatureEngineeringFeatureLineageContextArgs', 'FeatureEngineeringFeatureLineageContextArgsDict']]] = None,
            provider_config: Optional[pulumi.Input[Union['FeatureEngineeringFeatureProviderConfigArgs', 'FeatureEngineeringFeatureProviderConfigArgsDict']]] = None,
            source: Optional[pulumi.Input[Union['FeatureEngineeringFeatureSourceArgs', 'FeatureEngineeringFeatureSourceArgsDict']]] = None,
            time_window: Optional[pulumi.Input[Union['FeatureEngineeringFeatureTimeWindowArgs', 'FeatureEngineeringFeatureTimeWindowArgsDict']]] = None) -> 'FeatureEngineeringFeature':
        """
        Get an existing FeatureEngineeringFeature resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[_builtins.str] description: The description of the feature
        :param pulumi.Input[_builtins.str] filter_condition: Deprecated: Use DeltaTableSource.filter_condition or KafkaSource.filter_condition instead. Kept for backwards compatibility.
               The filter condition applied to the source data before aggregation
        :param pulumi.Input[_builtins.str] full_name: The full three-part name (catalog, schema, name) of the feature
        :param pulumi.Input[Union['FeatureEngineeringFeatureFunctionArgs', 'FeatureEngineeringFeatureFunctionArgsDict']] function: The function by which the feature is computed
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] inputs: Deprecated: Use AggregationFunction.inputs instead. Kept for backwards compatibility.
               The input columns from which the feature is computed
        :param pulumi.Input[Union['FeatureEngineeringFeatureLineageContextArgs', 'FeatureEngineeringFeatureLineageContextArgsDict']] lineage_context: Lineage context information for this feature.
               WARNING: This field is primarily intended for internal use by Databricks systems and
               is automatically populated when features are created through Databricks notebooks or jobs.
               Users should not manually set this field as incorrect values may lead to inaccurate lineage tracking or unexpected behavior.
               This field will be set by feature-engineering client and should be left unset by SDK and terraform users
        :param pulumi.Input[Union['FeatureEngineeringFeatureProviderConfigArgs', 'FeatureEngineeringFeatureProviderConfigArgsDict']] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input[Union['FeatureEngineeringFeatureSourceArgs', 'FeatureEngineeringFeatureSourceArgsDict']] source: The data source of the feature
        :param pulumi.Input[Union['FeatureEngineeringFeatureTimeWindowArgs', 'FeatureEngineeringFeatureTimeWindowArgsDict']] time_window: Deprecated: Use Function.aggregation_function.time_window instead. Kept for backwards compatibility.
               The time window in which the feature is computed
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _FeatureEngineeringFeatureState.__new__(_FeatureEngineeringFeatureState)

        __props__.__dict__["description"] = description
        __props__.__dict__["filter_condition"] = filter_condition
        __props__.__dict__["full_name"] = full_name
        __props__.__dict__["function"] = function
        __props__.__dict__["inputs"] = inputs
        __props__.__dict__["lineage_context"] = lineage_context
        __props__.__dict__["provider_config"] = provider_config
        __props__.__dict__["source"] = source
        __props__.__dict__["time_window"] = time_window
        return FeatureEngineeringFeature(resource_name, opts=opts, __props__=__props__)

    @_builtins.property
    @pulumi.getter
    def description(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        The description of the feature
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter(name="filterCondition")
    def filter_condition(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        Deprecated: Use DeltaTableSource.filter_condition or KafkaSource.filter_condition instead. Kept for backwards compatibility.
        The filter condition applied to the source data before aggregation
        """
        return pulumi.get(self, "filter_condition")

    @_builtins.property
    @pulumi.getter(name="fullName")
    def full_name(self) -> pulumi.Output[_builtins.str]:
        """
        The full three-part name (catalog, schema, name) of the feature
        """
        return pulumi.get(self, "full_name")

    @_builtins.property
    @pulumi.getter
    def function(self) -> pulumi.Output['outputs.FeatureEngineeringFeatureFunction']:
        """
        The function by which the feature is computed
        """
        return pulumi.get(self, "function")

    @_builtins.property
    @pulumi.getter
    def inputs(self) -> pulumi.Output[Sequence[_builtins.str]]:
        """
        Deprecated: Use AggregationFunction.inputs instead. Kept for backwards compatibility.
        The input columns from which the feature is computed
        """
        return pulumi.get(self, "inputs")

    @_builtins.property
    @pulumi.getter(name="lineageContext")
    def lineage_context(self) -> pulumi.Output[Optional['outputs.FeatureEngineeringFeatureLineageContext']]:
        """
        Lineage context information for this feature.
        WARNING: This field is primarily intended for internal use by Databricks systems and
        is automatically populated when features are created through Databricks notebooks or jobs.
        Users should not manually set this field as incorrect values may lead to inaccurate lineage tracking or unexpected behavior.
        This field will be set by feature-engineering client and should be left unset by SDK and terraform users
        """
        return pulumi.get(self, "lineage_context")

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> pulumi.Output[Optional['outputs.FeatureEngineeringFeatureProviderConfig']]:
        """
        Configure the provider for management through account provider.
        """
        return pulumi.get(self, "provider_config")

    @_builtins.property
    @pulumi.getter
    def source(self) -> pulumi.Output['outputs.FeatureEngineeringFeatureSource']:
        """
        The data source of the feature
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter(name="timeWindow")
    def time_window(self) -> pulumi.Output[Optional['outputs.FeatureEngineeringFeatureTimeWindow']]:
        """
        Deprecated: Use Function.aggregation_function.time_window instead. Kept for backwards compatibility.
        The time window in which the feature is computed
        """
        return pulumi.get(self, "time_window")

