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。
我每个 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。