レポートデザイナーのManual Linkingを使用したハイパーリンクの方法をご紹介します。

まず、ハイパーリンクを設定したいオブジェクトを選択し、
右クリックから「ハイパーリンク」を選択します。

「位置:」には「Manual Linking」を選択します。
Manual Linkingではリンク、タイトル、ウィンドウに対して、固定値、あるいはフォーミュラを使用した可変値を設定できます。

ここでは、リンクに対してフォーミュラを使用し環境変数やパラメータ変数をPathに使用してみます。

■環境変数を使用する
環境変数として「pentahoBaseURL」があります。
こちらを使用することで、ベースURLにおいて、パブリッシュ先のサーバとレポートとの間の依存関係をなくすことができます。

例えば、以下のようなパスのレポートへのリンクがあるとします。
http://localhost:8080/pentaho/api/repos/home/admin/sample.prpt/viewer

この場合、デフォルトのベースURLは「http://localhost:8080/pentaho/」のため、

=["env::pentahoBaseURL"] & "api/repos/:home:admin:sample.prpt/viewer"

というように表記できます。

なお、pentahoBaseURLの変更方法については、以下の通りです。
ツールまたはサーバを停止し、下記のファイルを編集後、再起動します。

レポート側のBaseURL
場所:design-tools\report-designer\resources
ファイル:classic-engine.properties
定義箇所:org.pentaho.reporting.engine.classic.core.environment.pentahoBaseURL
 =http://localhost:8080/pentaho/

サーバー側のBaseURL
場所:server\pentaho-server\pentaho-solutions\system
ファイル:server.properties
定義箇所:fully-qualified-server-url=http://localhost:8080/pentaho/

■リンク先にパラメータを渡す

リンク先のレポートがパラメータを要求する場合は、URLにそのパラメータを追記します。
遷移元のパラメータ「AAA」と「BBB」を、遷移先のパラメータ「pAAA」と「pBBB」に渡す場合は次のようなフォーミュラになります。

=OPENINMANTLETAB(CONCATENATE(["env::pentahoBaseURL"] & "api/repos/:home:admin:sample.prpt/viewer?output-type=text/html"; "&pAAA=";TEXT([AAA]);"&pBBB=";TEXT([BBB]););"Link Report")


■Pathの一部を変数にする
Pentaho社より提供されている機能として、Pathに変数を扱える唯一方法は環境変数の「pentahoBaseURL」を使用することですが、次のような方法でPathの一部を変数にすることもできます。

=OPENINMANTLETAB(CONCATENATE(["env::pentahoBaseURL"] & ["pURL"] & "sample_JP.prpt/viewer?output-type=text/html";);"Link Report")

ここでは、「api/repos/:home:admin:」を変数「pURL」とし、
レポートに下記の"隠しパラメータ"を作成することで変数の値を設定しています。

名前:pURL
値形式:String
デフォルト値:api/repos/:home:admin:
プロンプトの表示:隠す

このようにManual Linkingを使用することで、Pathの一部を変数にすることができます。

表の段違い表示を防ぐ方法

|
レポートデザイナーで表を作成すると次のように行高さが段違いになることがあります。
データの長さなどに差があるとこのように表示されます。

18040102.PNG

このように表示されるのは、以下のように「height」を固定の20にしているためです。

18040101.PNG

行の高さを段違いにしないためには、この「height」を%で指定します。
ここでは100%に設定してみます。

18040103.PNG

すると、段違いであった行が綺麗に揃うようになります。

18040104.PNG

レポートウィザードを使用してレポートを自動で作成した場合でも、
このように「height」は%で指定されています。
他のスタイルや属性の設定方法の参考にもなりますので
レポートウィザードでレポート出力して確認してみるのもおススメです。



サブレポートで作成した表をメインレポートに配置し表示させるとそれぞれの一覧が重なります。

18308001.PNG


このような表の重なりを防ぐにはレイアウトを設定する必要があります。

ここではサブレポートはレポートフッターに配置しているので「構造」から「レポートフッター」を選択し「スタイル」の「layout」の値をblockにします。すると次のような表示になります。

