Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Subsetting multi-assets code snippet in documentation has a bug #27333

Open
BenameurZyad opened this issue Jan 23, 2025 · 0 comments
Open

Subsetting multi-assets code snippet in documentation has a bug #27333

BenameurZyad opened this issue Jan 23, 2025 · 0 comments
Labels
area: docs Related to documentation in general

Comments

@BenameurZyad
Copy link

What's the issue or suggestion?

The code snippet provided as an example in the documentation here does not work correctly :
https://docs.dagster.io/concepts/assets/multi-assets#subsetting-multi-assets

Here is the code from the documentation :

from dagster import AssetExecutionContext, AssetSpec, MaterializeResult, multi_asset


@multi_asset(
    specs=[AssetSpec("asset1", skippable=True), AssetSpec("asset2", skippable=True)],
    can_subset=True,
)
def split_actions(context: AssetExecutionContext):
    if "asset1" in context.op_execution_context.selected_asset_keys:
        yield MaterializeResult(asset_key="asset1")
    if "asset2" in context.op_execution_context.selected_asset_keys:
        yield MaterializeResult(asset_key="asset2")

The if conditions are not working correctly.
The context.op_execution_context.selected_asset_keys returns a Set[AssetKey].
A possible fix could be :

# if "asset1" in selected_asset_keys
if AssetKey("asset1") in selected_asset_keys

Here is a debugging version of the code :

from dagster import AssetExecutionContext, AssetKey, AssetSpec, Definitions, MaterializeResult, multi_asset


@multi_asset(
    specs=[AssetSpec("asset1"), AssetSpec("asset2")],
    can_subset=True,
)
def split_actions(context: AssetExecutionContext):

    # returned asset keys are of type set[AssetKey]
    selected_asset_keys = context.op_execution_context.selected_asset_keys
    context.log.info(f"selected_asset_keys: {selected_asset_keys}")
    context.log.info(f"selected_asset_keys type: {type(selected_asset_keys)}")

    if AssetKey("asset1") in selected_asset_keys:
        string_in_selected_asset_keys = "asset1" in selected_asset_keys
        asset_key_in_selected_asset_keys = AssetKey("asset1") in selected_asset_keys
        context.log.info(f"Finding asset name (string) in selected asset keys: {string_in_selected_asset_keys}")
        context.log.info(f"Finding asset key in selected asset keys: {asset_key_in_selected_asset_keys}")
        yield MaterializeResult(asset_key="asset1")

    if AssetKey("asset2") in selected_asset_keys:
        string_in_selected_asset_keys = "asset2" in selected_asset_keys
        asset_key_in_selected_asset_keys = AssetKey("asset2") in selected_asset_keys
        context.log.info(f"Finding asset name (string) in selected asset keys: {string_in_selected_asset_keys}")
        context.log.info(f"Finding asset key in selected asset keys: {asset_key_in_selected_asset_keys}")
        context.log.info("Materializing asset2")
        yield MaterializeResult(asset_key="asset2")

defs = Definitions(assets=[split_actions])

Additional information

No response

Message from the maintainers

Impacted by this issue? Give it a 👍! We factor engagement into prioritization.

@BenameurZyad BenameurZyad added the area: docs Related to documentation in general label Jan 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: docs Related to documentation in general
Projects
None yet
Development

No branches or pull requests

1 participant