0

我的目标是在有新数据可用时加载缓存。数据每天一次加载到源表中,但时间不可预测。

我一直在尝试设置数据可用性触发 VDP 调度程序作业,如此 Denodo 社区帖子中所述:

https://community.denodo.com/answers/question/details?questionId=9060g0000004FOtAAM&title=Run+Scheduler+Job+Based+on+Value+from+a+Query

该帖子描述了创建调度程序作业以在不满足条件时失败。现在,我发现在某些条件下强制出错的唯一方法是只使用 (1/0),但由于某种原因,这并不总是有效。我想知道是否有办法使用普通 SQL 中的函数来执行此操作,但在 Denodo 文档中找不到任何内容。

这是我的代码目前的样子:

--触发作业 SELECT CASE WHEN (data_in_cache = current_data) THEN 1 % 0 ELSE 1 END FROM database.table;

缓存作业等待触发作业成功,因此只有在缓存中的数据过期时才会加载缓存。即使我觉得应该这样做,这并不总是有效。

希望有人有 VQL 的函数或线路,使 Denodo 调度器 VDP 作业导致错误。

4

1 回答 1

0

这可以通过创建一个自定义函数来轻松实现,该函数在执行时只抛出一个异常。它不需要是异常,您可以创建自己的异常以在错误跟踪中查看它。无论如何,它可能是这样的......

@CustomElement(type = CustomElementType.VDPFUNCTION, name = "ERROR_SAMPLE_FUNCTION")
public class ErrorSampleVdpFunction {

    @CustomExecutor
    public CustomArrayValue errorSampleFunction() throws Exception {
        throw new Exception("This is an error");
    }
}

所以你会像这样使用它:

--Trigger job SELECT CASE WHEN ( data_in_cache = current_data ) THEN errorSampleFunction() ELSE 1 END FROM database.table;
于 2021-11-04T16:37:37.727 回答