Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache nifi NiFi十进制数格式_Apache Nifi - Fatal编程技术网

Apache nifi NiFi十进制数格式

Apache nifi NiFi十进制数格式,apache-nifi,Apache Nifi,给定以下CSV输入文件: name,amount Abc,"1,234.56" Def,"2,222,222.222222" “金额”字段包含带逗号的十进制数。如何在NiFi中将其解析为数字?我不想把它解析成字符串 我曾想过使用UpdateRecord处理器、表达式语言和Java的NumberFormat来解析它,但似乎表达式语言无法访问NumberFormat。或者,我想使用ScriptedRecordSetWriter进行解析,但找不到任何可用的示例 非常感谢您的帮助,尤其是一个工作示例。

给定以下CSV输入文件:

name,amount
Abc,"1,234.56"
Def,"2,222,222.222222"
“金额”字段包含带逗号的十进制数。如何在NiFi中将其解析为数字?我不想把它解析成字符串

我曾想过使用UpdateRecord处理器、表达式语言和Java的NumberFormat来解析它,但似乎表达式语言无法访问NumberFormat。或者,我想使用ScriptedRecordSetWriter进行解析,但找不到任何可用的示例


非常感谢您的帮助,尤其是一个工作示例。

当我们在读取传入数据时,我们仍然需要使用
字符串类型(因为数据包含在“
中)在从UpdateRecord processor写入数据时,我们可以使用
int/decimal
类型来写入输出流文件记录

1.使用记录路径值:

您可以将传入数据读取为字符串数据类型,输出流文件将定义整数类型(),并使用更新记录处理器,''

将UpdateRecord处理器中的新属性添加为

/amount

substringBefore(replace(/amount,',',''),'.')

现在,输出流文件的amount字段将具有整数数据类型

2.使用文字值:

如果我们使用文本值,我们可以在字段上使用函数。值通过使用
替换
toNumber
函数,我们可以获得金额字段的int值。

这两种方式我们都将获得json格式的输出流文件,如下所示

[{"name":"Abc","amount":1234},{"name":"Def","amount":2222222}]

同样,如果您希望将decimal作为输出流文件类型,请使用decimal类型定义avro模式,并且不要使用substringBeforetoNumber函数。

当我们读取传入数据时,我们仍然需要使用
字符串类型(因为数据包含在“)
从UpdateRecord processor写入数据时,我们可以使用
int/decimal
类型写入输出流文件记录

1。使用记录路径值:

您可以将传入数据读取为字符串数据类型,输出流文件将定义整数类型(),并使用更新记录处理器,''

将UpdateRecord处理器中的新属性添加为

/amount

substringBefore(replace(/amount,',',''),'.')

现在,输出流文件的amount字段将具有整数数据类型

2。使用文字值:

如果我们使用文本值,我们可以在字段上使用函数。值通过使用
替换
toNumber
函数,我们可以获得金额字段的int值。

这两种方式我们都将获得json格式的输出流文件,如下所示

[{"name":"Abc","amount":1234},{"name":"Def","amount":2222222}]

同样,如果要将decimal作为输出流文件类型,请使用decimal类型定义avro模式,并且不要使用substringBeforetoNumber函数。

是否尝试将数字作为数字(不带引号)也许这样NiFi可以正确地管理它。你是否尝试过将数字作为数字(不带引号)也许这样NiFi可以正确地管理它。