映射数据流列模式类型 =='decimal' 不更改十进制列

Posted

技术标签:

【中文标题】映射数据流列模式类型 ==\'decimal\' 不更改十进制列【英文标题】:mapping data flow column pattern type =='decimal' not changing decimal columns映射数据流列模式类型 =='decimal' 不更改十进制列 【发布时间】:2021-08-09 19:13:49 【问题描述】:

我正在使用列模式来捕获空值。我的逻辑很简单。

匹配条件

type=='decimal'

列名表达式

$$

价值表达

coalesce($$,toDecimal(0,38,18))

我无法让它工作,它只会留下 NULL 值。但是我可以使用表达式

type!='string' && type!='date'

这确实将具有 NULL 值的列的值更改为 0。在我目前的情况下,这很好,我有字符串、日期和小数,但我可以看到这并不理想,因为我可能有整数、双精度数或其他类型而且我不希望将这些转换为小数,并且 && 语句的列表变得很长。

谁能提供我应该如何指定小数类型或更好的解决方法的详细信息?如果有任何好的参考资料的链接也会有所帮助,official 文档并不是特别具体。

要确认我正在使用十进制值:

【问题讨论】:

您确定传入的列确实被 ADF 视为小数吗?查看检查或数据预览选项卡中的传入值,了解 ADF 将该列视为什么数据类型。 谢谢马克,我知道我正在使用小数,因为我在管道的早期明确转换了它们。您的评论促使我在帖子中确认。 【参考方案1】:

试试这个 - 小数有精度和规模

startsWith(type, 'decimal')

【讨论】:

嗨 Kiran 所以如果我明白你在说什么规则type =='decmial(10,2)' type=='decimal(38,18)' 会有不同的结果。绝对是我希望在文档中看到但无处可见的细微差别。我会尝试您的建议并报告结果。

以上是关于映射数据流列模式类型 =='decimal' 不更改十进制列的主要内容,如果未能解决你的问题,请参考以下文章

mybatis的DECIMAL类型映射到实体相对应的BigDecimal类型是啥?

如何控制计算列的数据类型?

Mysql数据类型DECIMAL(M,D)用法

Hive:Decimal(12,9) 的列类型使用 JSONSerDe 抛出 NullPointerException

哪种 .NET 数据类型最适合在 NHibernate 中映射 NUMBER Oracle 数据类型?

T-SQL中向表中插入一条数据,其中类型为Decimal的列对应的插入值为‘2400’可就是不行还报“......