Survey banner
Switching to Dataiku - a new area to help users who are transitioning from other tools and diving into Dataiku! CHECK IT OUT

Auto trigger in Scenario

Level 1
Auto trigger in Scenario

For a scenario, I wish to add a auto trigger where I wish to run it when two particular scenarios are run successfully. 

I have a scenario C, which I wish to auto trigger after scenario A and B are both run successfully and not just one of them. Can you please provide me the custom trigger python code to write to achieve this. I am confused

0 Kudos
1 Reply

Hi @SMish8134,

It's possibly to run a scenario from a step in another scenario, so if possible, I recommend modifying scenario C so that it runs scenario A and scenario B as the first steps. For details, please see this post: Run Scenario after multiple scenarios have completed.

If the above doesn't work with your use case, then it is possible to create a custom trigger that triggers only when scenario A and scenario B have both completed successfully.

Here's the code for the trigger. Be sure to replace the scenario IDs at line 24 with your actual scenario IDs.

import sys

import dataiku
from dataiku.scenario import Trigger

def get_last_run_time(scenario):
    """Get the time that the scenario last completed successfully
    Returns `None` if the scenario has never completed successfully
        last_run = scenario.get_last_successful_run()
    except ValueError:
        return None
    return last_run.start_time

t = Trigger()
client = dataiku.api_client()
project = client.get_default_project()

# This scenario
scenario = project.get_scenario("SCENARIO_C")
# Scenarios that you want to watch
watched1 = project.get_scenario("SCENARIO_A")
watched2 = project.get_scenario("SCENARIO_B")

this_time = get_last_run_time(scenario)
watched1_time = get_last_run_time(watched1)
watched2_time = get_last_run_time(watched2)

if watched1_time is None or watched2_time is None:
    print("Watched scenarios have never run. Aborting")
if this_time is None:
    print("This scenario has never run. Triggering")
if watched1_time > this_time and watched2_time > this_time:
    print("Watched scenarios have both run recently. Triggering")
    print("This scenario has run recently. Aborting")




0 Kudos