我正在使用pentaho进行数据迁移测试。我设置了一个“表输入”步骤,其中“表输入”中查询的许多部分都是变量。我一直在寻找一种在运行时执行查询后捕获该查询的方法。
我想知道sql是否有任何特定的系统日志变量,或者它与元数据有关。需要帮忙!谢谢
最佳答案
也许以下方法会有所帮助:
我们假设进行了一个转换,读取CSV文件以获取SELECT语句的动态部分(例如列),并为其设置变量columns
。
第二个转换使用此变量生成SELECT语句,并将其存储到变量sql_statement
中。
在主转换中,我们使用${sql_statement}
作为表输入的SELECT语句,并将数据写入输出文件(可以说这就是业务流程)。从相同的输入,我们将输出复制到另一个路径。在那里,我们将当前时间添加为一个字段(使用元素“获取系统数据”),并添加生成的SQL语句,将它们作为笛卡尔乘积加入并按sql_statement
将结果分组。这样,我们可以计算使用该语句的第一次和最后一次。这些结果将写入文本文件。
我们需要做的最后一件事是依次调用三个转换的工作。
这是一个示例输出:
sql_statement;min_time;max_time
SELECT my_column FROM test_table;2014/05/08 00:41:21.143;2014/05/08 00:41:21.144