0

我正在尝试使用给定的表在 MicroStrategy 中模仿以下 SQL

  • master_dimension - Itemkey, color, weight, season, target_age_group... 1000 行,包含 1000 个唯一项目

  • sub_dimension - item_key,need_special_handling - 400 行,1000 个项目中只有 400 个在此表中有行

  • 价格 - item_key, price, start_date, end_date - 600 行,其中 200 个独特的产品具有价格/价格变化

  • stock - item_key,available_stock_qty - 155 行,155 个具有库存数量的独特产品

select            
m.itemkey, m.color, m.weight,...
sub.need_special_handling
, count(p.price)
, sum(st.available_stock_qty)
from master_dimension  m
left outer join sub_dimension  sub
on m.itemkey = sub.item_key
left outer join prices  p
on p.itemkey = m.itemkey
left outer join stock st
on st.itemkey = m.itemkey
group by
m.itemkey, m.color, m.weight,...
sub.need_special_handling

我创建了属性 itemkey,所有涉及的表作为查找,主查找表作为 master_dimension。我将 itemkey 属性的 VLDB 属性修改为 joins->preserve all final pass result elements -> 第三个选项(保留 final pass 的所有元素......但不保留关系表)。我将报表 VLDB 属性修改为连接 -> 保留所有查找表元素 -> 第 4 个选项(保留查找元素...带过滤器)。我使用了 VLDB 属性的多个选项,但无法实现属性之间以及属性和事实表之间的左外连接。

4

1 回答 1

1

MicroStrategy 想要一个维度模型(忘记左连接),您需要爆炸缓慢变化的维度,例如价格表。

将 MicroStrategy 与表一起使用时可以执行的操作:

  • 在 MicroStrategy 中创建一个逻辑表(或数据库视图),例如:

             select Itemkey,
                    ...
               from master_dimension  m
    left outer join sub_dimension  sub
                 on m.itemkey = sub.item_key
    

    这将是您的 Item 属性的查找表。

  • 为您的价格创建另一个逻辑表(或视图):

             select Itemkey,
                    date,
                    price
               from prices p
         inner join calendar d
                 on d.date between p.start_date and p.end_date
    
  • 使用 VLBD 设置保留查找元素

一些额外的事情:

  • 不知道你为什么要计算价格,但我想你有你的理由。
  • 从您的表格看起来您没有股票指标的日期,如果您有它,请不要忘记您不想将今天与昨天的股票汇总,在这种情况下您需要添加级别日期(标准,事实结尾)。
于 2016-02-17T12:56:56.457 回答