Christian Rønsholt
02/16/2024, 11:25 AMScout
02/16/2024, 11:25 AMAutoMaterializePolicy.eager()
policy is materialized when one of its parent assets is materialized, you don't need to make any additional configurations. By default, the eager policy will materialize an asset whenever any of its parents have been updated. This behavior is inherent to the eager policy, so if you have an asset with multiple parents and you want it to be materialized when any one of those parents is updated, the default eager policy already supports this. Here's an example from the documentation that illustrates how to apply the eager policy to an asset: python from dagster import AutoMaterializePolicy, asset @asset(auto_materialize_policy=AutoMaterializePolicy.eager()) def my_asset(upstream1, upstream2): ...
In this example, my_asset
will be materialized when either upstream1
or upstream2
is updated, because it uses the AutoMaterializePolicy.eager()
policy.Christian Rønsholt
02/16/2024, 11:26 AMScout
02/16/2024, 11:26 AMdeps
argument in the @asset
decorator, Dagster will automatically understand the dependency relationship between the assets. If an asset has multiple parent assets listed in its deps
, it will be considered downstream of those parents, and its materialization will be dependent on the materialization of its parents. Here's an example from the documentation that shows how to define an asset with dependencies: python from dagster import asset @asset def parent_asset1(): # logic for parent_asset1 ... @asset def parent_asset2(): # logic for parent_asset2 ... @asset(deps={'parent1': parent_asset1, 'parent2': parent_asset2}) def child_asset(parent1, parent2): # logic for child_asset that depends on parent_asset1 and parent_asset2 ...
In this example, child_asset
has two dependencies: parent_asset1
and parent_asset2
. If either parent_asset1
or parent_asset2
is materialized, and child_asset
has an eager materialization policy, Dagster will automatically schedule the materialization of child_asset
in response to changes in its dependencies. The AutoMaterializePolicy.eager()
policy ensures that the asset is materialized as soon as possible after its dependencies have been updated. Therefore, if you have set AutoMaterializePolicy.eager()
for child_asset
, it will be materialized when any of its dependencies (parent_asset1
or parent_asset2
) are materialized, without needing any additional configuration.