我应该如何使用pentaho PDI(spoon)执行数据屏蔽?

我应该如何使用pentaho PDI(spoon)执行数据屏蔽?,pentaho,kettle,pentaho-spoon,pdi,data-masking,Pentaho,Kettle,Pentaho Spoon,Pdi,Data Masking,我会对10多个表执行数据屏蔽,每个表有100多列 我曾尝试使用pentaho PDI工具屏蔽数据,但我不知道如何使用它编写屏蔽数据 我应该如何使用Pentaho执行数据屏蔽? 我认为其中一种方法是使用名为“replaceinstring”的工具,但即使我尝试使用它,也无法更改任何字符串 我的问题是, 使用“字符串替换”来处理数据是否正确 掩蔽 如果正确,应如何在相应字段中填写值 我想用*替换一些值,比如说,值是“这是样本值”,应该是“txxx xx xxxxx xxxxe”,类似这样的东西 请

我会对10多个表执行数据屏蔽,每个表有100多列

我曾尝试使用pentaho PDI工具屏蔽数据,但我不知道如何使用它编写屏蔽数据

我应该如何使用Pentaho执行数据屏蔽? 我认为其中一种方法是使用名为“replaceinstring”的工具,但即使我尝试使用它,也无法更改任何字符串

我的问题是,

  • 使用“字符串替换”来处理数据是否正确 掩蔽
  • 如果正确,应如何在相应字段中填写值
  • 我想用*替换一些值,比如说,值是“这是样本值”,应该是“txxx xx xxxxx xxxxe”,类似这样的东西


    请帮忙。

    这不是关于水壶,而是关于regexp。 我可以确认,在这个步骤中使用正则表达式时,“字符串替换”具有奇怪的不可预测的行为。官方文件中也没有关于“替换字符串”步骤的解释,实际上也没有太多解释。 无论如何,您可以使用RegexEvaluation步骤捕获所需的部分并替换原始字符串中的内容

    但有一种变通方法可以让事情变得更容易

    带str.replace的JavaScript步骤 这可以通过使用javascript步骤完成,如:

    //variable
    var str = data_to_mask;
    
    //first letter
    var first = str.match(/^[A-Za-z0-9]/);
    
    //last letter
    var last = str.match(/[A-Za-z0-9]$/);
    
    //replace all with "x"
    str = str.replace(/[A-Za-z0-9]/gi, "x");
    
    //get the first and the last letter back
    str = str.replace(/^[A-Za-z0-9]/, first);
    str = str.replace(/[A-Za-z0-9]$/, last);
    

    (我认为Simar的回答也很有效,也许更优雅一些:)

    谢谢你的回答,但我想知道如何在Ketter中设置JavaScript。这就是我想知道的。我可以使用脚本替换数据。