I was developing a shell script to deploy some pipelines to Synapse (amongst other things). One of the pipelines failed to deploy with the following error:
msrest.exceptions.DeserializationError: Unable to deserialize response data. Data: {'value': '@pipeline().parameters.WaitTimeSeconds', 'type': 'Expression'}, int, TypeError: int() argument must be a string, a bytes-like object or a number, not 'dict'
The pipeline had an expression on the wait time for a Wait task. This pipeline was previously working in Azure Data Factory. So, I created a pipeline in Synapse with just a parameter and a wait with a expression for the duration of the wait time. I saved off the JSON and tried to push it to Synapse using the az CLI. It threw the same error message. Here's the command, for what it's worth:
az synapse pipeline create --workspace-name somesynapseworkspace --file @./pl_waittest.json --name pl_waittest
Here's the full contents of pl_waittest.json:
{
"name": "pl_waittest",
"properties": {
"activities": [
{
"name": "Wait1",
"type": "Wait",
"dependsOn": [],
"userProperties": [],
"typeProperties": {
"waitTimeInSeconds": {
"value": "@pipeline().parameters.WaitTimeSeconds",
"type": "Expression"
}
}
}
],
"parameters": {
"WaitTimeSeconds": {
"type": "int",
"defaultValue": 60
}
},
"annotations": []
}
}
It looks like the definition it checks against forgot to allow wait times to use expressions.