我应该合并事实表的列以使其更窄,还是应该通过大量列使其对用户更友好?
Posted
技术标签:
【中文标题】我应该合并事实表的列以使其更窄,还是应该通过大量列使其对用户更友好?【英文标题】:Should I combine the columns of a fact table to make it more narrow, or should I keep it more user friendly with a lot of columns? 【发布时间】:2017-01-23 12:15:57 【问题描述】:我有一个显示 KPI 结果的事实表。有几个 KPI,其中一些具有相似的输出。
我目前的专栏是这样的:
KPI_ID, DOCUMENT_ID, TRUE_FALSE_FLAG1, TRUE_FALSE_FLAG2, DURATION_3, DURATION_4
因此,对于 1 号 KPI(真假输出),最后三列将是 NULL 值。我应该结合TRUE_FALSE_FLAG1
和TRUE_FALSE_FLAG2
吗?什么是最佳实践?
总共有 18 列,其中 12 列是真/假标志或“天数”(整数)形式的持续时间。
picture of the two alternatives
编辑: KPI 3 可能是“问题持续时间”,您会遇到一堆问题,每个问题都有一个 documentID,表示为一行。 Dur_3 就像 5 天、3 天、10 天等。KPI 4 将是“订购维修后的修复延迟”,答案仍然是整数天。但与 KPI 3 完全无关。
报告可能是“修复的平均延迟”。所以大致从 KPI_ID = 3 按 KPI_ID 分组的表中选择 AVG()。
【问题讨论】:
由于没有关于列含义的领域知识,第二种选择对我来说看起来更好。 Gordon Linoff:KPI 3 可能是“问题持续时间”,您会遇到一堆问题,每个问题都有一个 documentID,表示为一行。 Dur_3 就像 5 天、3 天、10 天等。KPI 4 将是“订购维修后的修复延迟”,答案仍然是整数天。但与 KPI 3 完全无关。报告可能是“修复的平均延迟”。所以大致从 KPI_ID = 3 按 KPI_ID 分组的表中选择 AVG()。 只要每个 KPI 都只有 True/False,或者只有一个持续时间要报告,您最好使用备选方案 2。如果任何 KPI 有可能需要存储多个值,那么您想考虑备选方案 1 或备选方案 1 和备选方案 2 之间的内容。您说“有 18 列,其中 12 列是真/假标志或“天数”(整数)形式的持续时间。其他 6 列是什么。这似乎与此有关。 @fredskogsBI 。 . .听起来标志实际上代表了不同的维度,这就是我喜欢第二种解决方案的原因。 Josh F:谢谢您的回复。其他六列只是元数据,例如 INSERT_DATE 和 UPDATE_DATE,以及其他一些不相关的列。我已经制作了 ETL,这样 KPI 就不需要将值存储在多个列中。那是; KPI 不需要同时存储 T/F 和持续时间。 【参考方案1】:根据您的最新评论,您最好使用备选方案 2。具体而言,只要每个 KPI 仅是真/假,并且只有一个要存储的持续时间,您最好使用备选方案 2。
编辑:使用备选方案 2,每个 KPI 可以存储一个真/假值和一个持续时间值
【讨论】:
以上是关于我应该合并事实表的列以使其更窄,还是应该通过大量列使其对用户更友好?的主要内容,如果未能解决你的问题,请参考以下文章
如何隐藏 DefaultTableModel 中的特定列以使其在表中显示?