在where子句中使用INT与DATE

时间:2017-05-07 16:27:50

标签: sql olap hana olap-cube olap4j

我在数据仓库中有两个表:balancesdatesBalances具有以下结构:

Surrogate Key Date | Date       | Account | Balance
1                  | 2017-02-01 | 100     | 1234
1                  | 2017-02-01 | 200     | 5151
2                  | 2017-02-02 | 100     | 5123
2                  | 2017-02-02 | 200     | 8234

dates具有以下结构:

Surrogate Key Date | Date       | Weekday | Week in Year | ... other columns 
1                  | 2017-02-01 | Wed     | 5            |
2                  | 2017-02-02 | Thu     | 5            |

Surrogate Key Date列的类型为INT,Date列在两个表中都是DATE类型。

balances表中的代理键用于OLAP查询,日期用于常规报告。

现在,我需要开发一个集中使用数据库的程序(它是一个批处理过程),它需要通过日期列重复访问余额表。我应该在此过程中使用“代理键日期”列还是“日期”列?我需要按日期过滤。 where子句中的INT访问是否比DATE访问更有效?不使用OLAP时,我应该忽略Surrogate Key Date列吗?

1 个答案:

答案 0 :(得分:1)

从性能的角度来看,它可能与SAP HANA无关。一般而言,在计算联接和结果集时,HANA不会对实际数据类型起作用,但会使用内部引用ID。

实际上,当我将1:1映射到Date列时,我首先看不到有代理键的原因。此外,因为它似乎允许重复它根本不是一个关键。不确定,您应如何处理此模型中同一日期的特定记录。