2016-06-21 9 views
1

は、私は、テーブルには、このようなクエリからのデータが表示されますするPentahoのCDEを使用してダッシュボードを構築していますここで、/除外含まれます:PentahoののCDE SQLクエリ内の句

select * from types where id = ${id} 

今私は、URLパラメータからIDを取得このように

id = Dashboards.getQueryParameter('id'); 

idを与えないと、id = ''と一致しないため、表には何も表示されません。私はそれがwhere句を除外しますIDを与えるいけないと

select * from types 

どのようにPentahoのCDEでこれを達成するために

のようなクエリの結果を示している場合しかし、私がやりたいことは、ありますか?

どのようにビットのようにJavaScriptのパラメータ(たとえば、 'where_clauseが')カスタムの作成に関する
+0

あなたが店プロシージャを使用して、これをhadleすることができます。 –

答えて

1

id = Dashboards.getQueryParameter('id'); 
if (id != null) 
    where_clause = 'id = ' + id; 
else 
    where_clause = '1=1'; 
return where_clause; 

そして、あなたのクエリを構築します1つはテーブルのPre Executionフェーズの間です。ダッシュボードのコンポーネント(テーブル、チャート)のデータソースは、プロパティdataAccessIdによって表されます。

dataAccessIdは、this.chartDefinition.dataAccessId = {datasource name}のようなコンポーネント内でJavaScriptコードを使用して設定できます。

1)データソースsql_with_id

select * from types where id = ${id} 

2)データソース= sql_no_id

select * from types 

表のPre Executionコード:

function f() { 
    var id = Dashboards.getQueryParameter('id'); 
    if (id && id !== "") { 
     this.chartDefinition.dataAccessId = "sql_with_id"; 
    } else { 
     this.chartDefinition.dataAccessId = "sql_no_id"; 
    } 
} 
+0

私はグラフを使用していません。テーブルだけです。テーブルデータソースをどのように動的に変更できるか知っていますか? –

+0

'テーブルコンポーネント 'には' Pre Execution'フェーズとすべてのCDEコンポーネントがあります。これはコンポーネントの 'Advanced Properties'タブにあります。 – mzy

+0

私は知っていますが、dataAccessIdは見つかりませんでした。 –

0

:2つのデータソースを使用して選択することができます

select * from types where ${where_clause} 
+0

umそれはそれのようには動作しません、それは間違ったクエリを示しています。 –