【问题标题】:Pentaho Spoon Value MappingPentaho 勺子值映射
【发布时间】:2014-11-13 15:42:00
【问题描述】:

我是勺子工具的新手,我正在提取一个表值以加载另一个具有相同属性的表。在 first table 中有一列包含 nchar 值,例如 'y' 和 'no' 代表(是和否)。

我的问题是 second table 有一列将这些值保存为 tinyint 像 'y' -> 1 和 'n' -> '0'

表1

  • n
  • n

表2

  • 1
  • 1
  • 0
  • 0
  • 1

那么有没有一种简单的方法可以通过映射来替换这些值并更改它们的类型。我可以在下面的 sql 语句中完成这项工作

SELECT CASE <variable> 
           WHEN <value>      THEN <returnvalue> 
           WHEN <othervalue> THEN <returnthis> 
           ELSE <returndefaultcase> 
       END 
  FROM <table> 

如果只有 'y' 和 'n' 值,这个解决方案还可以,但是因为在很多表中都有很多值,例如 ('a'->2, 'b'->3, 'c' -> 4)现在对我来说有点头疼。 如果有人告诉我一个实用的方法,我将不胜感激。

【问题讨论】:

  • 如何引入从数据库中读取的映射表,例如CSV 文件?
  • 映射表到底是什么意思?是否类似于将所有等效值存储在第二个表中? @Marcus Rickert
  • 没错!尽管这比 ETL 中的编码映射要多一些工作,但您可以将其视为一种投资,可以在以后节省您的时间。这取决于您的映射随着时间的推移发展的速度。
  • 听起来合乎逻辑。我会记住这一点。谢谢@Marcus Rickert先生

标签: sql pentaho etl pentaho-spoon


【解决方案1】:

对如此简单的事情使用值映射器步骤,或者像您一样使用 case 语句。我不会将该映射存储在数据库中,因为它太简单了。

在 valuemapper 中添加一个目标字段,因为数据类型不对齐。然后,如果您想重命名或替换旧列,请使用选择值步骤

【讨论】:

  • 据我所知值映射器不支持类型转换。如果我想像这样将 char 更改为 char 或 stn ,它会起作用,但我也需要 char -> tinyint 转换。所以看来我会继续做那个案例陈述.. @Abercrombieande
  • 当数据类型不匹配时,您需要使用新字段。我编辑上面的答案以显示这一点。
  • 好的,我现在投赞成票。并确保我将在星期一尝试此步骤,如果可行,我将接受您的回答。谢谢@Abercrombieande
猜你喜欢
  • 2020-12-13
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多