我需要编写一个MDX查询,它根据日期范围过滤WHERE中的行,并根据"esquema“列过滤行。
单独查询日期范围或"esquema“列的效果很好。按日期范围示例:
SELECT
NON EMPTY {[Measures].[Importe]} ON COLUMNS,
NON EMPTY
Crossjoin([Bancos].[All Bancoss].Children,
Crossjoin([Fechas de Cobro].[All Fechas de Cobros].Children,
Crossjoin([Fechas de Emisión].[All Fechas de Emisións].Children,
Crossjoin([Destinatarios].[All Destinatarioss].Children,
Crossjoin([Comprobantes].[All Comprobantess].Children, [Conceptos].[All Conceptoss].Children))))) ON ROWS
FROM [Cubrir Bancos]
WHERE
(
$['[Filtro Esquemas.Esquema]].['
+ (parameters.esquema!'All Filtro Esquemas.Esquemas') + ']]'], $['[Filtro Bancos.Banco]].['
+ (parameters.banco!'All Filtro Bancos.Bancos') + ']]'], $['[Filtro Fechas.Fecha de Cobro]].['
+ (parameters.startDate!'All Filtro Fechas.Fecha de Cobros') + ']]'] : $['[Filtro Fechas.Fecha de Cobro]].['
+ (parameters.endDate!'All Filtro Fechas.Fecha de Cobros') + ']]']
)并仅按行过滤:
SELECT NON EMPTY {[Measures].[Importe]} ON COLUMNS,
NON EMPTY Crossjoin([Bancos].[All Bancoss].Children,
Crossjoin([Fechas de Cobro].[All Fechas de Cobros].Children,
Crossjoin([Fechas de Emisión].[All Fechas de Emisións].Children,
Crossjoin([Destinatarios].[All Destinatarioss].Children,
Crossjoin([Comprobantes].[All Comprobantess].Children, [Conceptos].[All Conceptoss].Children))))) ON ROWS
FROM [Cubrir Bancos]
WHERE ($['[Filtro Esquemas.Esquema]].[' + (parameters.esquema!'All Filtro Esquemas.Esquemas') + ']]'],
$['[Filtro Bancos.Banco]].[' + (parameters.banco!'All Filtro Bancos.Bancos') + ']]'])但是当我把它们放在一起时,查询是:
SELECT NON EMPTY {[Measures].[Importe]} ON COLUMNS,
NON EMPTY Crossjoin([Bancos].[All Bancoss].Children,
Crossjoin([Fechas de Cobro].[All Fechas de Cobros].Children,
Crossjoin([Fechas de Emisión].[All Fechas de Emisións].Children,
Crossjoin([Destinatarios].[All Destinatarioss].Children,
Crossjoin([Comprobantes].[All Comprobantess].Children, [Conceptos].[All Conceptoss].Children))))) ON ROWS
FROM [Cubrir Bancos]
WHERE ({$['[Filtro Esquemas.Esquema]].[' + (parameters.esquema!'All Filtro Esquemas.Esquemas') + ']]'], $['[Filtro Bancos.Banco]].[' + (parameters.banco!'All Filtro Bancos.Bancos') + ']]'], $['[Filtro Fechas.Fecha de Cobro]].[' + (parameters.startDate!'All Filtro Fechas.Fecha de Cobros') + ']]'] : $['[Filtro Fechas.Fecha de Cobro]].[' + (parameters.endDate!'All Filtro Fechas.Fecha de Cobros') + ']]']}
$['[Filtro Esquemas.Esquema]].[' + (parameters.esquema!'All Filtro Esquemas.Esquemas') + ']]'],
$['[Filtro Bancos.Banco]].[' + (parameters.banco!'All Filtro Bancos.Bancos') + ']]']))如何在MDX中使用这两种类型的过滤器?
我使用的是Pentaho6CE和Pivot4J。
发布于 2016-05-10 05:27:42
也许可以试试这样的东西:
WITH MEMBER [Filtro Fechas.Fecha de Cobro].[All].[dts] AS
SUM(
$['[Filtro Fechas.Fecha de Cobro]].['
+ (parameters.startDate!'All Filtro Fechas.Fecha de Cobros') + ']]'] : $['[Filtro Fechas.Fecha de Cobro]].['
+ (parameters.endDate!'All Filtro Fechas.Fecha de Cobros') + ']]']
)
SELECT
NON EMPTY {[Measures].[Importe]} ON COLUMNS,
NON EMPTY
Crossjoin([Bancos].[All Bancoss].Children,
Crossjoin([Fechas de Cobro].[All Fechas de Cobros].Children,
Crossjoin([Fechas de Emisión].[All Fechas de Emisións].Children,
Crossjoin([Destinatarios].[All Destinatarioss].Children,
Crossjoin([Comprobantes].[All Comprobantess].Children, [Conceptos].[All Conceptoss].Children))))) ON ROWS
FROM [Cubrir Bancos]
WHERE
(
$['[Filtro Esquemas.Esquema]].[' + (parameters.esquema!'All Filtro Esquemas.Esquemas') + ']]']
, $['[Filtro Bancos.Banco]].[' + (parameters.banco!'All Filtro Bancos.Bancos') + ']]']
, $['[Filtro Esquemas.Esquema]].[' + (parameters.esquema!'All Filtro Esquemas.Esquemas') + ']]']
, $['[Filtro Bancos.Banco]].[' + (parameters.banco!'All Filtro Bancos.Bancos') + ']]']
, [Filtro Fechas.Fecha de Cobro].[All].[dts]
);https://stackoverflow.com/questions/37121884
复制相似问题