description |
---|
This section contains reference documentation for the JSONPATHSTRING function. |
Extracts the String value from jsonField
based on 'jsonPath'
, use optional defaultValue
for null or parsing error. This function can only be used in an ingestion transformation function.
JSONPATHSTRING(jsonField, 'jsonPath', [defaultValue])
Arguments | Description |
---|---|
jsonField |
An Identifier/Expression contains JSON documents. |
'jsonPath' |
Follows JsonPath Syntax to read values from JSON documents. |
{% hint style="warning" %}
'jsonPath'
` is a literal. Pinot uses single quotes to distinguish them from identifiers.
You can use the JSONPath Online Evaluator to test JSON expressions before you import any data.
{% endhint %}
The usage examples are based on extracting fields from the following JSON document:
{
"data": {
"name": {"full.name": "Peter", "nick.name": "Pete"},
"age": 24,
"subjects": [
{
"name": "maths",
"homework_grades": [80, 85, 90, 95, 100],
"grade": "A",
"score": 90
},
{
"name": "english",
"homework_grades": [60, 65, 70, 85, 90],
"grade": "B",
"score": 70
}
]
}
}
Expression | Value |
---|---|
JSONPATHSTRING(data, '$.age') | "24" |
JSONPATHSTRING(data, '$.name["nick.name"]') | "Pete" |
This function can be used in the table config to extract the age
property into the age
column, as described below:
{
"tableConfig":{
"ingestionConfig":{
"transformConfigs":[
{
"columnName":"age",
"transformFunction":"JSONPATHSTRING(data, '$.age')"
},
{
"columnName":"nickName",
"transformFunction":"JSONPATHSTRING(data, '$.name[\"nick.name\"]')"
}
]
}
}
}