函数

下表列出了所有可用函数。有关每个函数的详细信息,请参见相关的函数类型:

函数类型 函数
Record functions
  • record:attribute(<attribute name>)
  • record:attributeOrDefault(<attribute name>, <default value>)
  • record:creator()
  • record:eventCreation()
  • record:eventType()
  • record:eventVersion()
  • record:exists(<field path>)
  • record:fieldAttribute(<field path>, <field attribute name>)
  • record:fieldAttributeOrDefault(<field path>, <field attribute name>, <default value>)
  • record:id()
  • record:path()
  • record:type(<field path>)
  • record:value(<field path>)
  • record:valueOrDefault(<field path>, <default value>)
Delimited data record functions
  • record:dExists(<header>)
  • record:dHasDupHeader()
  • record:dIndex(<header>)
  • record:dIsDupHeader(<header>)
  • record:dToMap()
  • record:dValue(<header>)
  • record:dValueAt(<header index>)
Error record functions
  • record:errorCode()
  • record:errorCollectorId()
  • record:errorMessage()
  • record:errorPipeline()
  • record:errorStackTrace()
  • record:errorStage()
  • record:errorStageLabel()
  • record:errorTime()
Base64 functions
  • base64:decodeBytes(<string>)
  • base64:decodeString(<string>, <charset>)
  • base64:encodeBytes(<byte array>, <urlSafe: true | false>)
  • base64:encodeString(<string>, <urlSafe: true | false>, <charset>)
Category functions
  • CREDIT_CARD:type()
  • CREDIT_CARD:firstGroup()
  • CREDIT_CARD:secondGroup()
  • CREDIT_CARD:thirdGroup()
  • CREDIT_CARD:fourthGroup()
  • CREDIT_CARD:lastPart()
  • CREDIT_CARD:std()
  • EMAIL:domain()
  • EMAIL:domainTLD()
  • EMAIL:domainWithoutTLD()
  • EMAIL:localPart()
  • EMAIL:std()
  • US_PHONE:areaCode()
  • US_PHONE:areaCodeOrDefault(<default value>)
  • US_PHONE:exchangeCode()
  • US_PHONE:lineNumber()
  • US_PHONE:extension()
  • US_PHONE:extensionOrDefault()
  • US_PHONE:std()
  • US_SSN:areaNumber()
  • US_SSN:groupNumber()
  • US_SSN:serialNumber()
  • US_SSN:std()
  • US_ZIP_CODE:stateGroup()
  • US_ZIP_CODE:region()
  • US_ZIP_CODE:cityArea()
  • US_ZIP_CODE:specificLocation()
  • US_ZIP_CODE:specificLocationOrDefault(<default value>)
  • US_ZIP_CODE:std()
Credential functions
  • credential:get(<storeId>, <userGroup>, <name>)
  • credential:getWithOptions(<storeId>, <userGroup>, <name>, <storeOptions>)
Data drift functions
  • drift:names(<field path>, <ignoreWhenMissing: true | false>)
  • drift:order(<field path>, <ignoreWhenMissing: true | false>)
  • drift:size(<field path>, <ignoreWhenMissing: true | false>)
  • drift:type(<field path>, <ignoreWhenMissing: true | false>)
Data generation functions Address related faker functions:

  • deterministicFaker:country(<input>)
  • randomFaker:country()
  • deterministicFaker:UsCity(<input>)
  • randomFaker:UsCity
  • deterministicFaker:UsFullAddress(<input>)
  • randomFaker:UsFullAddress()
  • deterministicFaker:UsState(<input>)
  • randomFaker:UsState()
  • deterministicFaker:UsStreetAddress(<input>)
  • randomFaker:UsStreetAddress()
  • deterministicFaker:UsZipCode(<input>)
  • randomFaker:UsZipCode()

Finance related faker functions:

  • deterministicFaker:creditCard(<input>)
  • randomFaker:creditCard()
  • deterministicFaker:creditCardOfType(<type>, <input>)
  • randomFaker:creditCardOfType(<type>)
  • deterministicFaker:iban(<input>)
  • randomFaker:iban()
  • deterministicFaker:ibanForCountry(<country code>, <input>)
  • randomFaker:ibanForCountry(<country code>)

Internet related faker functions:

  • deterministicFaker:email(<input>)
  • randomFaker:email()
  • deterministicFaker:url(<input>)
  • randomFaker:url()

Person related faker functions:

  • deterministicFaker:race(<input>)
  • randomFaker:race()
  • deterministicFaker:UsFirstName(<input>)
  • randomFaker:UsFirstName()
  • deterministicFaker:UsLastName(<input>)
  • randomFaker:UsLastName()
  • deterministicFaker:UsPhone(<input>)
  • randomFaker:UsPhone()
  • deterministicFaker:UsSsn(<input>)
  • randomFaker:UsSsn()

Xeger functions:

  • xeger:deterministic(<regular expression>, <input>)
  • xeger:random(<regular expression>)
Field functions
  • f:attribute(<attribute name>)
  • f:getSiblingWithName(<field name>)
  • f:hasSiblingWithName(<field name>)
  • f:hasSiblingWithValue(<field name>, <field value>)
  • f:index()
  • f:name()
  • f:parent()
  • f:parentPath()
  • f:path()
  • f:type()
  • f:value()
File functions
  • file:fileExtension(<filepath>)
  • file:fileName(<filepath>)
  • file:parentPath(<filepath>)
  • file:pathElement(<filepath>, <integer>)

  • file:removeExtension(<filepath>)
Job functions
  • job:id()
  • job:name()
  • job:startTime()
  • job:user()
Math functions
  • math:abs(<number>)
  • math:ceil(<number>)
  • math:floor (<number>)
  • math:max(<number1>, <number2>)
  • math:min(<number1>, <number2>)
  • math:round(<number>)
Pipeline functions
  • pipeline:id()
  • pipeline:name()
  • pipeline:startTime()
  • pipeline:title()
  • pipeline:user()
  • pipeline:version()
String functions
  • str:concat(<string1>, <string2>)
  • str:contains(<string>, <subset>)
  • str:endsWith(<string>, <subset>)
  • str:escapeXML10(<string>)
  • str:escapeXML11(<string>)
  • str:indexOf(<string>, <subset>)
  • str:isNullOrEmpty(<string>)
  • str:lastIndexOf(<string>, <subset>)
  • str:length(<string>)
  • str:matches(<string>, <regEx>)
  • str:regexCapture(<string>, <regEx>, <group>)
  • str:replace(<string>, <oldChar>, <newChar>)
  • str:replaceAll(<string>, <regEx>, <newString>)
  • str:split(<string>, <separator>)
  • str:splitKV(<string>, <pairSeparator>, <keyValueSeparator>)
  • str:startsWith(<string>, <subset>)
  • str:substring(<string>, <beginIndex>, <endIndex>)
  • str:toLower(<string>)
  • str:toUpper(<string>)
  • str:trim(<string>)
  • str:truncate(<string>, <length>)
  • str:unescapeJava(<string>)
  • str:unescapeXML(<string>)
  • str:urlDecode(<URL>, <charset>)
  • str:urlEncode(<infoforURL>, <charset>)
Time functions
  • time:createDateFromStringTZ(<string>, <time zone>, <date format>)
  • time:dateTimeToMilliseconds(<Date object>)
  • time:dateTimeZoneOffset(<Date object>, <time zone>)
  • time:extractDateFromString(<string>, <format string>)
  • time:extractLongFromDate(<Date object>, <format string>)
  • time:extractStringFromDate(<Date object>, <format string>)
  • time:extractStringFromDateTZ(<Date object>, <time zone>, <format string>)
  • time:millisecondsToDateTime(<long>)
  • time:now()
  • time:timeZoneOffset(<time zone>)
  • time:trimDate(<datetime>)
  • time:trimTime(<datetime>)
Miscellaneous functions
  • alert:info()
  • emptyList()
  • emptyMap()
  • every(<interval>, <mm() | ss()>)
  • field:field()
  • isEmptyList()
  • isEmptyMap()
  • jvm:maxMemoryMB()
  • length()
  • list:join(<list field>, <separator>)
  • list:joinSkipNulls(<list field>, <separator>)
  • offset:column(<position>)
  • runtime:availableProcessors()
  • runtime:conf(<runtime property>)
  • runtime:loadResource(<file name>, <restricted: true | false>)
  • runtime:loadResourceRaw(<file name>, <restricted: true | false>)
  • sdc:hostname()
  • sdc:id()
  • size()
  • uuid:uuid()
  • vault:read(<path>, <key>) – Deprecated
  • vault:readWithDelay(<path>, <key>, <delay>) – Deprecated

Record Functions

使用记录函数可确定有关记录的信息,例如创建记录的阶段或记录中是否存在字段。

您可以将任何参数替换为字面量或评估为参数的表达式。字符串文字必须用单引号或双引号引起来。

某些功能在Data Collector Edge管道中可能无效。

表达式语言提供以下常规记录函数:

record:attribute(<attribute name>)
返回指定记录属性的值。用于返回数据,例如,使用File Tail源设置的“tag”属性的数据。
使用以下参数:
  • attribute name – Name of the record header attribute.
返回类型: String.
例如,以下表达式返回由File Tail源添加的标记属性的值:

${record:attribute('tag')}
record:attributeOrDefault(<attribute name> , <default value>)
返回指定记录头属性的值。当属性不存在或没有值时,返回指定的默认值。
使用以下参数:
  • attribute name – Name of the record header attribute.
  • default value – Value to use when the record header attribute does not exist or has no value.
返回类型:返回字段属性值时返回字符串值。否则,返回指定默认值的类型。
例如,以下表达式返回tag属性的值,并且在不存在任何值时返回NA:
${record:attributeOrDefault('tag', 'NA')}
record:creator()
返回创建记录的阶段的实例名称,通常是源端阶段。数据存储在记录的stageCreator字段中。
返回类型:String.
例如,以下表达式返回创建每个记录的阶段的实例名称:

${record:creator()}
record:eventCreation()
返回事件发生时的纪元时间戳。用于从事件记录返回创建时间戳。当应用于其他记录时,返回空值。
返回类型:String.
例如,以下表达式返回事件生成阶段生成事件的时间:

${record:eventCreation()}
record:eventType()
从事件记录返回事件类型。当应用于其他记录时,返回空值。
事件生成阶段创建不同的事件类型。有关可能的事件类型的信息,请参阅阶段文档中的“事件记录”。
返回类型:String.
例如,以下表达式从事件记录返回事件类型:

${record:eventType()}
record:eventVersion()
返回事件记录中的事件版本。当应用于其他记录时,返回空值。
返回类型:String.
例如,以下表达式从事件记录返回事件版本:

${record:eventVersion()}
record:exists(<field path>)
确定指定的字段是否在记录中。当该字段不在记录中时,返回0。当该字段在记录中时,返回1。
返回类型:Boolean.
例如,当记录中存在“Name”字段时,以下表达式返回1:

${record:exists('/Name')}
当“Name”字段不属于记录的一部分时,它将返回0。
record:fieldAttribute(<field path>, <field attribute name>)
返回指定字段属性的值。
使用以下参数:
  • field path – 具有属性的字段的路径。
  • field attribute name – 字段属性的名称。
返回类型: String
例如,以下表达式返回ID字段上pk属性的值:

record:fieldAttribute('/ID', 'pk')
record:fieldAttributeOrDefault(<field path>, <field attribute name>, <default value>)
返回field属性的值(如果存在)。如果该属性不存在,则返回指定的默认值。
使用以下参数:
  • field path – 具有属性的字段的路径。
  • field attribute name – 字段属性的名称。
  • default value – 字段属性不存在或没有值时使用的值。
返回类型:返回字段属性值时返回字符串值。否则,返回指定默认值的类型。
例如,以下表达式在可用时返回ID字段上pk属性的值,否则返回“n”。
record:fieldAttributeOrDefault('/ID', 'pk', 'n')
record:id()
返回记录ID。记录ID也存储在sourceId记录头属性中。
返回类型:String.
record:path()
返回处理记录的管道中的阶段。数据存储在记录的stagesPath字段中。字段路径使用以下格式:

<origin instance name>:<next stage instance name>:<next stage instance name>:... 
返回类型:String.
record:type(<field path>)
检查字段的数据类型。可能的返回值是:

  • Boolean
  • Char
  • Byte
  • Short
  • Integer
  • Long
  • Float
  • Double
  • Date
  • Datetime
  • Decimal
  • String
  • Time
  • Byte-Array
  • Map
  • List
返回类型:String.
record:value(<field path>)
以适当的数据类型返回该字段的值。
返回类型:当字段包含值时,根据字段值返回类型。当该字段为空时,该函数不返回任何值。

根据函数的预期返回类型强制强制为空。例如,如果期望EL返回字符串,则空字符串时将强制返回null。但是,将空整数强制返回为0。

record:valueOrDefault(<field path> , <default value>)
以适当的数据类型返回该字段的值。如果该字段不存在或该字段为null,则返回默认值。
当字段不存在或字段为空时,用于提供默认值。
返回类型:变量,取决于函数是返回字段值还是默认值。

Delimited Data Record Functions

使用分隔数据记录函数可处理列表根字段类型的分隔数据。如果将源端配置为使用列表映射根字段类型处理分隔数据,则可以使用标准记录函数。

在Data Collector Edge管道中无效。 不要在Data Collector Edge 管道中使用分隔数据记录函数。

有关分隔的数据根字段类型的详细信息,请参阅分隔数据根字段类型。

您可以将任何参数替换为文字或表达式的表达式。字符串文字必须用单引号或双引号引起来。

表达式语言提供以下分隔数据记录函数:
record:dExists(<header name>)
确定指定的头名称是否存在于记录中。
返回类型:Boolean.
record:dHasDupHeader()
确定记录是否具有重复的头名称。
返回类型:Boolean.
record:dIndex(<header name>)
返回与指定标头名称关联的索引。用于查找记录中头的位置。
返回类型:Integer,第一个位置从0开始。
record:dIsDupHeader(<header name>)
确定指定的头名称在记录中是否被多次使用。
返回类型:Boolean.
record:dToMap()
将具有列表根字段的记录转换为列表映射根字段。用于将分隔的List记录转换为List-Map,以便更轻松地使用标准记录功能。有关根字段类型的更多信息,请参见分隔数据根字段类型。
返回类型:List-Map根字段类型的记录
要使用 record:dToMap() ,请使用斜杠作为根输出字段,如下所示:
record:dValue(<header name>)
返回与指定的头名称关联的值。
返回类型:String.
record:dValueAt(<header index>)
返回指定头索引位置的值。
返回类型:String.

Error Record Functions

错误记录函数提供有关错误记录的信息。使用错误函数来处理错误记录。

例如,您可以在Stream Selector中使用错误功能,根据发生的错误类型将数据传递到不同的错误处理管道。

在Data Collector Edge管道中无效。 不要在Data Collector Edge管道中使用错误记录函数。

表达式语言提供以下错误函数:

record:errorCode()
返回错误记录的错误代码。
返回类型:String.
record:errorCollectorId()
返回将记录发送到错误的数据收集器的ID 。
默认情况下,Data Collector ID 使用格式 <hostname>:<port>. 您可以在“Data Collector Configuration”页面验证“Data Collector ID”。
返回类型: String.
record:errorMessage()
返回错误记录的错误消息。
返回类型:String.
record:errorPipeline()
将记录发送到错误的管道的名称。
返回类型:String.
record:errorStackTrace()
返回错误记录的错误堆栈跟踪。
返回类型:String.
record:errorStage()
返回将记录发送到错误的阶段的实例名称。
您可以在阶段的“Genaral”选项卡上验证实例名称。
返回类型:String.
record:errorStageLabel()
返回将记录发送到错误的阶段的用户定义标签。
返回类型:String.
record:errorTime()
记录发送到错误的时间。
返回类型:Long.

Base64 Functions

使用Base64函数可使用Base64编码或解码数据。

您可以将任何参数替换为文字或表达式的表达式。字符串文字必须用单引号或双引号引起来。

在Data Collector Edge管道中无效。不要在Data Collector Edge管道中使用Base64函数。

表达式语言提供以下Base64函数:

base64:decodeBytes(<string>)
从Base64编码的字符串返回一个解码的字节数组。
返回类型:Byte Array.
使用以下参数:

  • string – 要解码的Base64编码的字符串。
例如, ${base64:decodeBytes(record:value(“/ID”))} 将ID字段中的Base64编码的字符串解码为字节数组值。
base64:decodeString(<string>, <charset>)
使用指定的字符集从Base64编码的字符串返回解码后的字符串。
返回类型:String.
使用以下参数:
  • string – 要解码的Base64编码的字符串。
  • charset – 用于解码数据的字符集。
例如, ${base64:decodeString(record:value(“/ID”), “UTF-8”)} 使用UTF-8字符集作为字符串值来解码ID字段中的Base64编码的字符串。
base64:encodeBytes(<byte array>, <urlSafe: true | false>)
返回指定字节数组的Base64编码的字符串值。
返回类型:String.
使用以下参数:

  • byte array – 使用Base64编码的字节数组。
  • urlSafe – 设置为true时,对数据进行编码,以便可以安全地将其发送到URL中。
例如, ${base64:encodeBytes(record:value(“/ID”), true)} 使用Base64对ID字段中的字节数组进行编码,以使编码后的数据是URL安全的。
base64:encodeString(<string>, <urlSafe: true | false>, <charset>)

返回指定字符串的Base64编码的字符串值。

返回类型:String.
使用以下参数:
  • string – 使用Base64编码的字符串。
  • urlSafe – 设置为true时,对数据进行编码,以便可以安全地将其发送到URL中。
  • charset – 用于编码数据的字符集。
例如, ${base64:encodeString(record:value(“/ID”), false, “UTF-8”)} 使用Base64使用UTF-8字符集对ID字段中的字符串进行编码,以使编码后的数据非URL安全。

Credential Functions

使用凭据函数可从以下凭据存储系统中检索凭证值:

  • AWS Secrets Manager
  • CyberArk
  • Hashicorp Vault
  • Java keystore
  • Microsoft Azure Key Vault

在Data Collector Edge管道中无效。不要在Data Collector Edge管道中使用凭据函数。

使用凭据函数之前,必须配置Secrets Manager,Cyber​​Ark,Hashicorp Vault,Java密钥库或Azure Key Vault 凭据存储

您可以在需要凭据(例如用户名或密码)的阶段中使用凭据函数,以安全地访问外部系统中的数据。凭据函数允许管道访问外部系统,而无需暴露凭证值。

您不能在所有阶段都使用凭据函数。例如,我们故意不允许在Expression Evaluator处理器中使用凭据函数。如果在诸如Expression Evaluator之类的阶段中允许凭据函数,则任何有权访问管道的用户都可以访问或打印凭据值,从而损害了外部系统的安全性。

重要提示:在stage属性中使用凭据函数时,该函数必须是该属性中定义的唯一值。例如,您不能在凭据函数中包含另一个函数或文字值。

字符串文字必须用单引号或双引号引起来。

表达式语言提供以下凭据函数:

credential:get(<storeId>, <userGroup>, <name>)
从凭据存储中返回凭据值。使用以下参数:

  • storeId – 要使用的凭据存储的唯一ID。输入 aws以访问AWS Secrets Manager凭证存储,cyberark访问Cyber​​Ark凭证存储,jks访问Java密钥库凭证存储,vault访问Hashicorp Vault凭证存储或azure访问Azure Key Vault凭证存储。
  • userGroup – 用户必须属于的组才能访问凭据。只有对管道具有执行许可权且属于该组的用户才能验证,预览或运行检索凭证值的管道。

    如果使用Control Hub,请使用所需的命名约定指定组:<group ID>@<organization ID>。要授予所有用户访问权限,请仅在使用Data Collector时指定默认的“all”组,或在使用Control Hub时指定默认的“all@<organization ID>”组。

  • name – 要从凭据存储中检索的凭证值的名称。对凭据存储使用必需的格式:
    • AWS Secrets Manager – 使用以下格式输入凭据名称:

      "<name><separator><key>"

      <name> 是要读取的密码的名称, <separator> 是 $SDC_CONF/credential-stores.properties 文件中定义的分隔符,<key>是您要返回的值的密钥。

    • CyberArk – 使用以下格式输入凭据名称:

      "<safe><separator><folder><separator><object name><separator><element name>"

      <safe> 是要读取的CyberArk safe, <separator> 是 $SDC_CONF/credential-stores.properties 文件中定义的分隔符, <folder> 是要读取的CyberArk目录, <object name> 是要读取的CyberArk对象, <element name> 是要返回的值的名称。

    • Hashicorp Vault – 使用以下格式输入凭据名称:

      "<path><separator><key>"

      <path> 是要读取的Vault路径, <separator> 是 $SDC_CONF/credential-stores.properties 文件中定义的分隔符, <key> 是要返回的值的键。

    • Java keystore – 使用jks-cs add 命令输入添加到Java密钥库文件中的凭证名称。
    • Azure Key Vault – 输入要从Azure密钥保管库检索的密钥或机密的名称。
返回类型: String.
例如,以下表达式返回在Java密钥库凭据存储中定义的OracleDBPassword凭据的值,并允许在验证,预览或运行管道时属于devops组的所有用户访问该凭据:

${credential:get("jks", "devops", "OracleDBPassword")}
credential:getWithOptions(<storeId>, <userGroup>, <name>, <storeOptions>)
使用其他选项与凭证存储区通信,从凭证存储区返回凭证值。不适用于Java密钥库凭证存储。
例如,将此函数与Cyber​​Ark凭据存储一起使用,以定义函数中凭据名称的分隔符。或者,当您可能需要10秒钟或更长时间才能成功使用凭据时,请对Hashicorp Vault凭据存储使用此函数。
使用以下参数:
  • storeId – 要使用的凭据存储的唯一ID。输入 aws以访问AWS Secrets Manager凭证存储,cyberark访问Cyber​​Ark凭证存储,jks访问Java密钥库凭证存储,vault访问Hashicorp Vault凭证存储或azure访问Azure Key Vault凭证存储。
  • userGroup – 用户必须属于的组才能访问凭据。只有对管道具有执行许可权且属于该组的用户才能验证,预览或运行检索凭证值的管道。

    如果使用Control Hub,请使用所需的命名约定指定组:<group ID>@<organization ID>。要授予所有用户访问权限,请仅在使用Data Collector时指定默认的“all”组,或在使用Control Hub时指定默认的“all@<organization ID>”组。

  • name – 要从凭证存储中检索的凭证值的名称。对凭证存储使用必需的格式:
    • AWS Secrets Manager – 使用以下格式输入凭据名称:

      "<name><separator><key>"

      <name> 是要读取的密码的名称, <separator> 是 $SDC_CONF/credential-stores.properties 文件中定义的分隔符,<key>是您要返回的值的密钥。

    • CyberArk – 使用以下格式输入凭据名称:

      "<safe><separator><folder><separator><object name><separator><element name>"

      <safe> 是要读取的CyberArk safe, <separator> 是 $SDC_CONF/credential-stores.properties 文件中定义的分隔符, <folder> 是要读取的CyberArk目录, <object name> 是要读取的CyberArk对象, <element name> 是要返回的值的名称。

    • Hashicorp Vault – 使用以下格式输入凭据名称:

      "<path><separator><key>"

      <path> 是要读取的Vault路径, <separator> 是 $SDC_CONF/credential-stores.properties 文件中定义的分隔符, <key> 是要返回的值的键。

    • Azure Key Vault – 输入要从Azure密钥保管库检索的密钥或机密的名称。
  • storeOptions – 与凭证存储进行通信的其他选项。

    对于AWS Secrets Manager,您可以使用以下选项:

    • separator-指定凭据功能中名称和键值的分隔符,从而覆盖 credentialStore.aws.config.nameKey.separator 属性。
    • alwaysRefresh-设置为true时,在Data Collector检索值覆盖 credentialStore.aws.config.nameKey.separator 属性之前,强制键刷新其缓存的值。

    对于Cyber​​Ark,可以使用以下选项:

    • separator -用于凭证名称的分隔符。
    • ConnectionTimeout -连接超时值。
    • FailRequestOnPasswordChange -是否在密码更改后失败请求,设置为true或false。

    对于Hashicorp Vault,您可以使用该delay 选项输入延迟(以毫秒为单位),以留出时间进行外部处理。使用Vault AWS机密后端基于IAM策略生成AWS访问凭证时,请使用delay选项。根据Vault文档,您可能需要等待10秒或更长时间才能成功使用凭据。

    对于Azure Key Vault,您可以使用以下选项来覆盖$SDC_CONF/credential-stores.properties 文件中的多个属性 :

    • url -覆盖credentialStore.azure.config.vault.url属性。
    • retry -覆盖credentialStore.azure.config.credential.retry.millis属性。
    • refresh -覆盖credentialStore.azure.config.credential.refresh.millis属性。

    使用以下格式来指定选项:

    "<option1>=<value>,<option2>=<value>"

    例如,要将管道符号(|)用作Cyber​​Ark分隔符,请为options参数输入以下内容:

    "separator=|"

    或将保管库延迟设置为1,000毫秒,为options参数输入以下内容:

    "delay=1000"
返回类型:String.

例如,以下表达式在等待1,000毫秒的延迟后返回存储在Vault路径/secret/databases/oracle中的密钥密码的值。凭据名称参数使用默认的与号(&)作为分隔符。该表达式允许在验证,预览或运行管道时,属于devops组的所有用户都可以访问凭证:

${credential:getWithOptions("vault", "devops", "/secret/databases/oracle&password", "delay=1000")}

Category Functions

类别函数是仅在使用某些保护方法(例如Expression EvaluatorStandard MaskCustom Mask)Data Protector保护过程中使用的函数。

类别函数返回某些数据类别的一部分,例如电话号码的区号或电子邮件地址的域。类别功能使您可以保护敏感数据,同时保留部分原始数据以供处理。

例如,要在保留区号的同时保护电话号码,可以配置保护过程以使用Expression Evaluator保护方法。然后,您可以在过程中使用以下表达式之一:
  • Area code ${US_PHONE:areaCode()} – 使用 Area code <area code>代替电话号码。
  • ${US_PHONE:areaCode()}-xxx-xxxx – 这将返回电话号码的区号,并删除其余的号码,如下所示: <area code>-xxx-xxxx

    要获得相同的结果,您可以选择使用标准掩码保护方法并使用以下掩码:123-xxx-xxxx

必要时,您可以使用类别函数来标准化可用类别的数据

您可以将类别函数用于以下类型的数据:

  • 信用卡号
  • 电子邮件地址
  • 电话号码
  • 社会安全号码
  • 邮编

Credit Card Numbers

Data Protector 为信用卡号提供以下类别函数:

CREDIT_CARD:type()
返回信用卡,该数字代表类型: AMERICAN_EXPRESSMASTERCARD或 VISA
返回类型:String.
例如,评估时5200-1200-3400-5600,此函数返回MASTERCARD
CREDIT_CARD:firstGroup()
返回信用卡号的第一个数字组。
返回类型:String.
例如,评估时5200-1200-3400-5600,此函数返回5200
CREDIT_CARD:secondGroup()
返回信用卡号的第二个数字组。
返回类型:String.
例如,评估时5200-1200-3400-5600,此函数返回1200
CREDIT_CARD:thirdGroup()
返回信用卡号的第三个数字组。
返回类型:String.
例如,评估时5200-1200-3400-5600,此函数返回3400。评估时 3700-000000-00000,此函数返回 00000
CREDIT_CARD:fourthGroup()
返回信用卡号的第四个数字组。当信用卡号不包括第四个数字组时(例如仅具有三个组的美国运通卡号),此函数将返回一个空字符串。
要返回所有信用卡号的最后一组,请使用 CREDIT_CARD:lastPart()
返回类型:String.
例如,评估时5200-1200-3400-5600,此函数返回5600。评估时 3700-000000-00000,此函数返回一个空字符串。
CREDIT_CARD:lastPart()
返回信用卡号的最后一组。对于万事达卡(Mastercard)和维萨卡(Visa)号,返回最后四位数字。对于美国运通号码,返回最后五个数字。
返回类型:String.
例如,评估时5200-1200-3400-5600,此函数返回5600。评估时 370000000000000,此函数返回 00000
CREDIT_CARD:std()
以标准数字组返回信用卡号,用连字符分隔。
返回类型:String.
例如,当评估诸如的美国运通号码时 370000000000000,此函数返回 3400-000000-00000。当评估诸如这样的签证号码时5200000000000000,此函数返回 5200-0000-0000-0000

Email Addresses

Data Protector为电子邮件地址提供以下类别函数:

EMAIL:domain()
返回电子邮件地址的域。域是@符号后的所有内容。
返回类型:String.
例如,评估时myname@mydomain.com,此函数返回mydomain.com
EMAIL:domainTLD()
回电子邮件地址的顶级域(TLD)。TLD是域的最后一部分,例如com,gov或org。
返回类型:String.
例如,评估时myname@mydomain.com,此函数返回com
EMAIL:domainWithoutTLD()
返回不包含电子邮件地址的TLD部分的域。
返回类型:String.
例如,评估时myname@mydomain.com,此函数返回mydomain
EMAIL:localPart()
返回电子邮件地址的本地部分。本地部分是@符号之前的所有内容。
返回类型:String.
例如,评估时myname@mydomain.com,此函数返回myname
EMAIL:std()
以以下标准格式返回电子邮件地址:

<local part>@<domain>
如:name@company.com
返回类型:String.
例如,评估时myname@mydomain.com,此函数返回myname@mydomain.com

Phone Numbers

Data Protector为电话号码提供以下类别函数:

US_PHONE:areaCode()
返回美国电话号码的区号。区号是十位电话号码的前三位。
当电话号码不包含区号时,此函数将返回一个空字符串。
返回类型:String.
例如,评估时444-333-5555,此函数返回444
US_PHONE:areaCodeOrDefault(<default value>)
返回美国电话号码的区号。当数据不包含可识别的区号时,该函数将返回指定的默认值。
使用以下参数:

  • default value -电话号码不包含区号时使用的默认值。
返回类型:String.
例如,由于电话号码没有区号,因此以下表达式xxx在评估时返回默认值 989-2222

${US_PHONE:areaCodeOrDefault('xxx')}
US_PHONE:exchangeCode()
返回美国电话号码的总局代码或交换代码。交换代码是十位电话号码的后三位数字。
返回类型:String.
例如,评估时444-333-5555,此函数返回333
US_PHONE:lineNumber()
返回美国电话号码的线路号或用户号码。线路号是十位电话号码的最后四位数字。
返回类型:String.
例如,评估时444-333-5555,此函数返回5555
US_PHONE:extension()
返回与美国电话号码关联的分机号。此功能要求分机号是电话号码之后的一组数字,并以x。开头。当电话号码使用以下格式之一时,此功能可以识别分机号:

<phone number>x<extension>
<phone number> x<extension>
当电话号码不包含分机号时,此函数将返回一个空字符串。
返回类型:String.
例如,评估时444-333-5555 x123,此函数返回123
US_PHONE:extensionOrDefault(<default value>)
返回与美国电话号码关联的分机号。当数据不包含可识别的扩展名时,该函数将返回指定的默认值。当电话号码使用以下格式之一时,此功能可以识别分机号:

<phone number>x<extension>
<phone number> x<extension>
使用以下参数:

  • default value – 电话号码不包含分机号时使用的默认值。
返回类型:String.
例如,NA在评估时,以下表达式返回,444-333-5555因为数字没有扩展名:

${US_PHONE:extensionOrDefault('NA')}
US_PHONE:std()
使用以下标准格式返回美国电话号码:

+1 (<area code>) <exchange>-<line number> [x<extension>]

如:+1 (xxx)xxx-xxxx