18308002.png


各サブレポートの表は重なることななく表現できています。さらにレポートを見やすくするために、表と表の間に隙間を作ってみましょう。

18308003.PNG

上の図のように、サブレポートを開きパレットから「バンド」をレポートに追加します。これによりバンドのheightだけ表の間に隙間ができます。表示すると次のようになります。

18308004.PNG

とても見やすいレポート表現になりました。

static QueryのWhere句をパラメータの条件によって変更させたい場合があります。
例えば、特定のパラメータ値が選択されている時だけある条件を追加するなどのような場合です。
しかし、レポートデザイナーは基本的には異なるクエリを動的に変更することができません。
つまり、データソース毎にStatic Queryを使用することになります。
このような場合、以下のようにSQLの記述を工夫することでWhere句を動的に表現できます。

SELECT * FROM TABLENAME
WHERE 1=1
AND (
(条件式1
AND 検索クエリ1
)
OR
(条件式2
AND 検索クエリ2
)
OR
(条件式3
AND 検索クエリ3
)
)
;

上記の場合、条件式の最初にTRUEになった検索クエリがWhere句に適用されます。
ネストさせることでより条件を複雑にすることもできます。

SELECT * FROM TABLENAME
WHERE 1=1
AND (
(条件式1-1
(条件式1-2
AND 検索クエリ1
)
)
OR
(条件式2
(条件式1-2
AND 検索クエリ1
)
)
OR
(条件式3
(条件式1-2
AND 検索クエリ1
)
)
)
;

例えば、以下のように記述した場合param1がaの場合はCOLUMN1、bの場合はCOLUMN2、cの場合はCOLUMN3のようにパラメータの値によってWhere句を変更することができます。

SELECT * FROM TABLENAME
WHERE 1=1
AND (
('a' = ${param1}
AND COLUMN1 = ${param1}
)
OR
('b' = ${param1}
AND COLUMN2 = ${param1}
)
OR
('c' = ${param1}
AND COLUMN3 = ${param1}
)
)
;

条件式は「=」や「!=」だけでなく「IN」なども使用できます。
パラメータ未設定の判定には、「=''」や「!=''」、または、「IS NULL」や「IS NOT NULL」で可能です。
※「=NULL」や「!=NULL」は正常に動作しません。

レポートデザイナというよりはSQLのTIPSですが
このようなクエリの記述を応用して、よりきめ細かなレポート動作を実現できます。
PentahoレポートデザイナーではQuery Scriptingを使用し、Static Queryの結果であるデータオブジェクトを加工することができます。使用可能なQuery言語はGroovy、ECMA Scriptの2つです。Query Scriptingの基本的な使用方法はQuery Scriptingを使用するをご参照ください。


ここでは、Groovyを使用してサンプルレポートのBar Line Chart.prptのクエリ結果を加工してみましょう。

1.まずは、サンプルレポートを開きます。
ようこそ画面からCharts>Bar Lineを選択するか、メニューのHelp>Sample Reports>Charts>Bar Lineを選択しレポートを開きます。

2.レポートをプレビューします。
180202001.PNG

今回は「Classic Cars」の名称Groovyで変更してみましょう。

3.JDBCデータソースを開き「プレビュー」ボタンをクリックし、変更する前のデータセットを確認します。確認が終わり次第プレビューを閉じます。
180202002.PNG

4.Query Scriptingタブをクリックします。
Scripting LanguageにGroovyを選択し、「Template」ボタンをクリックします。
今回はStatic Queryの結果を加工するため、postProcessResultメソッド内に下記Groovy(Java)を追加します。
--
   for (int i=0;i<tableModel.getRowCount();i++) {
String s =tableModel.getValueAt(i,1);
if ("Classic Cars".equals(s)){
tableModel.setValueAt("Bus",i,1);
}
}
--
上記処理はテーブルモデルの2列目(indexは1)の各行から順にデータを取得し、
取得した文字列が"Classic Cars"の場合は文字列"Bus"を格納するコードです。
180202003.PNG

