allow dimensions to provide custom query for members (fixes #15170)
This commit is contained in:
parent
1978ba356b
commit
573012169d
|
@ -43,14 +43,16 @@ class EngineDimension(object):
|
|||
def members(self):
|
||||
assert self.dimension.type != 'date'
|
||||
cursor = self.engine.get_cursor()
|
||||
if self.dimension.join:
|
||||
join = self.engine_cube.get_join(self.dimension.join[-1])
|
||||
sql = 'SELECT %s AS value, %s::text AS label FROM %s AS %s ORDER BY %s' % (
|
||||
self.value, self.value_label or self.value, join.table, join.name, self.order_by or
|
||||
self.value)
|
||||
else:
|
||||
sql = 'SELECT %s AS value, %s::text AS label FROM {fact_table} ORDER BY %s' % (
|
||||
self.value, self.value_label or self.value, self.self.order_by or self.value)
|
||||
sql = self.members_query
|
||||
if not sql:
|
||||
if self.dimension.join:
|
||||
join = self.engine_cube.get_join(self.dimension.join[-1])
|
||||
sql = 'SELECT %s AS value, %s::text AS label FROM %s AS %s ORDER BY %s' % (
|
||||
self.value, self.value_label or self.value, join.table, join.name,
|
||||
self.order_by or self.value)
|
||||
else:
|
||||
sql = 'SELECT %s AS value, %s::text AS label FROM {fact_table} ORDER BY %s' % (
|
||||
self.value, self.value_label or self.value, self.self.order_by or self.value)
|
||||
sql = sql.format(fact_table=self.engine_cube.fact_table)
|
||||
self.engine.log.debug('SQL: %s', sql)
|
||||
cursor.execute(sql)
|
||||
|
|
|
@ -139,6 +139,7 @@ class Dimension(Base):
|
|||
'order_by': str,
|
||||
'group_by': str,
|
||||
'filter': bool,
|
||||
'members_query': str,
|
||||
}
|
||||
|
||||
label = None
|
||||
|
@ -147,6 +148,7 @@ class Dimension(Base):
|
|||
group_by = None
|
||||
join = None
|
||||
filter = True
|
||||
members_query = None
|
||||
|
||||
@property
|
||||
def dimensions(self):
|
||||
|
|
Loading…
Reference in New Issue