返回类型:String.
例如,评估时555-777-1111,此函数返回+1 (555) 777-1111
在评估带有扩展名的数字时,例如555-777-1111 x 23,此函数返回:+1 (555) 777-1111 x23

Social Security Numbers

Data Protector为社会保险号提供以下类别函数:

US_SSN:areaNumber()
返回美国社会保险号的区域号。区域号码是社会安全号码的前三位数字。
返回类型:String.
例如,评估时333-22-1111,此函数返回333
US_SSN:groupNumber()
返回美国社会保险号的组号。组号是社会保险号的第四和第五个数字。
返回类型:String.
例如,评估时333-22-1111,此函数返回22
US_SSN:serialNumber()
返回美国社会保险号的序列号。序列号是社会保险号的后四位。
返回类型:String.
例如,评估时333-22-1111,此函数返回1111
US_SSN:std()
以以下标准格式返回社会保险号:

<area number>-<group number>-<serial number>
如:xxx-xxx-xxxx
返回类型:String.
例如,评估时123456789,此函数返回123-45-6789

Zip Codes

Data Protector为邮政编码提供以下类别函数:

US_ZIP_CODE:stateGroup()
返回美国邮政编码的状态组。状态组是邮政编码的第一位。
返回类型:String.
例如,评估时94105-2376,此函数返回9
US_ZIP_CODE:region()
返回美国邮政编码的区域或地区中心设施(SCF)。区域组是邮政编码的第二位和第三位。
返回类型:String.
例如,评估时94105-2376,此函数返回41
US_ZIP_CODE:cityArea()
返回美国邮政编码的城市或城镇地区编号。城镇地区是邮政编码的第四位和第五位。
返回类型:String.
例如,评估时94105-2376,此函数返回05
US_ZIP_CODE:specificLocation()
返回特定的地理位置,它是9位美国邮政编码的最后四位数字。特定地理位置也称为邮政编码的+4部分。
当邮政编码不包含特定地理位置时,此函数将返回一个空字符串。
返回类型:String.
例如,评估时94105-2376,此函数返回2376
US_ZIP_CODE:specificLocationOrDefault(<default>)
返回特定的地理位置,它是9位美国邮政编码的最后四位数字。特定地理位置也称为邮政编码的+4部分。当邮政编码不包含特定地理位置时,此函数将返回用户定义的默认值。
使用以下参数:

  • default-邮政编码为5位而不是9位时使用的默认值。
返回类型:String.
例如,每次函数评估5位数的邮政编码时,${US_ZIP_CODE:specificLocationOrDefault('no +4')}返回no +4
US_ZIP_CODE:std()
以下列标准格式之一返回邮政编码:

<five digit zip>
<five digit zip>-<specific location>
返回类型:String.
例如,评估时32222,此函数返回 32222。评估时322224444,此函数返回32222-4444

Data Drift Functions

使用数据漂移函数可在发生数据漂移时创建警报。您可以在数据漂移规则中使用这些函数。

您可以将任何参数替换为文字或表达式的表达式。字符串文字必须用单引号或双引号引起来。

在Data Collector Edge管道中无效。不要在Data Collector Edge管道中使用数据漂移函数。

表达式语言提供以下数据漂移函数:
drift:names(<field path>, <ignoreWhenMissing: true | false>)
当键值在地图或列表地图字段中更改时触发警报。如果键值是字段名称,则在字段名称更改时触发警报。与列表地图或地图字段一起使用。

使用ignoreWhenMissing标志来确定缺少该字段时的行为。设置为“true”时,缺少字段不会导致任何错误。当设置为“false”时,缺少字段会为缺少该字段的记录以及包含该字段的下一条记录生成警报。

例如,要在记录中的任何字段名称更改时触发警报并忽略空记录,可以使用表达式中的根字段,如下所示:

${drift:names('/', true)}
drift:order(<field path>, <ignoreWhenMissing: true | false>)
当列表映射字段中的字段的字段顺序更改时,触发警报。仅用于列表映射字段。
请注意,此功能也会在字段名称更改时触发警报。

使用ignoreWhenMissing标志来确定缺少该字段时的行为。设置为“true”时,缺少字段不会导致任何错误。当设置为“false”时,缺少字段会为缺少该字段的记录以及包含该字段的下一条记录生成警报。

要警告分隔记录中的字段顺序或名称更改并忽略空记录,请按如下所示使用根字段:

${drift:order('/', true)}
drift:size(<field path>, <ignoreWhenMissing: true | false>)
当列表,列表映射或映射字段中的字段数更改时触发警报。与列表,列表映射或映射字段一起使用。

使用ignoreWhenMissing标志来确定缺少该字段时的行为。设置为“true”时,缺少字段不会导致任何错误。当设置为“false”时,缺少字段会为缺少该字段的记录以及包含该字段的下一条记录生成警报。

要在“Depts”映射字段中的列数更改时以及当记录缺少“Depts”字段时发出警报,请使用以下表达式:

${drift:size('/Depts', false)}
drift:type(<field path>, <ignoreWhenMissing: true | false>)
当指定字段的数据类型更改时触发警报。仅评估指定的字段。

使用ignoreWhenMissing标志来确定缺少该字段时的行为。设置为“true”时,缺少字段不会导致任何错误。当设置为“false”时,缺少字段会为缺少该字段的记录以及包含该字段的下一条记录生成警报。

例如,要在ID字段的数据类型更改并且记录中不存在ID字段时接收警报,请使用以下表达式:

${drift:type('/ID', false)}

Data Generation Functions

数据生成函数是仅在使用某些保护方法(例如Expression Evaluator)时在Data Protector保护过程中使用的函数

数据生成函数会生成随机的伪造数据,您可以将其用作敏感数据的替代品。有两种数据生成函数:

  • Faker函数-生成特定类型的伪造数据,例如地址,名称和信用卡号。
  • Xeger函数-根据用户定义的正则表达式生成伪造数据。
两组函数都提供两种类型的输出:
Random
值是随机生成的,与输入值无关。每个替换的值都将替换为一个新的随机值。
例如,假设您使用randomFaker:email()生成伪造的电子邮件地址来替换用户电子邮件地址。在这种情况下,将为替换的每个用户电子邮件地址生成一个随机电子邮件地址。
Deterministic
当出现相同的输入值时,将重新使用生成的值。这使您可以在下游处理中确定重复出现的值,同时确保数据受到保护。
配置功能时,请指定输入值,以允许重新使用生成的值。
您可以使用任何逻辑表达式来定义输入值,但是以下是一些常见情况:

  • 要使用要替换的值,请使用字段函数 f:value()

    例如,假设您使用以下表达式确定性地生成替换URL ${deterministicFaker:url(f:value())}。并假设该表达式将www.RealCompanyName.com替换为www.fakename.com。每次www.RealCompanyName.com出现在URL字段中时,它将被相同的URL www.fakename.com取代。

  • 要使用记录中其他字段中的值,请使用 record:value()函数。

    例如,假设您要为匹配的UserID生成相同的假名。然后,您可以在“表达式计算器”保护方法中使用以下表达式来生成名字和姓氏:

    ${deterministicFaker:firstName(record:value('/UserID'))} ${deterministicFaker:lastName(record:value('/UserID'))}

    因此,如果函数Mia LakierR2204用户ID 生成,则 每次 R2204重新显示为ID时,函数都会用替换实名Mia Lakier

使用确定性函数可洞悉重复值的频率,同时保护敏感数据。

注意:确定性函数将生成的值重用于完全相同的输入值。格式不同的数据(例如,用短划线代替区域代码的括号)不被视为相同。为了获得最佳结果,请确保数据使用统一格式。必要时,您可以使用类别函数来标准化某些类别的数据。

Faker Functions

使用某些保护方法(例如Expression Evaluator)时,可以在Data Protector保护过程中使用伪造函数来生成假数据。

Faker函数具有两种类型的输出:随机和确定性。

以下伪造函数按类别列出。

Address-Related Data

对于与地址相关的数据,可以使用以下伪造函数:

deterministicFaker:country(<input>)
生成一个伪造的国家名称。将相同的生成国家/地区名称重复用于相同的输入值。使用以下参数:

  • input – 确定何时重新使用生成的国家/地区名称的值。
返回类型:String.
例如,以下表达式生成伪造的国家名称,并将相同的伪造名称重用于相同的输入值:
${deterministicFaker:country(f:value)}

因此,如果表达式生成Indonesia以替换Mexico,则每次Mexico出现在数据中时,它将替换为Indonesia

randomFaker:country()
生成一个伪造的国家名称。为每个输入值使用随机国家/地区名称。
返回类型:String.
deterministicFaker:UsCity(<input>)
在美国产生一个假城市。将相同的城市名称重用于相同的输入值。使用以下参数:

  • input-确定何时重新使用生成的城市名称的值。
返回类型:String.
randomFaker:UsCity()
在美国产生一个假城市。为每个输入值使用随机的城市名称。
返回类型:String.
deterministicFaker:UsFullAddress(<input>)
在美国产生伪造的完整地址。将相同的地址重用于相同的输入值。使用以下参数:

  • input-确定何时重新使用生成的地址的值。
返回类型:String.
randomFaker:UsFullAddress()
在美国产生伪造的完整地址。对每个输入值使用随机地址。
返回类型:String.
deterministicFaker:UsState(<input>)
生成伪造的美国州名。对相同的输入值重复使用相同的名称。使用以下参数:

  • input-确定何时重新使用生成的状态名称的值。
返回类型:String.
randomFaker:UsState()
生成伪造的美国州名。对每个输入值使用随机状态名称。
返回类型:String.
deterministicFaker:UsStreetAddress(<input>)
在美国生成伪造的街道地址。将相同的地址重用于相同的输入值。使用以下参数:

  • input-确定何时重新使用生成的地址的值。
返回类型:String
randomFaker:UsStreetAddress()
在美国生成伪造的街道地址。为每个输入值使用随机街道地址。
返回类型:String.
deterministicFaker:UsZipCode(<input>)
生成伪造的美国9位邮政编码。对相同的输入值重复使用相同的邮政编码。使用以下参数:

  • input-确定何时重新使用生成的邮政编码的值。
返回类型:String.
randomFaker:UsZipCode()
生成伪造的美国9位邮政编码。对每个输入值使用随机邮政编码。
返回类型:String.

Finance-Related Data

对于与财务相关的数据,可以使用以下伪造函数:

deterministicFaker:creditCard(<input>)
生成伪造的信用卡号。将相同的生成数字重复用于相同的输入值。使用以下参数:

  • input-确定何时重新使用生成的数字的值。
返回类型:String.
例如,以下表达式生成伪造的信用卡号,并且当id记录中的字段具有相同的ID 时,将重用伪造的数字:
${deterministicFaker:creditCard(record:value('/id'))}