5.再度プレビューして「Classic Cars」が「Bus」に変わっていることを確認してみましょう。
180202004.PNG

6.問題なければJDBCデータソースの編集を「OK」ボタンで閉じて、レポートをプレビューしてみましょう。以下のように「Classic Cars」が「Bus」に変わっていることが確認できます。
180202005.PNG

Groovyを使用することで、レポートデザイナーの機能としてはないCSV取り込み、CSVデータとJDBCデータソースのテーブル結合なども可能です。
このように自由度や拡張性が高いことがレポートデザイナーの良さでもあります。
Javaで実現できる処理はレポートデザイナー内でも実現できるため、細かなカスタマイズも非常に簡単に実装することができます。

Query Scriptingを使用する

|
PentahoレポートデザイナーではQuery Scriptを使用し、Static Queryの結果であるデータオブジェクトを加工することができます。使用可能なQuery言語はGroovy、ECMA Scriptの2つです。

ここではGroovyを使用し、Query Scriptingの使用方法をご説明します。

1.新規レポートの場合は、Data>Add Datasource>JDBCより、すでにJDBCデータソースをレポートに追加している場合は、データタブから「JDBC:接続名」をダブルクリックし、JDBCデータソースダイアログを開きます。

2.Query ScriptingタブをクリックしScripting LanguageにGroovyを選択します。

3.「Template」ボタンを押下すると、呼び出されるメソッドのテンプレートが入力されます。
入力が完了すれば以下のよになります。
Query Scriptingの使用方法.PNG

4.必要なタイミングで呼び出されるメソッド内に、必要な処理を追記します。

def initQuery()
{
  //すべての初期化ロジックをここに配置します。これは準備するのに最適な空間です
  //複雑なルックアップテーブルまたはこのスクリプトのグローバル変数を埋める。
  //このメソッドは、初期化中に一度呼び出されます。この機能は、
  //関連するクエリが使用されている場合にのみ呼び出されます。
}

def shutdownQuery()
{
  //すべてのシャットダウンロジックをここに配置します。永続的なリソースを使用する場合
  //ファイルや接続のように、ここで閉じてください。
  //このメソッドは、データソースのシャットダウン中に一度呼び出されます。それ
  //関連するクエリが発生した場合にのみ呼び出されます。
}


def computeQuery(query、queryName、dataRow)
{
  //データソースのクエリに使用されるクエリ文字列を計算します。
  //クエリには静的に定義されたクエリ(MQL-text)が含まれています。
  // queryNameは、設計時に与えられたこのクエリの論理名です
  // dataRowには、クエリを実行するために使用されるすべてのパラメータが含まれています

  return query;
}

def computeQueryFields(query、queryName)
{
  //キャッシュに影響を与える可能性のある追加フィールドを返します。書き換えた場合
  // 'computeQuery'関数で動的にクエリを実行し、すべてのフィールドを含める
  //クエリやクエリの計算に含めることができます。
  //
  //キャッシュを必要としない場合は、<null>を返します。
  return new String[0];
}

def postProcessResult(query、queryName、dataRow、tableModel)
{
  //オプションでクエリ結果を後処理します。通常、あなたはしません
  //与えられたテーブルモデルを直接操作しますが、コピーすることもできます
  //データを新しいモデルに入れたり、カスタムテーブルモデルでラップすることができます
  //独自の作成の実装。

  //プロセス内で元の表モデルを破棄した場合は、
  //適切に閉じるか、リソースがリークする可能性があります。
  return tableModel;
}

これまで、ダウンロードする必要があったMarketPlaceですが、Pentaho7.1からは設定変更で簡単にPUCのプルダウンメニューにMarketPlaceを表示できるようになりました。


 手順は以下の通りです。


1.Pentaho BA Serverが起動している場合は停止してください。

2.<Pentahoインストールフォルダ>/server/pentaho-server/pentaho-solutions/system/karaf/etc/に移動してください。

3.org.apache.karaf.features.cfgをエディターで開いてください。

4.org.apache.karaf.features.cfg内のfeaturesBootの中にpentaho-marketplaceという項目があることを確認し、ない場合はfeaturesBootに記載されている最後の項目にカンマをつけpentaho-marketplaceと追記してください。

5.Pentaho BA Serverを起動し、PUCよりMarketPlaceが表示されることをご確認ください。



とても便利になりましたね。


Pentaho社はHitachi Vantara社へ

|
Pentahoは、Hitachi Data Systems、Hitachi Insight Groupと統合されて、Hitachi Vantaraとなります。今後3社の強みを活かして、データから価値を生み出す様々なテクノロジーとソリューションをビジネスや社会に提供してまいります。当社、KSKアナリティクスは、引き続き日本パートナーとしてお客様のサポートを継続してまいります。

詳細は以下のプレスリリースを参照ください。

新トレーニング"PentahoとHadoopフレームワークの基本"を開催しますに記載しておりますように、弊社では新しくPentahoとHadoopフレームワークの基本に関するトレーニングを開催いたします。 

 
本ブログでは上記トレーニングについて、具体的に何を学習することができるのかについて紹介いたします。  

本トレーニングは2日間(10:00~17:00)のトレーニングとなっております。
また、このトレーニングでは以下のコンポーネントの紹介をいたします。 

HDFS 
Flume 
Sqoop 
MapReduce 
YARN 
Pig 
Oozie 
Hive 
Impala 
HBase 
Spark 

トレーニングは基本的にコンポーネント毎に以下の順序で進めていきます。
・コンポーネントの紹介(コンポーネントの特徴、ロジック、メリット等) 
・PDIにおける各コンポーネントに対応するステップの紹介 
・(HDFS, MapReduce, Hive, Impala, HBaseのみ)実機でPDIを使用してコンポーネントの操作 


本トレーニングの対象者は 
・HadoopならびにHadoopエコシステムの初学者 
・PDIを使ってHadoopコンポーネントの操作に興味のある方 
が中心となります。 


・Hadoop関連のコンポーネントに熟知されている方 
・Hadoopの導入方法、運用管理方法を知りたい方 
は本トレーニングでは対象外となるため、別途ご相談いただけますと幸いです。 
弊社ではビッグデータ基盤構築の支援を行っております) 
 

もう少し具体的に詳細を知りたい方はお気軽に以下の問い合わせフォームよりご相談ください。


皆様のご参加をお待ちしております。
現在Pentaho上でPluginとして使用できるデータ可視化ツールを開発中です!

下は、基本的な表示イメージです。
octaba1.png
左のウィンドウに配置されている分析軸を真ん中のウィンドウに配置することで、右側のウィンドウでデータを可視化することが可能です。

数値(メジャー)の場所を変更することも可能です。
octaba2.png

チャートを作成することも可能です。
octaba3.png

octaba4.png

octaba5.png

octaba6.png


基本機能としては、上記以外にPentaho商用版のAnalyzerレポートでも可能な、フィルタ機能や表示する行列の制限機能、数値のフォーマット、ドリルダウン等が使用可能です。

また、その他の機能として、
・メジャー表示位置の指定が可能
・キューブの選択が同一画面で可能
・ディメンションやメジャーの検索機能
・画面の初期化機能
なども追加しています。

開発中とはなりますが、以下のデモサーバで実際に動かすことができますので、ぜひお試しください。
※ログイン後の画面から「新規作成」ボタンを押下、「Octaba View」ボタンから実行できます


今年の夏頃にリリースできるように開発している状況ではありますが、現状でも詳細な仕様のご説明などの希望がございましたら、以下よりお気軽にお問い合わせください。


以上です!

2018年4月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

アイテム

  • 18040104.PNG
  • 18040103.PNG
  • 18040102.PNG
  • 18040101.PNG
  • 18308004.PNG
  • 18308003.PNG
  • 18308002.png
  • 18308001.PNG
  • 180202005.PNG
  • 180202004.PNG

月別 アーカイブ