Variables - Automatic update code

agardenat
agardenat Registered Posts: 2

Hello !

I read on the documentation that global variables can be dynamically modified at project run by auto execution the get_variables() code defined in Administration / Variables Automatic update code.

It seems nice but as I see it is Jython only, is there any way to use some contextual data like custom variables / user property / username / etc from there ?

Thanks in Advance !

Antoine

Answers

  • Zach
    Zach Dataiker, Dataiku DSS Core Designer, Dataiku DSS Adv Designer, Registered Posts: 153 Dataiker
    edited July 17

    Hi @agardenat
    ,

    You won't be able to access that information using the automatic update code since it uses Jython.

    As an alternative, you could use Python code in a scenario to set the global variables. This uses regular Python, so you have full access to Python modules.

    Preview of the scenario:

    image.png

    Example code that sets the "my_var" global variable:

    from dataiku.scenario import Scenario
    
    scenario = Scenario()
    
    scenario.set_global_variables(
        my_var="foo"
    )

    Reference documentation: Scenarios (in a scenario)

    Thanks,

    Zach

  • agardenat
    agardenat Registered Posts: 2

    Hi @ZachM

    Thanks for your answer.

    I sure can do that, but I will miss the "automatic" part which made it transparent, with no need to add code to scenarios.

    Thanks,

    Antoine

  • Zach
    Zach Dataiker, Dataiku DSS Core Designer, Dataiku DSS Adv Designer, Registered Posts: 153 Dataiker

    Hi @agardenat
    ,

    You can update the variables automatically by adding a trigger to the scenario. For example, a time-based trigger will cause the variables to be updated on a schedule, such as once every day.

    Reference: Scenario Triggers.

  • Axolotl
    Axolotl Registered Posts: 15 ✭✭✭

    Hi,

    I believe the question was to be able to do such thing (set/update a variable dynamically) without using scenarios.

    I have the same needs. For each project, I need to parameterise dynamically, some variables so that I can retrieve the values (user, time) at each execution and this, not in a scenarios (users can execute recipe outside a scenario).
    This will allows to trace the use of runs during the design period.

    Is there a way to do that ?
    Thanks

  • Turribeach
    Turribeach Dataiku DSS Core Designer, Neuron, Dataiku DSS Adv Designer, Registered, Neuron 2023 Posts: 1,876 Neuron

    Why is not possible to use Scenarios and Scenario variables which are perfect as they are calculated at run time? Running parts of the flow randomly is not a deterministic approach. You can break your flow build in multiple scenarios to allow for piece meal building. I would suggest you start a new thread as it seems you have a slightly different requirement.

  • Axolotl
    Axolotl Registered Posts: 15 ✭✭✭

    Yes sorry, I was in this thread because I found the same way as agardenat to do such thing : global variables can be dynamically modified at project run by auto execution the get_variables() code defined in Administration / Variables Automatic update code.

    I fully agree with you for the scenario usage. But I canot prevent a user starts a new project, then create a handle on data then execute a recipe on it. For this use case, a global variables that can be dynamically modified at project level during execution would be helpfull.

Setup Info
    Tags
      Help me…