【发布时间】:2021-03-04 02:13:49
【问题描述】:
我面临一个我不完全确定可以通过纯 OLAP 设计来实现的要求(无论如何,我的 OLAP 知识太少了)。
我有一个维度表,例如
DROP TABLE IF EXISTS TMP_DEBUG_OLAP_44_BUILDING;
CREATE TABLE TMP_DEBUG_OLAP_44_BUILDING AS
SELECT 1 AS building_id,'Building 1' AS building_name
UNION ALL
SELECT 2 AS building_id,'Building 2' AS building_name
;
和一个表事实(fact-1),例如
DROP TABLE IF EXISTS TMP_DEBUG_OLAP_44_FACTS;
CREATE TABLE TMP_DEBUG_OLAP_44_FACTS AS
SELECT 1 AS building_id,10 AS budget_amount,11 AS estimate_amount
UNION ALL
SELECT 2 AS building_id,12 AS budget_amount,13 AS estimate_amount
;
和一个因子转换事实表(fact-2),例如
DROP TABLE IF EXISTS TMP_DEBUG_OLAP_44_FACT_FACTORS;
CREATE TABLE TMP_DEBUG_OLAP_44_FACT_FACTORS AS
SELECT 'DK' AS country_id,1.0 AS FACTOR
UNION ALL
SELECT 'MX' AS country_id,1.5 AS FACTOR
;
我被要求为每个元组 [Measures].[Budget amount]_vs_country 生成一个度量,因此它实际上为每个元组添加了一个度量,将 [Measures].[Budget amount] * factor_value 相乘.
示例:fact-table-1 第一行是 building_id=1,我需要 3 个度量:[Measures].[Budget amount]、budget-amount1.0(DK) 和 budget-amount1.5 (墨西哥)。
现在,如果将另一个国家/地区添加到表中,则会有一个新元组,因此是一个新度量。
有什么方法可以在不修改多维数据集的情况下实现吗?
感谢和问候!
【问题讨论】:
-
或者,如果有一种方法可以传递输入参数以获取单个度量,并将因子应用于所选国家/地区就足够了。然而,我的探索平台是JPivot,它缺乏用户输入的能力。
标签: design-patterns olap mondrian