假设某条记录的ID为0034并且伪造的信用卡号替换了该记录中的真实卡号。然后,每次随后的记录具有0034ID时,该功能都会使用相同的假信用卡号替换真实的信用卡号。

randomFaker:creditCard()
生成伪造的信用卡号。对每个输入值使用随机数。
返回类型:String.
deterministicFaker:creditCardOfType(<type>, <input>)
生成指定类型的伪造的信用卡号。将相同的生成数字重复用于相同的输入值。使用以下参数:

  • type-要生成的信用卡类型。使用下面的值之一:AMERICAN_EXPRESS, MASTERCARDVISA
  • input-确定何时重新使用生成的数字的值。对每个输入值使用随机数。
返回类型:String.
例如,以下表达式生成一个伪造的美国运通信用卡号,并在每次出现相同的信用卡号时重复使用相同的号码:
${deterministicFaker:creditCard('AMERICAN_EXPRESS', 'f:value()')}
randomFaker:creditCardOfType(<type>)
生成指定类型的伪造的信用卡号。对每个输入值使用随机数。使用以下参数:

  • type-要生成的信用卡类型。使用以下值:AMERICAN_EXPRESS, MASTERCARDVISA
返回类型:String.
例如,以下表达式生成一个随机的Visa信用卡号:
${randomFaker:creditCardOfType('VISA')}
deterministicFaker:iban(<input>)
生成伪造的国际银行帐号(IBAN)。将相同的生成数字重复用于相同的输入值。使用以下参数:

  • input-确定何时重新使用生成的数字的值。
返回类型:String.
randomFaker:iban()
生成伪造的IBAN。对每个输入值使用随机数。
返回类型:String.
deterministicFaker:ibanForCountry(<country code>, <input>)
为指定国家/地区生成伪造的IBAN。将相同的生成数字重复用于相同的输入值。使用以下参数:

  • country code – ISO-3166-1 alpha-2国家/地区代码,用于指示要生成的IBAN国家/地区格式。请注意,所有国家/地区中只有一部分拥有自己的IBAN格式。有关列表,请参见Wikipedia页面。
    提示:对于country code,您还可以使用第二个链接的“IBAN字段”列中列出的前两个字符。例如,阿尔巴尼亚的国家代码为AL,如下所示:

  • input – 确定何时重用生成的代码的值。
返回类型:String.
例如,以下表达式为哥斯达黎加创建伪造的IBAN,并在每次出现相同的国家/地区代码时重复使用相同的IBAN:

${deterministicFaker:ibanForCountry('CR','f:value()')}
randomFaker:ibanForCountry(<country code>)
为指定国家/地区生成伪造的IBAN。对每个输入值使用随机IBAN。使用以下参数:

  • country code – ISO-3166-1 alpha-2国家/地区代码,用于指示要生成的IBAN国家/地区格式。请注意,所有国家/地区中只有一部分拥有自己的IBAN格式。有关列表,请参见Wikipedia页面
    提示:对于country code,您还可以使用第二个链接的“IBAN字段”列中列出的前两个字符。例如,阿尔巴尼亚的国家代码为AL,如下所示:

返回类型:String.
例如,以下表达式为每个输入值生成一个随机的阿尔巴尼亚语IBAN:

${randomFaker:ibanForCountry('AL')}

Internet-Related Data

对于与Internet相关的数据,可以使用以下伪造函数:

deterministicFaker:email(<input>)
生成伪造的电子邮件地址。将相同的生成地址重用于相同的输入值。使用以下参数:

  • input-确定何时重新使用生成的地址的值。
返回类型:String.
例如,以下表达式生成伪造的电子邮件地址,并在看到相同的输入电子邮件地址时重新使用伪造的地址:

${deterministicFaker:email(f:value)}

因此,如果表达式生成jo@nys.com以替换电子邮件地址,则每次相同的电子邮件地址出现在数据中时,都会被替换jo@nys.com

randomFaker:email()
生成伪造的电子邮件地址。为每个输入值使用随机电子邮件地址。
返回类型:String.
deterministicFaker:url(<input>)
生成伪造的URL。将相同的生成URL重复用于相同的输入值。使用以下参数:

  • input-确定何时重新使用生成的URL的值。
返回类型:String.
randomFaker:url()
生成伪造的URL。对每个输入值使用随机URL。
返回类型:String.

Person-Related Data

对于与人相关的数据,可以使用以下伪造函数:

deterministicFaker:race(<input>)
产生假种族。将相同的生成种族重新用于相同的输入值。使用以下参数:

  • input-确定何时重用生成的值的值。
返回类型:String.
例如,以下表达式生成假种族并在看到相同的输入值时使用相同的假值:

${deterministicFaker:race(f:value)}

因此,如果表达式生Japanese成为replace Thai,则每次Thai出现在数据中时,它将替换为Japanese

randomFaker:race()
产生假种族。对每个输入值使用随机竞赛。
返回类型:String.
deterministicFaker:UsFirstName(<input>)
生成伪造的美国名字。将相同的生成名称重用于相同的输入值。使用以下参数:

  • input-确定何时重用生成的名称的值。
返回类型:String.
例如,以下表达式生成伪造的名字,并在记录中的ID字段具有相同ID时重用伪造名字:

${deterministicFaker:UsFirstName(record:value('/id'))}

因此,如果表达式Joan在ID为的记录中生成1234,则每当后续记录具有 1234ID时,该函数都会返回 Joan

randomFaker:UsFirstName()
生成伪造的美国名字。为每个输入值使用随机名称。
返回类型:String.
deterministicFaker:UsLastName(<input>)
生成伪造的美国姓氏。将相同的生成名称重用于相同的输入值。使用以下参数:

  • input-确定何时重用生成的名称的值。
返回类型:String.
randomFaker:UsLastName()
生成伪造的美国姓氏。为每个输入值使用随机名称。
返回类型:String.
deterministicFaker:UsPhone(<input>)
生成伪造的美国电话号码。对相同的输入值重复使用相同的数字。使用以下参数:

  • input-确定何时重新使用生成的数字的值。
返回类型:String.
randomFaker:UsPhone()
生成伪造的美国电话号码。对每个输入值使用随机数。
返回类型:String.
deterministicFaker:UsSsn(<input>)
生成伪造的美国社会保险号。对相同的输入值重复使用相同的数字。使用以下参数:

  • input-确定何时重新使用生成的数字的值。
返回类型:String.
randomFaker:UsSsn()
生成伪造的美国社会保险号。对每个输入值使用随机数。
返回类型:String.

Xeger Functions

Xeger函数根据用户定义的正则表达式生成伪造数据。 使用某些保护方法(例如Expression Evaluator),可以在Data Protector保护过程中使用xeger函数。

使用xeger功能之前,检查是否有伪造函数生成的数据,你正在寻找的类型。

您可以将xeger函数与category函数一起使用以生成随机数据,同时保留原始数据的某些部分。例如,以下表达式基于[az]{5,10}生成伪造的用户名,并在email字段中出现相同的电子邮件地址时重新使用它。然后,它将伪造的用户名附加到与输入电子邮件地址关联的真实域中:

