Sisense:用于历史数据报告的自表连接

时间:2017-10-04 04:18:15

标签: mysql business-intelligence

让我先举一个例子。假设我有一个缓慢变化的维度表的以下片段,其中包含有关客户的信息:

key  id      name  country      valid_from  valid_to    version
1    abcxyz  John  Switzerland  2012/01/01  2014/01/01  1
20   abcxyz  John  Germany      2014/01/01  2017/01/01  2
...

正如您所看到的,客户信息中的每个更改都会记录为具有相同ID的表中的新条目,但版本增加1( key 字段是主要的表的关键)

然后将此表导入Sisense ElastiCube,然后我可以从Dashboard Web应用程序访问它。

我的问题是:如何创建一个小部件,向我展示从A国迁移到B国的所有客户? (如果A是瑞士,B是德国,John会出现在报告中)

1 个答案:

答案 0 :(得分:0)

假设(id,version)是唯一的并且版本序列中没有间隙,此查询将为您提供从一个国家/地区移动到另一个国家/地区的客户。

请注意,会为您提供最新版本的客户记录,而是提供更改时记录的版本。约翰可能会在版本3中居住在意大利,但查询仍会给你德国纪录。

select a.key as moved_from_key
      ,b.key as moved_to_key
  from customers a
  join customers b on(
       b.id      = a.id
   and b.version = a.version + 1 -- The version following A
  )
 where a.country = 'Switzerland'
   and b.country = 'Germany';