community
cancel
Showing results for 
Search instead for 
Did you mean: 

Alteryx Promote Discussions

Find answers, ask questions, and share expertise about Alteryx Promote.
SOLVED

Support for nested JSON in R client

Atom

The Alteryx promote-python library supports nested JSON objects:

 

{
"name": { "first_name": "colin", "last_name": "kaepernick" } }

 

This doesn't work in the R client though. The jsonlite package supports nested JSON, but for some reason it is being flattened for the promote request:

 

{
"name.first_name": "colin",
"name.last_name": "kaepernick"
}

 

Is there any reason for flattening the JSON here (and not in python) ?

Alteryx
Alteryx

The reason nested JSON is currently flattened in R and not in Python is because all input JSON to an R model is converted, using jsonlite, to a DataFrame. In order to support requests that have multiple observations attached, the JSON must be flattened to accomodate the 2 dimensional nature of a DataFrame. Additionally, when deploying an R model, the model.predict() function must operate on a DataFrame and not on a list.

 

Python is a bit more flexible in the regard. When input JSON is sent to a Python model, the JSON is converted into a dict or a list, depending on its structure. These data types inherently support nested data and thus the input JSON keys are not flattened. When deploying a python model, the deployed function should operate on a dict or a list depending on the expected input structure.