${xeger:deterministic(‘[a-z]{5,10}’, record:value('/email')}@${EMAIL:domain()}

生成的用户名如下:<fake username>@<real domain>。若要在过程中使用此表达式,请将该过程设置为根据字段名称进行评估,将字段名称设置为*/email,然后将该表达式与Expression Evaluator保护方法一起使用。

您可以使用以下xeger函数:

xeger:deterministic(<regular expression>, <input>)
根据正则表达式定义的数据结构生成伪造数据。当输入值相同时,重复使用相同的伪数据。使用以下参数:

  • regular expression-定义要生成的假数据结构的正则表达式。
  • input-确定何时重用生成的值的值。
返回类型:String.
例如,以下表达式生成一个伪造的社会保险号,并在具有相同用户标识的记录中重用该号码:

${xeger:deterministic('[0-9]{3}-[0-9]{2}-[0-9]{4}', record:value('/userId')}

因此,当表达式为用户ID为的记录生成伪造的社会保险号时55343,每次 55343出现用户ID时,表达式都会返回相同的伪造的社会保险号。尽管社会安全号码可能并非严格有效,但数据受到了保护。

xeger:random(<regular expression>)
根据正则表达式定义的数据结构生成伪造数据。为每个输入值生成新的伪数据。使用以下参数:

  • regular expression-定义要生成的假数据结构的正则表达式。
返回类型:String.

Field Functions

您可以在字段路径表达式中使用字段函数,以确定处理器使用的字段集。每个函数将分别针对一组匹配字段进行评估。

在Data Collector Edge管道中无效。不要在Data Collector Edge管道中使用字段函数。

有关字段路径表达式的更多信息,请参见“字段路径表达式”。有关可以使用字段功能的阶段列表,请参阅支持的阶段。

f:attribute(<attribute name>)
返回指定字段属性的值。
使用以下参数:

  • attribute name-指定字段属性名称的字符串。
返回类型:String.
以下字段路径表达式仅返回将region属性设置为的字段 west
/*[${f:attribute('region') == 'west'}]
f:getSiblingWithName(<field name>)
返回具有相同名称的同级字段(具有相同父字段的字段)(<field name>如果存在)。
使用以下参数:

  • field name-指定字段名称的字符串。
返回类型:Field

注意:返回的字段对象支持 value()type()字段功能。
例如,以下表达式从名为的同级字段中返回值 SalePrice
${f:getSiblingWithName('SalePrice').value}
f:hasSiblingWithName(<field name>)
返回true如果有一个名称匹配同级字段<field name>,否则返回 false
使用以下参数:

  • field name-指定字段名称的字符串。
返回类型:Boolean.
例如,如果存在一个名为SalePrice的同级字段 ,则以下条件表达式将返回true
${f:hasSiblingWithName('SalePrice')}
f:hasSiblingWithValue(<field name>, <field value>)
返回true如果有一个名称匹配同级领域<field name>具有价值匹配 <field value>,否则返回 false
使用以下参数:

  • field name-指定字段名称的字符串。
  • field value-存储在字段中的值。该字段确定数据类型。
返回类型:Boolean.
例如,如果存在一个名为SalePriceFloat值为0.99 的同级字段 ,则以下条件表达式返回true
${f:hasSiblingWithValue('SalePrice',0.99)}
f:index()
返回父列表字段中的索引。如果该字段不在列表中,则返回-1。
返回类型:Integer.
例如,以下条件表达式trueRankedItem列表字段返回 第一个字段(索引为0的字段):
${str:endsWith(f:parentPath(),"/RankedItem") && f:index() == 0}
f:name()
返回字段名称。
返回类型:String.
例如,您可以在Data Protector保护过程中使用此功能,用字段名称(例如)替换敏感数据,例如社会保险号 ssn
f:parent()
返回父字段。
返回类型:Field.

注意:返回的字段对象支持 value()type()字段功能。
例如,true如果父字段是地图字段,则返回以下条件表达式 :
${f:parent().type =='MAP')}
f:parentPath()
返回父字段的路径。
返回类型:String.
例如,true如果父字段路径以结尾, 则返回以下条件表达式 Item
${str:endsWith(f:parentPath(),'Item')}
f:path()
返回字段的路径。用于返回具有指定路径或路径在表达式中定义的位置的字段。
返回类型:String.
例如,以下字段路径表达式返回所有日期时间字段,但audit_date字段除外:
/*[${f:type() == 'DATETIME' && f:path() != '/audit_date'}]
f:type()
返回字段的数据类型。用于返回具有指定类型或表达式中定义的字段类型的字段。
重要说明:在表达式中指定数据类型时,请使用所有大写字母,并将字符串括在引号中。有关有效数据类型的列表,请参见Data Collector数据类型。
返回类型:String.
例如,以下字段路径表达式返回所有布尔字段:
/*[${f:type() == 'BOOLEAN'}]
f:value()
返回该字段的值。用于返回具有指定值或表达式中定义的值的字段。
返回类型:取决于字段类型。
例如,以下字段路径表达式仅返回值大于0的字段。
/*[${f:value() > 0}]

File Functions

使用文件函数可返回有关文件名或路径的信息。例如,您可以使用文件函数从文件路径中删除文件扩展名或返回路径的一部分。

您可以将任何参数替换为文字或表达式的表达式。字符串文字必须用单引号或双引号引起来。

在Data Collector Edge管道中无效。不要在Data Collector Edge管道中使用文件函数。

表达式语言提供以下文件函数:
file:fileExtension(<filepath>)
从文件路径返回文件扩展名。使用以下参数:

  • filepath-文件的绝对路径。
返回类型:String.
例如,以下表达式返回"txt"
${file:fileExtension('/logs/weblog.txt')}
file:fileName(<filepath>)
从文件路径返回文件名。使用以下参数:

  • filepath-文件的绝对路径。
返回类型:String.
例如,以下表达式返回文件名 "weblog.txt"
${file:fileName('/logs/weblog.txt')}
file:parentPath(<filepath>)
与文件路径一起使用时,返回不带最终分隔符的文件路径,例如 /files 对于 /files/file.log.
与目录路径一起使用时,不带最终分隔符就返回目录路径,例如 /serverA/logs 对于 /serverA/logs/2016.
使用以下参数:

  • filepath-文件的绝对路径。
返回类型:String.
例如,以下表达式(包括文件路径)返回 "/serverB/logs"

${file:parentPath('/serverB/logs/weblog.txt')}
同样,以下表达式(包括目录路径)返回父目录 "/serverB/logs"
${file:parentPath('/serverB/logs/weblogs')}
file:pathElement(<filepath>, <integer>)
根据指定的整数返回路径的一部分。使用以下参数:

  • filepath-文件的绝对路径。
  • integer-要返回的路径部分。可以从路径的左侧或右侧返回零件:
    • 要返回路径的一部分(从路径的左侧开始计数),请使用0和正整数,并从0开始。
    • 要返回路径的一部分(从路径的右侧开始计数),请使用负整数并以-1开头。
返回类型:String.
例如,要返回路径的日志部分,可以使用以下任一表达式:
${file:pathElement('/logs/weblog.txt',0)}
${file:pathElement('/logs/weblog.txt',-2)}
file:removeExtension(<filepath>)
返回不带文件扩展名的文件路径。使用以下参数:

  • filepath-文件的绝对路径。
返回类型:字符串。
例如,以下表达式返回 "/logs/weblog"
${file:removeExtension('/logs/weblog.txt')}

Job Functions

使用作业函数返回有关Control Hub作业的信息。例如,您可以使用作业函数返回运行管道的作业的名称。

您可以将任何参数替换为文字或表达式的表达式。字符串文字必须用单引号或双引号引起来。

表达式语言包括以下作业函数:
job:id()
如果管道是从Control Hub作业运行的,则返回作业的ID 。否则,返回 “UNDEFINED”。
返回类型:String.
job:name()
如果管道是从Control Hub作业运行的,则返回作业的名称。否则,返回 “UNDEFINED”。
返回类型:String.
job:startTime()
如果管道是从Control Hub作业运行的,则返回作业的开始时间。否则,返回管道的开始时间。
返回类型:Datetime.
job:user()
如果管道是从Control Hub作业运行的,则返回启动该作业的用户。否则,返回 “UNDEFINED”。
返回类型:String.

Math Functions

使用数学函数对数值进行数学运算。

您可以将任何参数替换为文字或表达式的表达式。字符串文字必须用单引号或双引号引起来。

您可以将以下数据类型与数学函数一起使用:
  • Double
  • Float
  • Integer
  • Long
  • String
    注意: 如果String字段中的数字值包含点(.),则Data Collector会将字符串解析为Double值。否则,Data Collector会将字符串解析为Long值。

    某些功能在Data Collector Edge管道中可能无效。

    表达式语言提供以下数学函数:
math:abs(<number>)
返回参数的绝对值或正数版本。如果参数已经为正,则返回原始数字。
Return type: Double, Float, Int, 或Long,取决于参数的数据类型。
math:ceil(<number>)
返回大于或等于参数的最小整数。
例如,${math:ceil(8.0+3.6)} 返回 12.0.
返回类型:Double.
math:floor (<number>)
返回大于或等于参数的最大整数。
返回类型:Double.
math:max(<number1>, <number2>)
返回两个参数中的较大者。
例如,如果tip_amount字段的值为2.5,而fare_amount字段的值为12.5,则${math:max(record:value(“/tip_amount”), record:value(“/fare_amount”))} 返回 12.5.
返回类型:Double, Float, Int, or Long,取决于参数的数据类型。
math:min(<number1>, <number2>)
返回两个参数中的较小者。
返回类型:Double, Float, Int, or Long,取决于参数的数据类型。
math:round(<number>)
返回最接近参数的数字,四舍五入。
返回类型:Double 或 Long.

Pipeline Functions

使用管道函数来确定有关管道的信息,例如管道标题或ID。表达式语言提供以下管道函数:

pipeline:id()
返回管道的ID。该ID是创建管道时自动生成的UUID,供Data Collector用于标识管道。无法更改管道ID。
返回类型:String.
例如,您可以将函数包含在Hadoop FS目标的目录模板中,以在输出目录名称中包含管道ID。以下表达式根据管道ID和记录的时间戳创建输出目录:
/outputfiles/${pipeline:id()}/${YYYY()}-${MM()}-${DD()}-${hh()}
pipeline:name()
与一样pipeline:id,此函数返回管道的ID。该ID是创建管道时自动生成的UUID,供Data Collector用于标识管道。无法更改管道ID。
在2.3.0.0之前的Data Collector版本中,此函数返回管道名称。保留此功能是为了向后兼容。对新开发使用 pipeline:id
返回类型:String.
例如,您可以将函数包含在Hadoop FS目标的目录模板中,以在输出目录名称中包含管道ID。以下表达式根据管道ID和记录的时间戳创建输出目录:
/outputfiles/${pipeline:name()}/${YYYY()}-${MM()}-${DD()}-${hh()}
pipeline:startTime()
返回管道的开始时间。

返回类型:Datetime.

pipeline:title()
返回管道的标题或名称。
返回类型:String.
pipeline:user()
返回启动管道的用户。
返回类型:String.
pipeline:version()
当管道已发布到StreamSets Control Hub时,返回管道版本。如果管道尚未发布到Control Hub,则返回“UNDEFINED” 。注册了Data Collector以使用Control Hub时,请使用此功能。
返回类型:String.

String Functions

使用字符串函数来转换字符串数据。

您可以将任何参数替换为文字或表达式的表达式。字符串文字必须用单引号或双引号引起来。

某些功能在Data Collector Edge管道中可能无效。

表达式语言提供以下字符串函数:

str:concat(<string1>, <string2>)
将两个字符串连接在一起。
使用以下参数:
  • string1 – 要连接的第一个字符串。
  • string2 – 要连接的第二个字符串。
使用str:concat函数可将表达式中的字符串连接起来。例如,要将FirstName字段与LastName字段连接起来,然后检查该结果是否与模式匹配,请使用以下表达式:
${str:matches(str:concat(record:value(“/FirstName”) , record:value(“/LastName”)) , “[A-Z][a-z]+[A-Z][a-z]+”)}
str:contains(<string>, <subset>)
根据字符串是否包含配置的字符子集返回true或false。
使用以下参数:

  • string – 要评估的字符串。
  • subset – 要查找的字符的子集。
例如,${str:contains(“Jane”, “boo”)} 返回: false.
str:endsWith(<string>, <subset>)
根据字符串是否以配置的字符子集结尾,返回true或false。
使用以下参数:

  • string – 要评估的字符串。
  • subset – 要查找的字符的子集。
例如,${str:endsWith(“32403-1001”, “1001”)} 返回: true.
str:escapeXML10(<string>)
返回可以嵌入XML 1.0或1.1文档中的字符串。
使用以下参数:

  • string-要转义的字符串。
返回类型:String.
例如,您可以使用以下表达式基于XMLdata字段中的XML生成XML安全的字符串数据: ${str:escapeXML10(record:value('/XMLdata'))}
str:escapeXML11(<string>)
返回可以嵌入XML 1.1文档中的字符串。
使用以下参数:

  • string-要转义的字符串。
返回类型:String.
例如,您可以使用以下表达式基于XMLdata字段中的XML生成XML安全的字符串数据:${str:escapeXML11(record:value('/XMLdata'))}
str:indexOf(<string>, <subset>)
返回指定字符子集的首次出现的字符串内的索引。
返回类型:Integer.
使用以下参数:

  • string – 要返回其索引的字符串。
  • subset – 要查找的字符的子集。
例如,${str:indexOf("pepper", "pe")} 返回: 0.
str:isNullOrEmpty(<string>)
根据字符串为空还是空字符串返回true或false。
使用以下参数:

  • string-要评估的字符串。
例如,如果work_phone字段为空字符串,则
${str:isNullOrEmpty(record:value(“/work_phone”))} 返回true。
str:lastIndexOf(<string>, <subset>)
返回指定字符子集的最后一次出现的字符串内的索引。
返回类型:Integer.
使用以下参数:

  • string-要返回其索引的字符串。
  • subset-要查找的字符的子集。
例如, ${str:lastIndexOf("pepper", "pe")} 返回: 3.
str:length(<string>)
返回字符串的长度。
返回类型:Integer.
使用以下参数:

  • string-要返回其长度的字符串。
例如,${str:length(“tomorrow”)} 返回: 8.
str:matches(<string>, <regEx>)
根据字符串是否匹配Java regex模式返回true或false。
使用以下参数:

  • string-要评估的字符串。
  • regEx-描述字符串模式的正则表达式。
例如, ${str:matches(record:value(“/HostName”), “.*\.com$”)} 检查HostName字段中的字符串是否以字符“.com”结尾。
str:regExCapture(<string>, <regEx>, <group>)
根据Java正则表达式模式将复杂的字符串解析为组,然后返回指定的组。
使用以下参数:

  • string-包含字符模式的字符串。
  • regEx-描述字符串模式的正则表达式,将其分成几组。将反斜杠用作表达式中特殊字符的转义字符。例如,要用字符表示表达式中的数字 \d,请使用\\d
  • group-要返回的组的编号,其中1代表第一个组,2代表第二个组,依此类推。0返回整个字符串。

例如,要从使用格式“mm-dd-yyyy”的Date字段中提取月份和日期,请使用以下函数:${str:regExCapture(record:value(‘/Date’), ‘(\\w{2}\\-\\w{2})-\\w*’, 1)}

str:replace(<string>, <oldChar>, <newChar>)
用新字符替换字符串中指定字符的所有实例。
使用以下参数:

  • string-包含要替换字符的字符串。
  • oldChar-要替换的字符。
  • newChar-用于替换的字符。
例如,${str:replace(“lecucereche”, “e”, “a”)} 返回: lacucaracha.
str:replaceAll(<string>, <regEx>, <newString>)
用新的字符集替换字符串中的一组字符。
使用以下参数:

  • string-包含要替换的字符组的字符串。
  • regEx-描述要替换的字符串的正则表达式。
  • newString-用于替换的字符集。

例如,${str:replaceAll(“shoes_sandals”,”^shoes”,”footwear”)} 返回: footwear_sandals.

str:split(<string>, <separator>)
根据指定的分隔符将字符串拆分为字符串列表。

使用以下参数:

  • string-输入字符串。
  • separator-指定字符串分割的字符集。
例如,假设一条记录包含一个dimensions 字符串字段,该字段记录了高度,宽度和长度:“ height = 32 width = 24 length = 36”。该函数 ${str:split(record:value(“/dimensions”), ” “)} 返回以下字符串列表:
"height-32", "width=24", "length=36"
str:splitKV(<string>, <pairSeparator>, <keyValueSeparator>)
将字符串中的键/值对拆分为字符串值的映射。
使用以下参数:

  • string-包含键值对的字符串。
  • pairSeparator-分隔键值对的字符集。
  • keyValueSeparator-分隔每个键和值的字符集。
例如,假设一条记录包含一个dimensions字符串字段,该字段记录了高度,宽度和长度:“ height = 32 width = 24 length = 36”。该函数${str:splitKV(record:value("/dimensions"), " ", "=")} 返回以下字符串值映射:
"dimensions": {
      "height": "32",
      "width": "24",
      "length": "36"
    }
str:startsWith(<string>, <subset>)
根据字符串是否以配置的字符子集开头,返回true或false。
使用以下参数:

  • string-要评估的字符串。
  • subset-要查找的字符的子集。
例如,${str:startsWith(“Data Collector”, “Data”)} 返回: true.
str:substring(<string>, <beginIndex>, <endIndex>)
返回字符串值的子集,该子集的值以beginIndex字符开始,在endIndex之前的一个字符结束。
使用以下参数:

  • string-包含所需返回子字符串的字符串。
  • beginIndex-一个整数,代表返回的子字符串的开始位置。从0开始,从左侧开始计数。
  • endIndex-一个整数,表示子串末尾的一个位置。
例如,${str:substring(“Chewing Gum”, 0, 5)} 返回: Chew.
str:toLower(<string>)
将字符串数据转换为所有小写字母。
使用以下参数:

  • string-小写的字符串。
例如,${str:toLower(“FALSE”)} 返回: false.
str:toUpper(<string>)
将字符串数据转换为所有大写字母。
使用以下参数:

  • string-要大写的字符串。
例如,${str:toUpper(“true”)} 返回: TRUE.
str:trim(<string>)
修剪字符串中的前导和尾随空格字符,包括空格和返回字符。
使用以下参数:

  • string-要返回的字符串,不包含其他空格字符。
例如,${str:trim(record:value(“/Address”))} 修剪Address字段中的前导和尾随空白字符。
str:truncate(<string>, <length>)
返回截断为指定长度的字符串。使用整数指定长度。
使用以下参数:

  • string-要截断的字符串。
  • length-一个整数,代表要保留的字符数。
例如,当电话号码字段包含诸如415-555-5555的字符串时,${str:truncate(record:value(‘/phone’),3)} 将返回电话号码的区号。
str:unescapeJava(<string>)
从具有特殊Java字符的字符串中返回未转义的字符串。用于在可以输入表达式的任何位置包括二进制或不可打印的字符。
使用以下参数:

  • string-要处理的字符串。
str:unescapeXML(<string>)
从已转义XML数据的字符串中返回未转义的字符串。
使用以下参数:

  • string-包含转义XML数据的字符串。
例如,假设您已将附加在XML文档中的XML数据转义到了额外XML字段中。以下表达式取消转义XML:${str:unescapeXML(record:value(‘/additionalXML’))}
str:urlDecode(<URL>, <charset>)
将字符从URL转换为指定的字符集,例如UTF-8。
使用以下参数:

返回值:String.
例如,要将URL转换为UTF-8,请使用以下表达式:
${str:urlDecode(record:value('/URL'), 'UTF-8')}
str:urlEncode(<infoforURL>, <charset>)
转换无效字符以帮助基于指定的字符集(例如UTF-8)创建有效的URL。使用记录数据向URL添加其他信息(例如片段)时,可以使用此功能。
使用以下参数:

返回值:String.
例如,要对要在URL中使用的搜索结果进行编码,将空格转换为有效字符,可以使用以下表达式:
${str:urlEncode(record:value('/result'), 'UTF-8')}

Time Functions

使用时间函数返回当前时间或转换日期时间数据。

您可以将任何datetime参数替换为计算结果为日期时间值的表达式。您不能将日期时间参数替换为日期时间字面量。

您可以将任何long或string参数替换为评估该参数的文字或表达式。字符串文字必须用单引号或双引号引起来。

在Data Collector Edge管道中无效。不要在Data Collector Edge管道中使用时间函数。

表达式语言提供以下时间函数:

time:createDateFromStringTZ(<string>, <time zone>, <date format>)
根据String字段中的日期时间并使用指定的时区创建Date对象。日期时间字符串不应包含时区。
使用以下参数:

例如,以下表达式使用TZ字段中指定的时区将Datetime字段中的字符串值转换为Date对象。假定日期的格式为“03/30/2016 12:15:33 AM”:
${time:createDateFromStringTZ(record:value('/Datetime'), 'record:value('/TZ')', 'MM/dd/yyyy hh:mm:ss a')}
time:dateTimeToMilliseconds(<Date object>)

将Date对象转换为纪元或UNIX时间(以毫秒为单位)。

例如,以下表达式将当前时间转换为纪元或UNIX时间(以秒为单位),然后将该值乘以1000,以将其转换为毫秒:
${time:dateTimeToMilliseconds(time:now())}

返回类型:Long.

time:dateTimeZoneOffset(<Date object>, <time zone>)

返回指定日期和时区的时区偏移量(以毫秒为单位)。时区偏移量是与协调世界时(UTC)的小时和分钟之差。

使用以下参数:

  • Date object-要使用的日期对象。
  • time zone-与Date对象关联的时区。
    您可以使用以下时区格式:

<area>/<location>-有关此格式的有效时区列表,请参见https://www.vmware.com/support/developer/vc-sdk/visdk400pubs/ReferenceGuide/timezone.html
带有GMT前缀的数字时区,例如GMT-0500或GMT-8:00。请注意,不支持仅数字时区,例如-500。
较短的时区ID,例如EST和CST-通常应避免使用这些时区,因为它们可以代表多个时区,例如CST代表中部标准时间和中国标准时间。

例如,以下表达式使用TZ字段中指定的时区返回存储在Date字段中的Date对象的时区偏移量:
${time:dateTimeZoneOffset(record:value('/Date'), record:value('/TZ'))}

返回类型:Long.

time:extractDateFromString(<string>, <format string>)

根据指定的日期格式从字符串中提取Date对象。

使用以下参数:

例如,以下表达式将字符串“ 2017-05-01 20:15:30.915”转换为Date对象:
${time:extractDateFromString('2017-05-01 20:15:30.915','yyyy-MM-dd HH:mm:ss.SSS')}
返回类型:Date object.
time:extractLongFromDate(<Date object>, <format string>)
根据指定的日期格式从Date对象提取一个长值。
使用以下参数:

例如,以下表达式从存储在Timestamp字段中的日期对象返回月作为Long值:
${time:extractLongFromDate(record:value('/Timestamp'), "MM")}
返回类型:Long.
注意:因为该函数返回一个long值,所以您不能在数据格式字符串中指定非数字数据。例如,日期格式“MMM”返回月份的三个字符的缩写(例如“Jul”),这将导致函数返回错误的结果。
time:extractStringFromDate(<Date object>, <format string>)
根据指定的日期格式从Date对象提取字符串值。
使用以下参数:
例如,以下表达式从存储在时间戳字段中的日期对象返回字符串形式的月份:
${time:extractStringFromDate(record:value('/Timestamp'), "MMM")}
返回类型:String.
time:extractStringFromDateTZ(<Date object>, <time zone>, <format string>)
从Date对象提取一个字符串值,将Date对象中的GMT时间转换为指定的日期格式和时区。当以适当的格式指定时区时,该功能会调整夏令时。
使用以下参数:

  • Date object-要使用的日期对象。
  • time zone-转换中使用的时区。

    要转换时区并调整夏令时,请使用<Area>/<Location>格式,例如America/Mexico_City。有关此格式的有效时区列表,请参见以下链接:https : //www.vmware.com/support/developer/vc-sdk/visdk400pubs/ReferenceGuide/timezone.html
    较短的时区ID(例如EST和CST)返回数据,但请注意,这些时区不适应夏时制,因此应避免使用,因为它们可以代表多个时区,例如CST代表中部标准时间和中国标准时间。
    您可以使用带有GMT前缀的数字时区,例如GMT-0500或GMT-8:00,但是这些时区也不考虑夏令时。请注意,不支持仅数字时区,例如-500。

  • format string-指定用于表示日期的格式的字符串。有关创建日期格式的信息,请参见https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
返回类型:String.
未指定时区或无效时,返回空字符串。
例如,以下表达式将Date对象转换为字符串日期,同时调整到America/New_York时区和夏令时。它以“03/30/2016 12:15:33 AM”格式表示日期:
${time:extractStringFromDateTZ(record:value('/datetime'), 'America/New_York', 'MM-dd-yyyy hh:mm:ss a')}
time:millisecondsToDateTime(<long>)
将以毫秒为单位的纪元或UNIX时间转换为Date对象。
如果纪元或UNIX时间以秒为单位,则将该值乘以1000以产生毫秒范围内的值。例如,以下表达式将以秒为单位的时间乘以epochTime字段中存储的时间,然后将该值转换为Date对象:
${millisecondsToDateTime(record:value("/epochTime")* 1000)}
返回类型:Date object.
time:now()
以java.util.Date对象的形式返回Data Collector计算机的当前时间。
例如,您可以使用Expression Evaluator中的函数来创建带有处理时间的字段。
返回类型:Datetime.
time:timeZoneOffset(<time zone>)

返回指定时区的时区偏移量(以毫秒为单位)。时区偏移量是与协调世界时(UTC)的小时和分钟之差。

使用以下参数:

  • 时区-要使用的时区。
    您可以使用以下时区格式:

<area>/<location>-有关此格式的有效时区列表,请参见https://www.vmware.com/support/developer/vc-sdk/visdk400pubs/ReferenceGuide/timezone.html
带有GMT前缀的数字时区,例如GMT-0500或GMT-8:00。请注意,不支持仅数字时区,例如-500。
较短的时区ID,例如EST和CST——通常应避免使用这些时区,因为它们可以代表多个时区,例如CST代表中部标准时间和中国标准时间。

例如,以下表达式使用TZ字段中指定的时区返回时区偏移量:
${time:timeZoneOffset(record:value('/TZ'))}

返回类型:Long.

time:trimDate(<datetime>)
通过将日期部分的日期部分设置为1970年1月1日来修剪日期时间值的日期部分。
例如,如果Data Collector计算机的当前时间是Jul 25, 2016 5:18:05 PM,则
${time.trimDate(time:now())} 返回: Jan 1, 1970 5:18:05 PM.
返回类型:Datetime.
time:trimTime(<datetime>)
过将时间部分设置为00:00:00来修剪日期时间值的时间部分。
例如,如果Pickup_datetime字段的值为 Jul 22, 2016 11:16:10 AM, 则 ${time:trimTime(record:value(“/pickup_datetime”))} 返回: Jul 22, 2016 12:00:00 AM.
返回类型:Datetime.

Miscellaneous Functions

在杂项函数中,可以将任何参数替换为文字或表达式的表达式。字符串文字必须用单引号或双引号引起来。

某些功能在Data Collector Edge管道中可能无效。

表达式语言提供以下杂项函数:

alert:info()
返回有关数据漂移警报的触发器的信息。仅在警报文本中用于数据漂移警报。
emptyList()
创建一个空列表。
emptyMap()
创建一个空映射。
every(<interval>, < hh() | mm() | ss() >)
表示为Hadoop FS,Local FS或MapR FS目标端生成输出目录的小时,分​​钟或秒的时间间隔。
使用目标端时,将从小时开始以指定间隔生成输出目录。例如,每30分钟生成一次目录时,它将在一个小时和一个半小时生成一个目录。
您可以在“Directory Template”属性中使用该函数一次来替换小时,分钟或第二个datetime变量。
使用该功能替换目录模板中的最小时间间隔。
注意:默认情况下,目标端会生成最小度量单位的目录,因此请勿使用every函数每隔一小时,一分钟或一秒钟生成目录。有关更多信息,请参见目录模板。
使用以下参数:
  • interval – 整数因子或60的整数倍,代表目录生成之间等待的分钟或秒间隔。使用以下值之一: 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30.
  • < hh() | mm() | ss() > – 使用 hh() 代表小时, mm() 代表分钟, and ss() 代表秒.
例如,以下目录模板从小时开始每12小时生成一个新目录:

/outputfiles/${YY()}-${MM()}-${DD()}-${every(12,hh())}
以下目录模板从小时开始每隔15分钟生成一个新目录:

/outputfiles/${YY()}-${MM()}-${DD()}-${hh()}-${every(15,mm())}
以下目录模板从小时开始每30秒生成一个新目录:

/outputfiles/${YY()}-${MM()}-${DD()}-${hh()}-${mm()}-${every(30,ss())}
field:field()
返回字段名称。仅在Hive Metadata处理器的Decimal字段表达式属性中可用。
返回类型:String.
isEmptyList()
根据列表是否为空返回true或false。
返回类型:Boolean.
isEmptyMap()
根据映射是否为空返回true或false。
返回类型:Boolean.
jvm:maxMemoryMB()
返回分配给Data Collector的Java堆大小(以MB为单位)。您可以在表达式中使用此函数来指定管道可以使用的最大内存量。
例如,由于建议的Java堆大小的65%是建议的最大值,因此以下表达式是管道的默认内存限制:
${jvm:maxMemoryMB() * 0.65}
length()
返回列表的长度。
返回类型:Integer.
list:join(<list field>, <separator>)
使用元素之间的指定分隔符将List字段中的元素合并为String字段。
使用以下参数:

  • list field-您要合并的列表字段。
  • separator-用于分隔合并字段中元素的字符串。
例如,要使用分号作为分隔符将列表合并到颜色字段中,可以使用以下表达式:

${list:join(record:value('/colors'), ";")}
并且如果列表字段包含“red”,“blue”和“yellow”作为元素,则表达式将产生以下字符串数据:

red;blue;yellow
返回类型:String.
list:joinSkipNulls(<list field>, <separator>)
使用元素之间的指定分隔符并跳过空值,将List字段中的元素合并为String字段。
使用以下参数:

  • list field-您要合并的列表字段。
  • separator-用于分隔合并字段中元素的字符串。
例如,假设您使用以下表达式在颜色字段中合并列表:

${list:join(record:value('/colors'), ";")}
并且如果列表字段包含“red”,“blue”,“null”,“yellow”,则表达式将忽略null值并生成以下字符串数据:

red;blue;yellow
返回类型:String.
offset:column(<position>)
返回当前表的定位偏移量列的值。仅在JDBC Multitable Consumer源的其他offset列条件中可用。
使用以下参数:

  • position-偏移列的位置。例如,为表配置中定义的第一偏移列输入0。为第二个定义的偏移量列输入1。
返回类型:String.
runtime:availableProcessors()

返回可用于Java虚拟机的处理器数量。当您要基于Data Collector可用的处理器数量配置多线程处理时,可以使用此功能。

返回类型:Integer.

runtime:conf(<runtime property>)
返回指定的运行时配置的值。用于调用运行时属性。
使用以下参数:

  • runtime configuration name-要使用的配置属性的名称。该属性必须在sdc.properties文件中或在sdc.properties文件中指定的运行时配置文件中定义。
有关更多信息,请参见使用运行时属性。
runtime:loadResource(<file name>, <restricted: true | false>)
返回指定文件中的值,以修剪文件中所有前导或尾随空白字符。用于调用运行时资源。
使用以下参数:

  • file name-包含要加载的信息的文件名。该文件必须位于$SDC_RESOURCES目录中:
  • restricted-文件是否具有受限权限。如果设置为true,则该文件必须由运行Data Collector的系统用户拥有,并且只能由所有者读取和写入。
例如,以下表达式返回受限的JDBCpassword.txt文件的内容,并修剪所有前导或尾随空白字符:

${runtime:loadResource("JDBCpassword.txt", true)}
有关运行时资源的更多信息,请参见使用运行时资源。
runtime:loadResourceRaw(<file name>, <restricted: true | false>)
返回指定文件中的全部内容,包括文件中任何前导或结尾的空格字符。用于调用运行时资源。
使用以下参数:

  • file name-包含要加载的信息的文件名。该文件必须位于$SDC_RESOURCES目录中。
  • restricted-文件是否具有受限权限。如果设置为true,则该文件必须由运行Data Collector的系统用户拥有,并且只能由所有者读取和写入。
例如,以下表达式返回受限的JDBCpassword.txt文件的全部内容,包括任何前导或尾随空格字符:

${runtime:loadResourceRaw("JDBCpassword.txt", true)}
有关运行时资源的更多信息,请参见使用运行时资源。
sdc:hostname()
返回Data CollectorData Collector Edge计算机的主机名。
例如,您可以使用Hadoop FS目标的目录模板中的函数来写入包含Data Collector主机名的目录。
返回类型:String.
sdc:id()
返回Data Collector ID。

对于在独立执行模式下运行的管道,该ID是与Data Collector关联的唯一标识符,例如58efbb7c-faf4-4d8e-a056-f38667e325d0。该ID存储在以下文件: $SDC_DATA/sdc.id

对于在集群模式下运行的管道,该ID是由集群应用程序(例如Spark或MapReduce)生成的Data Collector工作分区ID。

size()
返回映射的大小。
返回类型:Integer.
uuid:uuid()
返回随机生成的UUID。例如,您可以在Expression Evaluator处理器中使用该函数为添加到每个记录的ID字段生成UUID。
uuid:uuid()函数在Linux系统上使用了大量的熵,并且可能导致您的熵池耗尽。发生这种情况时,您的管道会停止运行,但会继续运行。在系统等待熵再次变为可用时,吞吐量有效地变为零。作为最佳实践,我们建议在使用uuid:uuid()函数的任何Data Collector节点上运行hadged守护程序。hadged守护进程将重新生成您的熵池。
返回类型:String.
vault:read(<path>, <key>)
返回指定路径上键的值。您可以在用户名,密码和类似的属性(例如AWS访问密钥ID和秘密访问密钥)中使用该功能。使用HTTPS时,还可以在HTTP头和正文中使用该函数。

重要说明:现在不建议使用此函数,以后的版本中将删除该函数。我们建议在包括JDBC阶段的管道中使用Vault凭证存储集成中提供的凭证功能。
返回类型:String.
使用以下参数:

  • path-保管箱中要读取的路径。
  • key-要返回的值的键。
vault:readWithDelay(<path>, <key>, <delay>)
等待指定的时间后,返回指定路径上键的值。当您希望延迟响应以留出时间进行外部处理时使用。

重要说明:现在不建议使用此函数,以后的版本中将删除该函数。我们建议在包括JDBC阶段的管道中使用Vault凭证存储集成中提供的凭证功能。

您可以在用户名,密码和类似的属性(例如AWS访问密钥ID和秘密访问密钥)中使用该功能。使用HTTPS时,还可以在HTTP标头和正文中使用该函数。

返回类型:String.
使用以下参数:

  • path-保管箱中要读取的路径。
  • key-要返回的值的键。
  • delay-返回值之前要等待的毫秒数。