def json_array(on_null: JsonOnNull = JsonOnNull.ABSENT, *args) -> Expression: """ Builds a JSON array string from a list of values. This function returns a JSON string. The values can be arbitrary expressions. The `on_null` behavior defines how to treat `NULL` values. Elements which are created from another JSON construction function call (`json_object`, `json_array`) are inserted directly rather than as a string. This allows building nested JSON structures. Examples: :: >>> json_array() # '[]' >>> json_array(JsonOnNull.NULL, 1, "2") # '[1,"2"]' >>> # Expressions as values >>> json_array(JsonOnNull.NULL, col("orderId")) >>> json_array(JsonOnNull.NULL, null_of(DataTypes.STRING())) # '[null]' >>> json_array(JsonOnNull.ABSENT, null_of(DataTypes.STRING())) # '[]' >>> json_array(JsonOnNull.NULL, json_array(JsonOnNull.NULL, 1)) # '[[1]]' .. seealso:: :func:`~pyflink.table.expressions.json_object` """ return _varargs_op("jsonArray", *(on_null._to_j_json_on_null(), *args))
def json_object(on_null: JsonOnNull = JsonOnNull.NULL, *args) -> Expression: """ Builds a JSON object string from a list of key-value pairs. `args` is an even-numbered list of alternating key/value pairs. Note that keys must be non-`NULL` string literals, while values may be arbitrary expressions. This function returns a JSON string. The `on_null` behavior defines how to treat `NULL` values. Values which are created from another JSON construction function call (`json_object`, `json_array`) are inserted directly rather than as a string. This allows building nested JSON structures. Examples: :: >>> json_object() # '{}' >>> json_object(JsonOnNull.NULL, "K1", "V1", "K2", "V2") # '{"K1":"V1","K2":"V2"}' >>> # Expressions as values >>> json_object(JsonOnNull.NULL, "orderNo", col("orderId")) >>> json_object(JsonOnNull.NULL, "K1", null_of(DataTypes.STRING())) # '{"K1":null}' >>> json_object(JsonOnNull.ABSENT, "K1", null_of(DataTypes.STRING())) # '{}' >>> # '{"K1":{"K2":"V"}}' >>> json_object(JsonOnNull.NULL, "K1", json_object(JsonOnNull.NULL, "K2", "V")) .. seealso:: :func:`~pyflink.table.expressions.json_array` """ return _varargs_op("jsonObject", *(on_null._to_j_json_on_null(), *args))
def json_object(on_null: JsonOnNull = JsonOnNull.NULL, *args) -> Expression: """ Builds a JSON object string from a list of key-value pairs. `args` is an even-numbered list of alternating key/value pairs. Note that keys must be non-`NULL` string literals, while values may be arbitrary expressions. This function returns a JSON string. The `on_null` behavior defines how to treat `NULL` values. Examples: :: >>> json_object() # '{}' >>> json_object(JsonOnNull.NULL, "K1", "V1", "K2", "V2") # '{"K1":"V1","K2":"V2"}' >>> # Expressions as values >>> json_object(JsonOnNull.NULL, "orderNo", col("orderId")) >>> json_object(JsonOnNull.NULL, "K1", null_of(DataTypes.STRING())) # '{"K1":null}' >>> json_object(JsonOnNull.ABSENT, "K1", null_of(DataTypes.STRING())) # '{}' >>> # '{"K1":{"K2":"V"}}' >>> json_object(JsonOnNull.NULL, "K1", json_object(JsonOnNull.NULL, "K2", "V")) """ return _varargs_op("jsonObject", *(on_null._to_j_json_on_null(), *args))
def json_array_agg(on_null: JsonOnNull, item_expr) -> Expression: """ Builds a JSON object string by aggregating items into an array. Item expressions can be arbitrary, including other JSON functions. If a value is `NULL`, the `on_null` behavior defines what to do. This function is currently not supported in `OVER` windows, unbounded session windows, or hop windows. Examples: :: >>> # '["Apple","Banana","Orange"]' >>> orders.select(json_array_agg(JsonOnNull.NULL, col("product"))) """ return _binary_op("jsonArrayAgg", on_null._to_j_json_on_null(), item_expr)
def json_object_agg(on_null: JsonOnNull, key_expr: Union[str, Expression[str]], value_expr) -> Expression: """ Builds a JSON object string by aggregating key-value expressions into a single JSON object. The key expression must return a non-nullable character string. Value expressions can be arbitrary, including other JSON functions. If a value is `NULL`, the `on_null` behavior defines what to do. Note that keys must be unique. If a key occurs multiple times, an error will be thrown. This function is currently not supported in `OVER` windows. Examples: :: >>> # '{"Apple":2,"Banana":17,"Orange":0}' >>> orders.select(json_object_agg(JsonOnNull.NULL, col("product"), col("cnt"))) """ return _ternary_op("jsonObjectAgg", on_null._to_j_json_on_null(), key_expr, value_expr)