MicroStrategy维度表留下外连接事实表方案

时间:2016-02-16 18:46:49

标签: left-join microstrategy vldb

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

  • master_dimension - Itemkey,color,weight,season,target_age_group ...包含1000个独特商品的1000行

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

  • 价格 - item_key,price,start_date,end_date - 包含200种价格/价格变化的独特产品的600行

  • 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属性修改为连接 - >保留所有最终传递结果元素 - >第3个选项(保留最终传递的所有元素......但不保留关系表)。 我将报告VLDB属性修改为连接 - >保留所有查找表元素 - >第4个选项(使用过滤器保留查找元素...)。我使用了多个VLDB属性选项,但无法在属性之间以及属性表和事实表之间实现左外连接。

1 个答案:

答案 0 :(得分:1)

MicroStrategy希望拥有一个Dimensional模型(忘记左连接),你需要像价格表一样爆炸缓慢变化的维度。

您可以采取的措施将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设置保留查找元素

其他一些事情:

  • 不确定为什么要算价格,但我想你有理由。
  • 从您的表格看起来您没有股票指标的日期,如果您有它,请不要忘记您今天不想与昨天的股票汇总,在这种情况下您需要添加级别日期(标准,事实结束)。