Skip to main content
Version: Python

Globals

The global symbol table allows users to define variables and functions in query strings.

In Python, the Deephaven Query Language resolves variables using the current global symbol table, which can be accessed using globals().

Syntax

globals()[name] = value

Examples

note

Variable names and function names are case-sensitive.

Manually add variables

In the following example, the variable a is manually added and assigned the value 7.

from deephaven import empty_table

globals()["a"] = 7

result = empty_table(5).update(formulas=["Y = a"])

This variable can be used inside a query string.

from deephaven import new_table
from deephaven.column import int_col

globals()["a"] = 7

source = new_table([int_col("A", [1, 2, 3])])

result = source.update(formulas=["X = 2 + 3 * sqrt(A) + a"])

Automatically add variables

At the top level of a program, variables are automatically added to the global symbol table.

In the following example, a program contains b = 3 at the top level, so the global symbol table will also contain the name b with a value of 3.

from deephaven import empty_table

b = 3
result = empty_table(5).update(formulas=["Y = b"])

This variable can be used inside a query string.

from deephaven import new_table
from deephaven.column import int_col
b = 3

source = new_table([int_col("A", [1, 2, 3])])

result = source.update(formulas=["X = 2 + 3 * sqrt(A) + b"])

User-defined functions in a query string

Programming languages frequently implement functions as callable objects. The global symbol table can make these callable objects available for use inside query strings.

In the following example, myFunction is defined and is called from the query string.

from deephaven import new_table
from deephaven.column import int_col
def myFunction(a):
return a * (a + 1)

source = new_table([int_col("A", [1, 2, 3])])

result = source.update(formulas=["X = 2 + 3 * (int)myFunction(A)"])

Encapsulated query logic in functions

One can encapsulate query logic within functions. Such functions may use variables in query strings. In these cases, the variables need to be manually added to the global symbol table.

In the following example, the compute function performs a query using the source table and the input parameter a. Here, a must be added to the global symbol table to be used in the query string.

from deephaven import new_table
from deephaven.column import int_col
def f(a, b):
return a * b
def compute(source, a):
globals()["a"] = a

return source.update(formulas=["X = (int)f(a, A)"])

source = new_table([int_col("A", [1, 2, 3])])

result1 = compute(source, 10)
result2 = compute(source, 3)