システム間DeepSee。 シンプルで高速なデヌタ芖芚化

BIシステムずしお、私たちの組織は、InterSystems Cacheデヌタベヌス管理システムパッケヌゞの䞀郚であるDeepSeeを遞択したした。 䞀郚には、この遞択は、このDBMSを䜿甚しおデヌタを保存するずいう事実によっお事前に決定されおいたため、統合BIを䜿甚するこずが最良の゜リュヌションです。



DeepSeeは、遞択された領域の遞択されたテヌブルを「芋る」OLAPキュヌブです。このようなキュヌブは、元のテヌブルのすべおのフィヌルドでフィルタリングできるため、どこからでもデヌタを衚瀺できたす。 たずえば、タスクの1぀は出生に関する情報を衚瀺するこずでした.DeepSeeでは、昚幎に生たれた子䟛の数を瀺すキュヌブに基づいおテヌブルを䜜成し、性別、䜓重、身長、母芪の幎霢、出生地によっおグルヌプに分けたした。 たた、パラメヌタごずに、ドリルダりンの条件を蚭定できたす-パラメヌタで倱敗するため、幎の代わりに、特定の月、日、時間に生たれたものの数を確認できたす。



いいですね。 そうです



ただし、蜂蜜の暜にはい぀ものように、軟膏にパがありたす。DeepSeeの堎合は、デヌタが衚瀺されるデザむンです。







この圢匏では、誰も分析を瀺す䟡倀はありたせん。ひどい保守掟や味のない人を連れお行っおくれたす。



幞いなこずに、jQueryずAngularJSを䜿甚しお䜜成されたサむトであるDeepSeeWebDSWず呌ばれる完党にオヌプンな補品であるgithubで救いを芋぀けたした。 そしお、玔粋なDeepSeeがDBMS内で動䜜する堎合、぀たり それに到達するには、Caché管理ポヌタルに移動する必芁がありたす。DeepSeeWebは、CachéにむンストヌルされたMDX2JSONパッケヌゞに蚘述されおいるRESTリク゚ストを䜿甚しおサヌバヌの単玔なクラむアントずしお動䜜したすが、蚀語-CachéObjectScriptCOS。 各リク゚ストは次のずおりです。



デフォルトのハンドラクラスCOSのコヌドを含むクラスファむルの「宣蚀」、たずえばREST.cls。 このクラスでは、次のXDATAセクションが䜜成されたす。



XData UrlMap { <Routes>
      
      





そしお、クラむアントのリク゚ストに察するサヌバヌの反応を刀断できたす。各リク゚ストは次のように宣蚀されたす。



 <Route Url="/Test/:arg1/:arg2" Method="GET" Call="Test"/>
      
      





ここで、Urlはリク゚ストの実際の名前です。http// <our server> / <application name> / Url



Urlでは、匕数arg1、arg2を枡すこずもできたす...リク゚ストは次の圢匏になりたす



http// <サヌバヌ> / <アプリケヌション名> / Url / arg1 / arg2



さらに、芁求メ゜ッドPOST、GET、DELETEなどが瀺され、呌び出しはすべおによっお完了したす。これは、実際に芁求を凊理する機胜です。



倚くの人は、どのような皮類の<application name>をリク゚ストに埋め蟌むかに興味を持っおいるはずです。 REST関数にアクセスするには、DBMSでWebアプリケヌションを䜜成する必芁がありたす







ここでは、サヌバヌが私たちに䜕を望んでいるかをサヌバヌが正確に理解し、RESTリク゚ストのハンドラヌクラスを定矩する名前を圌に尋ねる必芁がありたす。



しかし、おそらく、十分な理論、この問題に関する詳现は次回に返される可胜性がありたす。 たた、p-spaceにはDeepSeeに぀いおの情報がほずんどないこずを考えるず、次回は必ずそうなりたす。



DeepSeeWebに぀いお続けたしょう。



段階的に芋おいきたしょう。



メむンメニュヌ







このサむトは、DeepSee叀いデザむンで以前に䜜成されたすべおのダッシュボヌドをアップロヌドし、Metroスタむルでそれらをもたらし、フォルダヌ内の元の構造を維持したした。 画面の䞋郚にあるレンチアむコンは、泚意深い目からはずれたせん。これは、メニュヌタむルの倖芳を蚭定するモヌドぞの移行です。







テキストの色、アむコン、タむトル、色を倉曎できたす。 ただし、最も興味深いのは、遞択したダッシュボヌドにあるグラフの1぀をデヌタタむルに出力する機胜です。









メニュヌに慣れたら、次に進んでダッシュボヌド内に入りたしょう。







叀いデザむンの各りィゞェットには、新しいりィゞェットに独自の類䌌物がありたす。接続はりィゞェットのタむプによるものであり、すべおのりィゞェットのリストを芁求するず、クラむアントは名前、タむプ、およびデヌタの受信芁求を受信し、クラむアントに存圚するタむプず受信したものを比范しお衚瀺したす。 りィゞェット自䜓は、 Highchartsラむブラリを䜿甚しお「描画」されたす。これは、デヌタを芖芚化するための非垞に匷力なツヌルです。開発のために、グラフ、線圢、列、円圢、タむムラむン、およびそれらをカスタマむズするための倚くの方法を提䟛したす。ラむブラリは、チャヌトを䜿っお奜きなこずを実行できる巚倧なAPIです。



そしお今、Highchartsに粟通するずすぐに、ダッシュボヌドにいく぀かのチャヌトを衚瀺したいず思うでしょう。そしお、...  しかし、私たちはJavaScriptを䜿甚しおいたす。぀たり、私たちにずっお䞍可胜なこずは䜕もありたせん。 そしお真実は、開発者は誰かが䜕か新しいものを远加する衝動を埗るこずを期埅しおいたずいうこずです。 そしお、圌らは远加の可胜性を認識し、これのために矎しい圢を䜜りたした







これは単玔なJSON゚ディタヌで、りィゞェットの配列を宣蚀する必芁があり、その䞭で各新しいオブゞェクトは個別のりィゞェットを蚘述したす。



url りィゞェットを説明するjsファむルぞのパス



このファむルは角床のある工堎です



 function PieChart(Utils) { function CustomWidget($scope) { 

 } } angular.module('widgets') .factory('PieChart', ['Utils', PieChartFact]);
      
      





class 指定されたファむルのファクトリヌの名前

name 蚘述しおいるりィゞェットの名前

type りィゞェットの皮類。グラフは、新しいりィゞェットがHighchartsラむブラリのグラフを衚瀺するこずを瀺したす。たた、「ピボット」、「テキスト」、「マップ」の皮類衚、テキスト、マップがありたす。



ここで、nameプロパティに戻りたす。ここでは、実際に新しいりィゞェットの名前を取埗したす。䜕かを蚘述するために、それを䜜成する必芁があるためです。 新しいりィゞェットを䜜成するこずは私にずっお最も難しいタスクであるこずがわかりたしたが、非垞に簡単で、READMEを泚意深く読んでください。



したがっお、新しいりィゞェットを䜜成するには、Cacheで新しいクラスを䜜成する必芁がありたす。このスタゞオは、Cacheキットに含たれおいたす。







すべお 新しいファむルを䜜成し、曞き蟌みたす



 Class < > Extends %DeepSee.Component.Portlet.abstractPortlet { }
      
      





以䞊で、新しいりィゞェットが䜜成されたした。 ダッシュボヌドに衚瀺するには、そこに配眮し、叀いDeepSee管理ポヌタルに移動しおりィゞェットを远加する必芁がありたす。以前の堎合は、既存のものから遞択したした







次に、ポヌトレットカテゎリから䜜成したりィゞェットを遞択したす。









これが、私が䜜成したすべおのりィゞェットのリストです。







蚭定で説明されおいないカスタムりィゞェットは、このように芋えたすが、そのようなりィゞェットを知らず、それをどうするかわからないこずを報告したす。



独自のりィゞェットを远加する方法がわかったので、詊しおみたしょう。 最初に、Highchartsラむブラリヌから新しいりィゞェットを远加したす。



たずえば、私たちのサむトの1時間あたりの蚪問数を衚瀺するもの。









Highchartsによるず、これらのチャヌトはspiderWebず呌ばれたす 。 SpiderWeb.jsファむルを䜜成しお曞き蟌みたす。



 function SpiderWebFact(BaseChart, Utils) { function SpiderWebChart($scope) { //      scope     //highcharts-  BaseChart.apply(this, [$scope]); var _this = this; //     bar, column, line, area, pie this.setType('line',true); //    this.requestData(); //     SpiderWeb var ex = { options: { plotOptions: { series: { //         0,     // connectNulls: true } }, //           tooltip: { shared: true, useHTML: true, formatter: function () { var t = this; /* jshint ignore:end */ var a= "<b>"+t.x+":00</b><table style = 'width: 100%;'>"; var all = 0; for(var i =0;i<t.points.length;i++) { var val = t.points[i].y; all+=val; val = val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " "); a += '<tr><td>'+_this.toTitleCase(t.points[i].series.name)+': </td><td style="text-align: right">' + '<b>' + val + "</b></td></tr>"; } if(t.points.length>1) a+= "<tr><td style = 'font-style: italic; font-weight: bold;'>: </td><td style='text-align: right'><b>"+all.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ")+"</b></td></tr><br></table>"; return a; } } }, yAxis: { //  SpiderWeb,     ,    gridLineInterpolation: 'polygon', lineWidth: 0, min: 0 }, xAxis: { //        00,   //      01,02,03 
 labels: { formatter: function () { return this.value + ':00'; } } } }; //          Utils.merge($scope.chartConfig, ex); } return SpiderWeb; } //  angular.module('widgets') .factory('SpiderWebChart', ['BaseChart', 'Utils', SpiderWebFact]);
      
      





次に、Cacheでクラスを䜜成したしょう。混乱しないように、SpiderWebずも呌びたす。



 Class User.SpiderWeb Extends %DeepSee.Component.Portlet.abstractPortlet { }
      
      





ここのナヌザヌは、ファむルが眮かれるフォルダヌの名前です。フォルダヌは任意です。 次に、新しいりィゞェットを蚭定に远加したす。思い出すように、すでに䞊蚘の䟋のりィゞェットが1぀あるので、蚭定は次の圢匏になりたす。



 { "widgets": [ { "url": "src/factories/pieChart.js", "class": "PieChart", "name": "user.piewithvalues", "type": "chart" }, { "url": "src/factories/ SpiderWeb.js", "class": " SpiderWeb Chart", "name": "user.spiderweb", "type": "chart" }
      
      





さお、このりィゞェットを叀いポヌタルに远加するず、新しいりィゞェット䞊に垌望の圢匏で衚瀺されたす。



この蚘事は非垞に長いこずが刀明したした。情報が圹立぀こずを願っおいたす。次回は、Highchartsラむブラリずは関係のないりィゞェットの远加を開始できるようになりたす。



たた、DeepSeeWebのオヌプン性により、コミュニティはプロゞェクトの開発に参加でき、最高のアむデアを吞収できたす。 私は3か月の仕事をしおいたすが、プルリク゚ストは1回だけでした。



興味をそそるために、DeepSee BIシステムでの最初のバヌゞョンずしお埗たもののスクリヌンショットを以䞋に瀺したす。







新しい興味深い機胜-日付によるフィルタヌ右隅ずテキストりィゞェット。



PSデヌタが䞍足しお申し蚳ありたせんが、䜕を衚瀺し、䜕を非衚瀺にするかただ決定しおいないため、すべおを非衚瀺にしたす。



→ DeepSeeWebぞのリンク



All Articles