Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回不同结果的MDX查询_Java_Mdx_Pentaho_Mondrian_Olap4j - Fatal编程技术网

Java 返回不同结果的MDX查询

Java 返回不同结果的MDX查询,java,mdx,pentaho,mondrian,olap4j,Java,Mdx,Pentaho,Mondrian,Olap4j,所以社区, 我的BI应用程序有问题: 我在schema Workbench上构建了一个模式,当我使用内置的QueryTester时,它可以完美而准确地工作。但是,当从java应用程序调用相同的MDX查询时,相同的模式会返回不同的单元格值。我已经尝试了PreparedOlapStatement.execute和OlapStatement.executeOlapQueryString方法 语句一执行,值就错了,所以我相信这不是我的应用程序的问题。我已经尝试对查询进行硬编码,以确保它与我在工作台中使用

所以社区,

我的BI应用程序有问题:

我在schema Workbench上构建了一个模式,当我使用内置的QueryTester时,它可以完美而准确地工作。但是,当从java应用程序调用相同的MDX查询时,相同的模式会返回不同的单元格值。我已经尝试了PreparedOlapStatement.execute和OlapStatement.executeOlapQueryString方法

语句一执行,值就错了,所以我相信这不是我的应用程序的问题。我已经尝试对查询进行硬编码,以确保它与我在工作台中使用的查询相同,并且它仍然返回错误的值

查询如下,由于公司政策相当愚蠢,一些名称被更改:

WITH
SET [SET1] as Filter(Filter1)
SET [T] as FILTER(FilterTime)
MEMBER Measures.[V] as SUM([T].item(0):Time.currentmember, Measures.[Measure1])
SET [Medida] as ({Measures.[V]})
SET [CJ] as ([ClassFin]*[Medida])

SELECT
[CJ]  on 1,
[T] on 0
FROM [Cube]
假设过滤器按预期工作,因为我从Schema Workbench获得的结果是正确的,并与底层数据库进行了双重检查,那么会出现什么问题

编辑: 生成的两个SQL查询相同:

SELECT "td"."ano" AS "c0",
           "td"."mes" AS "c1",
           "fechamento_classificacao_financeira"."id_pai" AS "c2",
           sum((CASE
                    WHEN sinal = 0 THEN vr
                    ELSE 0
                END)) AS "m0"
    FROM "util"."tempo_datas" AS "td",

      (SELECT fc.classificacaofinanceira AS classfin,
              fc.bempatrimonial AS bempat,
              tt.id_pessoa AS participante,
              tt.sinal AS sinal,
              fc.centrocusto AS cc,
              fc.data AS DATA,
              fc.projeto AS pj,
              fc.valorrealizado_recebimento vr,
              fc.valorrealizado_pagamento vp
       FROM financas.dadosanaliticosfluxocaixa fc
       LEFT JOIN financas.titulos tt ON tt.id = fc.titulo) AS "fc",
         "util"."fechamento_classificacao_financeira" AS "fechamento_classificacao_financeira"
    WHERE "fc"."data" = "td"."data_completa"
      AND "td"."ano" = '2017'
      AND "fc"."classfin" = "fechamento_classificacao_financeira"."id_filho"
      AND "fechamento_classificacao_financeira"."id_pai" IN ('8875114b-5dd3-4e5c-915f-55f91a825a74',
                                                             'cbae1877-9913-44b2-8533-f33a9a28ea31',
                                                             'e22fb59b-a6be-4d6b-a2de-8bb66b2b1b2a')
    GROUP BY "td"."ano",
             "td"."mes",
             "fechamento_classificacao_financeira"."id_pai"

所以我不想同时上传这些查询的屏幕截图,但我使用了一个差异检查器来确认它们是相同的。

我已经找到了问题所在。原来底层DBMS有两个同名数据库,一个大写,另一个不大写。schema workbench使用大写的一个,而我的应用程序使用另一个。现在它已经修复,它给了我正确的值。

如果您转到tomcat/webapps/pentaho/WEB-INF/classes,您可以编辑log4j.xml,以显示Mondrian发送到下划线数据库的SQL,在专门针对Mondrian SQL语句的特殊日志文件下取消对块的注释,并添加生成的SQL和您的问题。对Schema Workbench执行同样的操作。@谢谢您的评论。我就是这么做的,并在工作台和我的应用程序的输出上使用了一个差异检查器。两个SQL查询都是相同的。我将用信息和查询更新问题。