映射数据流列模式类型 =='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类型是啥?
Hive:Decimal(12,9) 的列类型使用 JSONSerDe 抛出 NullPointerException