首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写具有日期范围和行筛选器的MDX查询

如何编写具有日期范围和行筛选器的MDX查询
EN

Stack Overflow用户
提问于 2016-05-10 01:27:23
回答 1查看 279关注 0票数 0

我需要编写一个MDX查询,它根据日期范围过滤WHERE中的行,并根据"esquema“列过滤行。

单独查询日期范围或"esquema“列的效果很好。按日期范围示例:

代码语言:javascript
复制
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') + ']]']
  )

并仅按行过滤:

代码语言:javascript
复制
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') + ']]'])

但是当我把它们放在一起时,查询是:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2016-05-10 05:27:42

也许可以试试这样的东西:

代码语言:javascript
复制
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]
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37121884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档