Azure 数据工厂:对于每个 item() 值,特定属性不存在

Azure Data Factory: For each item() value does not exist for a particular attribute

我每个 activity 都有一个存储过程 (SP),其中我显然使用 item() 输入值。

现在假设SP的输入值为item().a、item().b和item().c

问题:对于foreach的某些迭代,item().b不存在,这是预期的。那么我应该如何在存储过程中处理它呢?因为此时它在执行 SP 时给我一个错误:

"The template language expression 'item().b' cannot be evaluated because property 'b' doesn't exist, available properties are 'a, c'

或者我应该如何克服数据工厂中的这个故障?

显然,数据工厂检查了 empty(),但没有检查 exist()。

我认为您无法在数据工厂中解决此问题。您可以使用 String(Item()) 将其转换为格式为 Json 的字符串:

{
    'a':'value',
    'b':'value',
    'c':'value'
}

然后您可以在您的存储过程中使用一些创意来处理它 SQL:

DECLARE @jsonParams NVARCHAR(255) = '
    {
        "a":"a value",
        "c":"b value"
    }' 


DECLARE @paramA VARCHAR(10) = (SELECT JSON_VALUE(@jsonParams,'$.a'))
DECLARE @paramB VARCHAR(10) = (SELECT JSON_VALUE(@jsonParams,'$.b'))
DECLARE @paramC VARCHAR(10) = (SELECT JSON_VALUE(@jsonParams,'$.c'))

你可以用“?”。即,item()?.b

请参考question mark and a related post