我正在尝试使用给定的表格来模仿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属性选项,但无法在属性之间以及属性表和事实表之间实现左外连接。
答案 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设置保留查找元素
其他一些事情: