2015年7月アーカイブ

PDIをブラウザから開いた時に文字化けが発生するケースが時々あります。

mojibake2.png

この文字化けの原因は文字コードにあります。(基本的にUTF-8を使用しているとこのような文字化けが発生することがあるようです)

文字コードの変え方についてですが、
基本的にShift-JISを選択していただくことで文字化けが解消されます。

例えばIEの場合、ページより文字コードでShift-JISを選択していただき、
再度更新していただくことで文字化けが解消されます。

mojibake3.png


mojibake4.png



REST APIとEncrの合わせ技

|
1つ前の投稿記事で、PDIでREST APIを利用する方法をご紹介しました。

先ほどの記事では、URLのパラメータに「リポジトリ名」「ユーザID」「パスワード」「データ変換名」を指定しており、
パスワードについては、生のパスワードを指定していました。

実は、パスワードについては暗号化したものを利用することができます。
    
【Pentaho FAQ】PDI上での暗号化パスワードの利用方法について
https://kskanl.zendesk.com/entries/81939389

上記FAQのページで「Encr」パスワード暗号化モジュールの実行方法をご紹介しておりますが、
この方法で暗号化されたパスワードを、REST APIでも利用することができます。

password=Encrypted 2be98afc86aa7f2e4bb18bd63c99dbdde
  ↓ ※「 」(空白は、ブラウザによって「%20」にエンコードされます)
password=Encrypted%202be98afc86aa7f2e4bb18bd63c99dbdde
 

DIサーバでREST APIを活用する

|
先日リリースされた、Pentaho 5.4ですが、「Analyzer REST APIの強化」が盛り込まれております。
このブログでも、過去にREST APIの内容を何度かご紹介しております。これはBAサーバの機能ということになります。

PentahoのETLであるData Integration(PDI)ですが、Data Integration Server(DIサーバ)でも、REST APIを利用したアクセスが可能です。ここではその方法を簡単にご紹介します。

WS000167.PNG
◇Spoonを起動し、メニューから[ツール]-[リポジトリ]-[接続]を選択します。リポジトリ(ここでは「repo1」とします)を選択し、パスワードを入力して[OK]ボタンをクリックします。
→ リポジトリ設定は、C:\Users\pentaho\.kettle\repositories.xml に保存されています。(この設定ファイルは、DIサーバ起動時に参照されます)

下記の内容で、簡単なデータ変換を作成します。
データ変換.png

◇「テキストファイル出力」ステップの内容
(「ファイル」タブ)→「出力をサーブレットに渡す」チェックボックスをONに。REST API経由で実行した際に、出力がブラウザ上に表示されるようになります。
サーブレット.png

◇「repo_trans」という名前で、データ変換をリポジトリに保存します。(メニューの[ファイル]-[名前を付けて保存]を選択)
[コントロールパネル]-[管理ツール]-[サービス]の「Data Integration Server」を右クリックし[プロパティ]を表示します。

サービス.png

◇[ログオン]タブを表示し、アカウントをここでは「pentaho」に変更します。(正確には「.\pentaho」)
ログオン.png

◇ブラウザから下記のURLで「repo_trans」を実行すると、データ変換の実行結果がブラウザ上に表示されます。
URL: http://localhost:9080/pentaho-di/kettle/executeTrans/?rep=repo1&userid=admin&password=password&trans=/home/admin/repo_trans

以上が、データ変換をREST API経由で実行する方法になります。
詳細はぜひぜひお問い合わせください!
弊社では「Pentaho」をキーワードに、ネットの定点観測を行っております。
おかげさまで、Pentahoも様々な技術ブログで題材として取り上げていただいております。

本日は、その中から2つほどご紹介させていただきます。
(特に掲載許可はいただいておりませんので、悪しからず。。。)

特に、IDCフロンティア様の記事は大作となっておりますので、ログデータの可視化にご興味のある方は、ぜひぜひ参考になさってください!

Pentahoユーザーの拡大と共に、Pentahoがますます便利なツール、プラットフォームとして、みなさまにご利用いただけましたら幸いです。



TechBlog_Yahoo!ビッグデータインサイト + Pentahoによるアクセスログの可視化
YBIへのデータアップロードから集計、MariaDBへResultExport、結果をPentahoで閲覧!
http://ow.ly/OXNmS
#idcfrontier
IDCフロンティア @idcfrontier
https://twitter.com/idcfrontier/status/615712739995045888


[Developers.IO] [Pentaho] S3 File Output ~Talend の tS3Put との違い~ http://ift.tt/1S5TlfY
クラスメソッド株式会社 @classmethod
https://twitter.com/classmethod/status/618434624822378496

OLAPでヒストグラムを表示

|
Pentahoのアナライザーでは、OLAPの結果をテーブル形式や、チャート形式で表示することができます。

このアナライザーで、ヒストグラムを表示したい、というご要望がありました。

Excelでヒストグラムを表示する際には、[データ]-[データ分析]-[ヒストグラム]の機能を使って実現します。
Pentahoのアナライザーでヒストグラムを表示する際にも、同様にちょっとしたコツが必要になります。

まず、ヒストグラムのデータ区間をディメンション項目として保持するようにします。
そのために、ファクトテーブルの列として、データ区間の値を保持する列を用意します。

ファクトテーブルの該当列の値は、下記のようになります。
col1
1-10
11-20
1-10
20-30
...

このように設定することで、OLAPでヒストグラムの元になるテーブルを表示し、チャート形式のヒストグラムを表示することが可能になります。

ご参考になりましたら幸いです。

6月30日〜7月2日に、Pentahoトレーニング「データ統合の基本」を開催しました。
ビッグデータの処理を行うETLツールとして、Pentaho Data Integration(PDI)は優れた機能を提供します。

次回は、8/3(月)から一連のトレーニングシリーズを開講予定です。

受講者の方からは「トレーニングのテキストがとてもわかりやすくて良い」というお言葉をいただいております。この機会にぜひぜひご参加ください!

  • ビジネスアナリティクス・ユーザーコンソール (1日)
  • ビジネスアナリティクス・レポートデザイナー (2日)
  • ビジネスアナリティクス・データモデリング (2日)
  • CToolsの基本(2日)
  • データ統合の基本(3日)

詳細はこちらのご案内をご覧ください。
http://www.pentaho-partner.jp/service/training.html

Pentahoユーザコンソールでユーザを追加するとhomeフォルダにユーザ名のフォルダが作成されますが、そのフォルダの権限をREST APIで更新する方法を紹介したいと思います。

Pentahoユーザコンソールのフォルダ・ファイルにはフルコントロール権限、Delete、Write、Readの4段階の権限があり、デフォルトではそのフォルダの所有ユーザと管理者ロールにフォルダのフルコントロール権限が付与されています。

PentahoデータインテグレーションのREST Clientステップでユーザを一括登録し、
併せて、作成される各ユーザのフォルダの権限を変更したいと思います。

まず、次のユーザ名とパスワード、ユーザに付与するロール、フォルダに付与する権限の列を持つ表を用意し、Excel Inputステップで取り込みます。

Screen Shot 2015-07-07 at 1.39.53 PM.png

ロールとフォルダの権限の列はカンマ区切りで、付与する情報を持ちます。
さらにフォルダの権限はコロン区切りで、"ロールまたはユーザ名:タイプ(ロールかユーザ):権限"
という形でフォルダに付与する情報を持たせています。

取り込んだデータを元に、Pentahoユーザコンソールにユーザを登録、
ユーザにロールを付与したあと、作成されたフォルダの権限を変更します。

フォルダの権限変更は、
/pentaho/api/repo/files/
に続きフォルダのパスを
:home:<ユーザ名>
という形でコロン仕切りで記述し、最後に
/acl
というパスをつけたパス

/pentaho/api/repo/files/:home:<ユーザ名>/acl

