如何解释 Azure 数据工厂中的 indexof 表达式和函数

How to interpret indexof expression and functions in Azure Data Factory

我正在尝试了解 Azure 数据工厂的 indexof 表达式(函数)。

示例

此示例查找“hello world”字符串中“world”子字符串的起始索引值:

indexOf('hello world', 'world')
And returns this result: 6

我对 'index value' 的含义以及示例如何得出结果 6 感到困惑。

此外,使用上面的示例,有人可以告诉我以下表达式的答案是什么吗?

@if(greater(indexof(string(pipeline().parameters.Config),'FilenameMask'),0),pipeline().parameters.Config.FilenameMask,'')

指数

{"FilenameMask":"accounts*."}

'Config'表示sql数据库中的一个字段

根据 the docs:

Return the starting position or index value for a substring. This function is not case-sensitive, and indexes start with the number 0.

hello world
01234567890
      ^
      +--- "world" found starting at position 6

关于你问题的第二部分。为了清楚起见,这里重写了表达式:

@if( greater(indexof(string(pipeline().parameters.Config),'FilenameMask'),0)
    ,pipeline().parameters.Config.FilenameMask
    ,'')

可以这样理解:

if the index of the string "FilenameMask" within x is greater than 0 then
    return x.Filenamemask
else
    return an empty string

其中 x 是 pipeline()。parameters.Config,它是数据库 table 中“配置”列的值。它将包含

等值

{"sparkConfig":{"header":"true"},"FilenameMask":"cashsales*."}

{"FilenameMask":"accounts*."}

ADF表达式也可以这样读:

if the JSON in the Config column contains a "FilenameMask" key then
    return the value of the FilenameMask key
else
    return an empty string