Now that it's live, don't forget to accept your certification badge on Credly today! Learn more here.
We are currently experiencing an issue with Email verification at this time and working towards a solution. Should you encounter this issue, please click on the "Send Verification Button" a second time and the request should go through. If the issue still persists for you, please email support@alteryx.com for assistance.

Alteryx Promote Discussions

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

Support for nested JSON in R client

wf1
5 - 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) ?

1 REPLY 1
DavidCo
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.