TabPy supports deployed functions which are recommended way for reusing Python code, creating and sharing models and moving code form SCRIPT_...
calculated fields outside of workbooks. However when working or experimenting with code it is not very convenient if you’ll have to deploy new version of a function with every change. And this is why you may have a question if it is possible just to invoke some code from standalone Python file.
And it is possible! Let me show you how.
The files with Python function(s) in them should be on the same machine where your instance of TabPy is running. Let’s create simple file with couple of simple functions in it:
def my_add_lists(list1, list2):
return [x + y for x, y in zip(list1, list2)]
def my_inc_list_items(list1):
return [x + 1 for x in list1]
For Python to be able to find the module (my_python_functions.py
file) we need to set up environment variable PYTHONPATH
. As explained in Python documentation (https://docs.python.org/3/using/cmdline.html#environment-variables) PYTHONPATH
augments where Python is looking for modules when they are referenced with import
. The variable needs to be set before TabPy is started.
For Windows the variable can be set in command line:
set PYTHONPATH=%PYTHONPATH%;<my-python-functions-folder>
where <my-python-functions-folder>
is the path to where your Python module(s) are located, e.g.:
set PYTHONPATH=%PYTHONPATH%;c:\user\ogolovatyi\python\tabpy-experiments
For Linux and Mac the variable can be set similarly:
export PYTHONPATH=$PYTHONPATH:<my-python-functions-folder>
Now in calculated fields you can import the modules and use functions from them. For example:
SCRIPT_INT(
"
from my_python_functions import my_add_lists
return my_add_lists(_arg1, _arg2)
",
SUM([Price]), SUM([Tax])
)
In the example above from my_python_functions import my_add_lists
tells Python to load my_python_functions
module (which will be my_python_functions.py
file in the folder we previously added to PYTHONPATH
) and load my_add_lists
function from it.
After that the function is used in the calculation.
Hope this simple example is helpful for you when working on Python code to be used in Tableau calculations.