Use variables define in Bokeh webapp as DSS global variables

wdpat20 Registered Posts: 2 ✭✭✭✭

It is my first use of Bokeh Webapp.

I would like to define DSS global variables from Bokeh Webapp.

example :

CODE_OP = TextInput(title="code operation", value='')

CODE_DIFF = TextInput(title="code(s) diffusion(s)", value='')

I want to use CODE_OP and CODE_DIFF as DSS variables in the recipies of my project flow and scenario.


Best Answer

  • tim-wright
    tim-wright Partner, L2 Designer, Snowflake Advanced, Neuron 2020, Registered, Neuron 2021, Neuron 2022 Posts: 77 Partner
    Answer ✓

    I'm not 100% sure what you are trying to accomplish (more generally beyond setting variables) so I can't be sure that this will help you in that ultimate goal. That being said, I fooled around with a bokeh webapp recently and have a working example of what I think you want - the entire trivial webapp code is pasted below. I have one text box changing a local variable, adn the other a global variable just to show how its done - modify as needed.

    import dataikufrom import curdocfrom bokeh.layouts import row, widgetboxfrom bokeh.models.widgets import TextInput# Getting the project variables for this project using Public APIproj = dataiku.api_client().get_project(dataiku.default_project_key())variables = proj.get_variables()# Set up widgetsCODE_OP = TextInput(title="code operation", value='')CODE_DIFF = TextInput(title="code(s) diffusion(s)", value='')# Callbacks# Change CODE_OP Local variable for this project (creates if it didn't exist)def update_code_op(attrname, old, new):variables['local']['CODE_OP'] = newproj.set_variables(variables) # Using Dataiku API to update project variablesCODE_OP.on_change('value', update_code_op)# Change CODE_DIFF Global variable for this project (creates if it didn't exist)def update_code_diff(attrname, old, new):variables['standard']['CODE_DIFF'] = newproj.set_variables(variables) # Using Dataiku API to update project variablesCODE_DIFF.on_change('value', update_code_diff)# Set up layouts and add to documentinputs = widgetbox(CODE_OP, CODE_DIFF)curdoc().add_root(row(inputs, width=800))curdoc().title = "Update Project Vars"

    I would imagine you might want a "Run Analysis" button or something below that allows the project flow to be run with those parameters from the Bokeh application? (that will probably require a button with an .on_click callback that triggers other actions through the DSS API). If this is meant for a user, it may have substantial latency for user interaction (waiting for the flow to execute). Additionally if you are expecting concurrency (multiple simultaneous users) you may find that they are trying to overwrite each other's results.

    , Let me know if this answered your need. Also, when you get your full use case working, I encourage you to share here so the rest of us can benefit from your trailblazing! Have a good weekend.


Setup Info
      Help me…