Tableau -如何在Oracle数据库中复制计算维度



我有一个非常大的Tableau工作簿,需要很长时间才能加载。我已经确定,这是由于一些非常大的计算字段,我想替换以提高加载时间。

我的计划是在数据库级别复制这个计算字段,但是,我不确定最好的方法是什么,希望有人能帮助我。

计算的字段本质上是一个大的映射表,它将一个区域(比如区域2)分配到一个更高级别的名为区域1的区域。这是几行代码,不幸的是,由于工作原因,我无法分享。

IF [area_2] = "abc" THEN [area_2]
ELIF [area_2"] = "def" THEN "xyz"
ELIF [area_2"] = "ghi" THEN "mno"
....
....
END

我最初的想法是在数据库表上创建一个视图,这些属性来自IF语句。然而,我已经明白了不能用PL/SQL If语句创建视图。我试着开始学习PL/SQL元素(即过程,包,函数),但发现很难确定我应该选择什么是正确的选项。

任何指导将非常感激。由于

我认为你有三种方法来解决你的问题

如果一个记录在计算后总是有相同的值

  1. 你可以存储计算值:添加到你的表列来存储计算结果,并在你的表中创建一个TRIGGER,在每次插入后计算值。

  2. 创建一个物化视图:如果你的表没有高频率的插入,你可以创建一个MATERIALIZED VIEW,存储每次插入后的视图结果。

物化视图文档:https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6002.htm

如果记录在计算后可以改变值

  1. 使用CASE WHENDECODE创建视图,如果计算像您的示例一样简单,如果它们不是,使用FUNCTION返回值传递您的值和参数来计算值。

相关内容

最新更新