带有NON EMPTY子句的MDX date range未对该范围的数据进行切片
我正在努力优化查询时间。但是在我的例子中,带有NON EMPTY子句的MDX date range未对该范围的数据进行切片,mdx,pentaho,date-range,mondrian,Mdx,Pentaho,Date Range,Mondrian,我正在努力优化查询时间。但是在我的例子中,case1和case2返回相同的结果案例1应返回特定数据范围的结果,即[time].[2015].[5].[10]:[time].[2015].[6].[9]而仅返回[time].[2015].[6].[9]作为案例2的结果案例1返回正确的结果,即范围的数据,但仅当删除非空子句时。删除non-empty子句意味着它将搜索整个数据集,这同样需要花费大量时间。再次案例3返回正确的结果,但操作时间比第一种方法更长。任何人面对这样的问题或可以指导我解决这个问题
case1
和case2
返回相同的结果<代码>案例1应返回特定数据范围的结果,即[time].[2015].[5].[10]:[time].[2015].[6].[9]
而仅返回[time].[2015].[6].[9]
作为案例2的结果<代码>案例1返回正确的结果,即范围的数据,但仅当删除非空子句时。删除non-empty子句意味着它将搜索整个数据集,这同样需要花费大量时间。再次案例3
返回正确的结果,但操作时间比第一种方法更长。任何人面对这样的问题或可以指导我解决这个问题
案例1
案例2
案例3
蒙德里安始终将时间范围作为全水平扫描进行评估。它将加载给定时间级别的所有成员,并开始迭代这些成员,直到找到第一个边界。然后,它将创建一个子列表,直到该范围的最后一个成员 有一个将范围转换为SQL谓词的增强请求
如果您有机会测试原型代码,请让我们知道它是如何为您工作的Mondrian始终将时间范围作为完整级别扫描进行评估。它将加载给定时间级别的所有成员,并开始迭代这些成员,直到找到第一个边界。然后,它将创建一个子列表,直到该范围的最后一个成员 有一个将范围转换为SQL谓词的增强请求
如果您有机会测试原型代码,请告诉我们它是如何为您工作的无法想象时间维度级别会如此之大?假设您需要查询5天,即
[Time][2015][5][10]:[Time][2015][5][15]
,那么它也会搜索您的整个100万条记录并返回它。那我们就不能在这几天内。。。?。性能只能针对特定的一天、一个月或一个季度?无法想象时间维度级别会如此之大?假设您需要查询5天,即[Time].[2015].[5].[10]:[Time].[2015].[5].[15]
,然后它还会搜索您的整个100万条记录并返回它。那我们就不能在这几天内。。。?。性能只能针对特定的一天、一个月或一个季度?无法想象时间维度级别会如此之大?假设您需要查询5天,即[Time].[2015].[5].[10]:[Time].[2015].[5].[15]
,然后它还会搜索您的整个100万条记录并返回它。那我们就不能在这几天内。。。?。性能只能针对特定的日期、月份或季度?
WITH
MEMBER [Measures].[abc_type] AS
[abc].CurrentMember.Properties("abc_type")
MEMBER [Measures].[abc_desc] AS
[abc].CurrentMember.Properties("abc_desc")
MEMBER [Measures].[abc_class] AS
[abc].CurrentMember.Properties("abc_class")
SELECT
NON EMPTY
{
[Measures].[abc_type]
,[Measures].[abc_desc]
,[Measures].[abc_class]
} ON COLUMNS
,NON EMPTY
Filter
(
{[abc].[abc_id].MEMBERS}
,St_contains
(
[district].[district_id].[1].Properties("the_geom")
,[abc].CurrentMember.Properties("the_geom")
)
) ON ROWS
FROM [analytics_cube]
WHERE
[time].[2015].[5].[10] : [time].[2015].[6].[9];
WITH
MEMBER [Measures].[abc_type] AS
[abc].CurrentMember.Properties("abc_type")
MEMBER [Measures].[abc_desc] AS
[abc].CurrentMember.Properties("abc_desc")
MEMBER [Measures].[abc_class] AS
[abc].CurrentMember.Properties("abc_class")
SELECT
NON EMPTY
{
[Measures].[abc_type]
,[Measures].[abc_desc]
,[Measures].[abc_class]
} ON COLUMNS
,NON EMPTY
Filter
(
{[abc].[abc_id].MEMBERS}
,St_contains
(
[district].[district_id].[1].Properties("the_geom")
,[abc].CurrentMember.Properties("the_geom")
)
) ON ROWS
FROM [analytics_cube]
WHERE
[time].[2015].[6].[9];
WITH
MEMBER [Measures].[abc_type] AS
[abc].CurrentMember.Properties("abc_type")
MEMBER [Measures].[abc_desc] AS
[abc].CurrentMember.Properties("abc_desc")
MEMBER [Measures].[abc_class] AS
[abc].CurrentMember.Properties("abc_class")
MEMBER [time].[newtime] AS
Aggregate([time].[2015].[5].[10] : [time].[2015].[6].[9])
SELECT
NON EMPTY
{
[Measures].[abc_type]
,[Measures].[abc_desc]
,[Measures].[abc_class]
} ON COLUMNS
,NON EMPTY
Filter
(
{[abc].[abc_id].MEMBERS}
,St_contains
(
[district].[district_id].[1].Properties("the_geom")
,[abc].CurrentMember.Properties("the_geom")
)
) ON ROWS
FROM [analytics_cube]
WHERE
[time].[newtime];