1

へろ。今日は、オプションのパラメーターを使用した OLAP レポートとの戦いの日です。MDX クエリに問題があります。私は次のように書きました:

select
NON EMPTY {{[Measures].[VALUE]}} ON COLUMNS,
NON EMPTY {
IIF(ISEMPTY([CUSTOMER].[${param}]) //CHECKING IF PARAMETER IS EMPTY
,{[CUSTOMER].[COUNTRY].Members},
{[CUSTOMER].[${param}]}
)
}ON ROWS
from [TRANSACTIONS]

${param}のオプションのパラメータです[CUSTOMER].[COUNTRY]。パラメータの「必須」チェックボタンのチェックを外したので、パラメータ[VALUE]なしで実行した後、OLAPはすべてを持っているはずです。OLAP raport パラメーターを起動した後、おそらく何かで埋めたいと思うので、問題があります。エラーが発生します。

プロファイル属性 'param' が存在しません。

しかし、プロファイル属性で埋めたくありません。値のリストとパラメーターの分析ドライバーを作成しました。これを使用して、可能な値をリスト ボックスの文字列パラメーターに渡します${param}

オプションのパラメーターを使用して OLAP レポートを作成する可能性はありますか? ここに BI マスターはいますか? どんな助けでも大歓迎です。

更新:私はこのようなことをしました。この構文は正しいと思います(SpagoBIの例をチェックしていました)

WITH MEMBER [CUSTOMER].[SELECTED] AS ' Parameter("param") ' ,   SOLVE_ORDER = 2
MEMBER [CUSTOMER].[LEN] AS ' LEN(Parameter("param")) ',    SOLVE_ORDER = 1
select
NON EMPTY {{[Measures].[VALUE]}} ON COLUMNS,
NON EMPTY {
IIF([CUSTOMER].[LEN]=0
,{[CUSTOMER].[COUNTRY].Members},
{[CUSTOMER].[CUSTOMER].[SELECTED]}
)
}ON ROWS
from [TRANSACTIONS]

しかし、今では両方の可能性(設定/設定解除)パラメーターで同じエラーが発生しています

javax.servlet.jsp.JspException: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: com.tonbeller.jpivot.olap.model.OlapException: 1

何か案は?ありがとう :)

4

1 に答える 1

1

この質問は、以前の投稿の直接コピーです。

https://stackoverflow.com/questions/38970610/olap-report-with-optional-parameter

${param} は文字列ですか?

文字列の場合は、次のように機能する必要があります。

WITH MEMBER [Measures].[x] AS ${param}
SELECT
NON EMPTY {[Measures].[x]} ON COLUMNS
FROM [TRANSACTIONS];

それは機能しますか?

機能しない場合、質問は実際には mdx に関連していません。何らかの理由で、構文またはパラメーターがクライアントに移動する方法が間違っているためです。


ノート

上記は、この非常に単純なスクリプトと同等です。

WITH 
  MEMBER [Measures].[x] AS "hello world" 
SELECT 
  NON EMPTY 
    {[Measures].[x]} ON 0
FROM [Adventure Works];

AdvWrks キューブはありますか? これらを試してください:

WITH 
  MEMBER [Measures].[x] AS "I'm not empty" 
SELECT 
  {
    IIF
    (
      (IsEmpty([Measures].[x])) //<< this returns False
     ,[Product].[Product Categories].[Category].MEMBERS
     ,{[Measures].[x]}          //<< this is what IIF returns
    )
  } ON 0
FROM [Adventure Works];

これを返します:

ここに画像の説明を入力

今、私は IsEmpty をテストしました:

WITH 
  MEMBER [Measures].[x] AS "I'm not empty" 
SELECT 
  {
    IIF
    (
      (NOT //<< added this to check functionality of IsEmpty
        IsEmpty([Measures].[x]))
     ,[Product].[Product Categories].[Category].MEMBERS //<< this is what IIF returns
     ,{[Measures].[x]}
    )
  } ON 0
FROM [Adventure Works];

次の結果が得られます。

ここに画像の説明を入力

あなたのシナリオで起こっていると思うのはこれです-paramは空ではありませんが、実際には長さゼロの文字列です:

WITH 
  MEMBER [Measures].[x] AS "" 
SELECT 
  {
    IIF
    (
      (
        IsEmpty([Measures].[x]))
     ,[Product].[Product Categories].[Category].MEMBERS
     ,{[Measures].[x]}  //<< the zero length string goes to here
    )
  } ON 0
FROM [Adventure Works];

結果:

ここに画像の説明を入力

于 2016-08-19T10:36:11.690 に答える