maxcembalest's picture
Upload 184 files
ad8da65
raw
history blame
3.11 kB
# Composing Functions (Advanced Usage)
To see functions you can use with this syntax,
checkout the {doc}`aggregation functions <aggregation_functions>`
and the {doc}`transformation functions <transformation_functions>`.
Any function with a parameter with the type signature `[string or nested]`
is able to accept the following as a value:
1. a string constant that represents a property of the model
1. an object of the form:
```json
{
"alias_ref": "string",
"nested_function": {"...": "..."}
}
```
Only one of `alias_ref` or `nested_function` may be present at a time. See the following
explanations of each.
## Alias References
The `alias_ref` field allows specifying another selected column's alias
to use as input to the function. This example uses an `alias_ref` to pull in another column
to the `add` function:
```json
{
"select": [
{
"function": "abs",
"alias": "absLoan",
"parameters": {
"property": "loan"
}
},
{
"function": "add",
"alias": "plus2",
"parameters": {
"left": 2,
"right": {
"alias_ref": "absLoan"
}
}
}
]
}
```
This request returns:
```json
{
"query_result": [
{
"absLoan": 55.45,
"plus2": 57.45
}
]
}
```
## Nested Functions
The `nested_function` field allows specifying another function definition
to use as input. Here's an example of how to calculate absolute error for
a regression model. In this example, we pass the nested `subtract` function as
input to the `abs` function via the `nested_function` object for the `property`
parameter of `abs`:
```json
{
"select": [
{
"function": "abs",
"alias": "abs_error",
"parameters": {
"property": {
"nested_function": {
"function": "subtract",
"alias": "error",
"parameters": {
"left": "Predicted_FICO_Score",
"right": {
"alias_ref": "ground_truth"
}
}
}
}
}
},
{
"property": "Predicted_FICO_Score"
},
{
"property": "Consumer_Credit_Score",
"alias": "ground_truth"
}
]
}
```
This query returns:
```json
{
"query_result": [
{
"Consumer_Credit_Score": 660,
"Predicted_FICO_Score": 688.10004,
"abs_error": 28.100040000000035
},
{
"Consumer_Credit_Score": 663,
"Predicted_FICO_Score": 681,
"abs_error": 18
},
"..."
]
}
```
```{note} If you use the same function multiple times in a query, you need to give each one a distinct "alias". Otherwise, the names will conflict.
```