阅读数据仓库。任何书。
阅读上星型架构设计。任何书。认真。
你有几个方面:年,球员,团队。
你有一个事实:得分
你想有这样的结构。
然后,您要创建一组这样的尺寸指标。
years = collections.defaultdict(list)
players = collections.defaultdict(list)
teams = collections.defaultdict(list)
您的事实表可以是这个collections.namedtuple。你可以使用这样的东西。
class ScoreFact(object):
def __init__(self, year, player, team, score):
self.year= year
self.player= player
self.team= team
self.score= score
years[self.year].append(self)
players[self.player].append(self)
teams[self.team].append(self)
现在您可以找到给定尺寸值中的所有项目。这是一个附加到维度值的简单列表。
years['2001'] are all scores for the given year.
players['SEA'] are all scores for the given player.
等,您可以简单地使用sum()他们加起来。多维查询就像这样。
[ x for x in players['SEA'] if x.year == '2001' ]