Sql Pentaho值映射

Sql Pentaho值映射,sql,pentaho,etl,pentaho-spoon,Sql,Pentaho,Etl,Pentaho Spoon,我是spoon工具的新手,我正在提取一个表的值以加载另一个具有相同属性的表。在第一个表中有一列包含nchar值,如表示(是和否)的“y”和“no” 我的问题是第二个表有一个列,它将这些值作为tinyint保存,比如'y'->1和'n'->'0' 表1 y y n n y 表2 一, 一, 0 0 一, 那么,有没有一种简单的方法来替换这些值并通过映射它们来更改它们的类型呢。我可以在下面的sql语句中完成这项工作 SELECT CASE <variable>

我是spoon工具的新手,我正在提取一个表的值以加载另一个具有相同属性的表。在第一个表中有一列包含nchar值,如表示(是和否)的“y”和“no”

我的问题是第二个表有一个列,它将这些值作为tinyint保存,比如'y'->1和'n'->'0'

表1

  • y
  • y
  • n
  • n
  • y
表2

  • 一,
  • 一,
  • 0
  • 0
  • 一,
那么,有没有一种简单的方法来替换这些值并通过映射它们来更改它们的类型呢。我可以在下面的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),现在我有点头疼。
如果有人告诉我一个实用的方法,我将不胜感激。

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

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


引入一个从DB或CSV文件中读取的映射表如何?映射表的确切含义是什么?这是否类似于将所有等效值存储在第二个表中@马库斯·里克特:没错!尽管这比ETL中的编码映射要多一些工作,但您可以将其视为一项投资,这可能会节省您以后的时间。这取决于你的地图随着时间的推移发展的速度。听起来很合乎逻辑。我会记住这一点。谢谢@Marcus Rickert先生,据我所知,值映射器不支持类型转换。如果我想将char更改为char或类似的stn,这将是可行的,但我还需要char->tinyint转换。看来我会继续做那个案子的陈述@AbercrombieanDe当数据类型不匹配时,需要使用新字段。我编辑了上面的答案来展示这一点。好的,我现在投了赞成票。请确保我会在周一尝试这一步骤,如果它有效的话,我会接受你的答案。谢谢@Abercrombieande