のurlにHTTPリクエストをします。
リクエストのペイロードはxml形式で次のように準備します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<repositoryFileAclDto>
    <aces>
        <recipient>role1</recipient>
        <recipientType>1</recipientType>
        <permissions>4</permissions>
    </aces>
    <aces>
        <recipient>user1</recipient>
        <recipientType>0</recipientType>
        <permissions>2</permissions>
        <permissions>1</permissions>
        <permissions>0</permissions>
    </aces>
    <entriesInheriting>false</entriesInheriting>
    <owner>user1</owner>
    <ownerType>0</ownerType>
</repositoryFileAclDto>

登録するロール・ユーザ毎にacesタグを追加し、
recipientタグにロールまたはユーザ名を
recipientTypeタグにロールの場合は1を、ユーザの場合は0を
permissionsタグには付与する権限を数字で入れ、
acesタグに入れます。
acesタグと同じ並びで
entriesInheritingタグに値をfalseと入れ、
ownerタグにはユーザ名、
ownerTypeタグにはタイプがユーザなので0を入れます。

permissionsタグに入れる数字は、
manage権限(フルコントロール)の場合は、4
delete権限の場合は、2と1と0
write権限の場合は、1と0
read権限の場合は、0
になります。

今回はこのurlとペイロードの作成を一つのJavascriptステップで行いました。

Screen Shot 2015-07-07 at 2.42.12 PM.png


コードは次のようになっています。

var url = encodeURI('http://localhost:8080/pentaho/api/repo/files/:home:' + name + '/acl'),
    xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
        + '<repositoryFileAclDto>';


var types = {role: 1, user: 0},
    permissions = {manage: 4, delete: 2, write: 1, read: 0};

var folder_permissions = folder_permissions.split(',');

folder_permissions.forEach(function(d) {
    var values = d.split(':');

    xml += '<aces>'
        +  '<recipient>' + values.shift() + '</recipient>'
        +  '<recipientType>' + types[values.shift()] + '</recipientType>';
   
    var permission = permissions[values.shift()];
    do {
        xml += '<permissions>' + permission + '</permissions>';
        permission--;
    } while (permission < 3 && permission >= 0);

    xml += '</aces>';
});

xml += '<owner>' + name + '</owner>'
    +  '<ownerType>0</ownerType>'
    +  '<entriesInheriting>false</entriesInheriting>'
    + '</repositoryFileAclDto>';


続くREST Clientステップで作成したそれぞれのURLに
作成したxml形式のペイロードをPUTリクエストします。

Screen Shot 2015-07-07 at 3.05.48 PM.png

管理者ロールは自動的にフルコントロール権限が付与されます。

Screen Shot 2015-07-07 at 3.08.31 PM.png

以上です。

まだ本ブログのREST APIシリーズにロールに権限を割り当てる記事がなかったかと思いますので、追加します。

例えば、次のようにエクセルでロールとロールに割り当てる権限を表にします。

Screen Shot 2015-07-03 at 5.04.39 PM.png

B列以降の各列はPentahoユーザコンソールの次の各権限に対応します。

Screen Shot 2015-07-03 at 1.42.23 PM.png


Pentahoデータインテグレーションでそのエクセルを取り込み、
REST Clientステップで各ロールをBAサーバに登録したのち、
各ロールを割り当てるHTTPリクエストのペイロードを作成します。

Screen Shot 2015-07-03 at 5.39.46 PM.png

各列の値が1の場合に配列に各権限のクラス名を加え、JSON形式の文字列で
ロール名と権限をセットにしたペイロードを準備します。

例えば、role4の場合は、

{
  "assignments": [
    {
      "roleName": "role4",
      "logicalRoles": [
        "org.pentaho.scheduler.manage",
        "org.pentaho.repository.create"
      ]
    }
  ]
}


という内容のペイロードになります。
requestという名前のフィールドにペイロードを入れています。

Screen Shot 2015-07-03 at 2.03.41 PM.png

REST Clientステップを使って、そのペイロードを
/pentaho/api/userroledao/roleAssignmentsへPUTリクエストします。

Screen Shot 2015-07-03 at 5.09.23 PM.png

以上です。


2015年12月

    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 31