Quantcast
Channel: Jedox BI Blog
Viewing all 140 articles
Browse latest View live

How to combine data from salesforce.com and Excel with Jedox OLAP

$
0
0

Jedox.com, Salesforce.com and MS Excel – the ultimate sneak preview

First of all I would like to thank one of my twitter followers, because he pushed me to write this blogpost about the new force.com interface of Jedox ETL.
The current status is experimental right now, and will be officially launched with an upcoming release.
From now on we are able to connect directly to the salesforce.com (metadata and fact tables)
.
Connecting all the relevant tables and fields you can create your individual dimensions and hierarchies e.g. Accounts. In addition to that you are able to connect all custom tables and customfields (field name __c), too.
Finally, when you have loaded all the dimensions
the next step would be loading the fact tables
And now its up to you.
You can use the Jedox Force.com Kickstart reports as shown on this dashboard
Salesforce.com and Jedox web

or this tabular styled report

or you can create your own reports in Excel in combination with the Jedox Excel-AddIn

Salesforce.com and Excel

Hope this helps!

The post How to combine data from salesforce.com and Excel with Jedox OLAP appeared first on BInsights.


Save All Jedox DB To Relational DB ETL

$
0
0

Having worked on couple of projects in the past with Jedox and their implementations across several institutions, I realized a patten of one task which was common across all of them was pushing back the Jedox content to the relational database for multiple purposes. May it be for archiving, backup, referencing (as client can add their own groupings, elements and more).

So multiple times it was the case that we had to custom design the ETL’s to accomplish the same and often we were missing out on couple of Jedox elements (some time on the trivial one’s like attribute cube which are hidden) which weren’t being captured in the push back mechanism.

Hence in this post I am trying to present generic ETL which I have designed recently just to achieve the same, which is completely dynamic in nature and which has all the relevant checks in place to ensure blank content are not dumped and as soon as any data into the relevant element of Jedox starts to appear its included in the dump automatically. This is a metadata driven ETL. which also encapsulate the “fgrp“, “rgrp“, “Config” and “System” databases as well.

CropperCapture[14]

 

CropperCapture[15]

 

The ETL is a combinations of multiple components like extracts from metadata, dynamic variables driven extracts for cube, dimension and more coordinated by a main groovy script.

Feel free to tweak around and I hope this helps you to get more standard solutions across multiple installations.

Hope it helps !!!

Download:

http://www.amolpandey.com/downloads/blog21_download.zip


Refrence: http://www.amolpandey.com/2014/10/05/save-all-jedox-db-to-relational-db-etl/

The post Save All Jedox DB To Relational DB ETL appeared first on BInsights.

Paged Report in Jedox Web

$
0
0

In this post I would like to introduce you to the new feature set provided by MSSQL server 2012 (syntax) for paged result sets using the “OFFSET FETCH” clause

http://technet.microsoft.com/en-us/library/gg699618(v=sql.110).aspx

Now we got the SQL in place to provide the flexibility, so how we go about leverage it. For the same, I have sketched out a very user friendly interface with all the features of a paged report along with the features for the user to operate upon the rows:

CropperCapture[4]

The above report provided the functionalities of sorting, paging, user selections and operations upon the same with the help of dynamic sql constructed by the help of variables.

Give it a try with the code base provided in the download and I hope it provide you the infrastructure required to achieve similar for your feature rich reports.

Downloads:

 http://amolpandey.com/home/downloads/blog22_download.zip


Refrence: http://www.amolpandey.com/2014/10/09/paged-report-in-jedox-web/

The post Paged Report in Jedox Web appeared first on BInsights.

Zünden Sie den Datenturbo – GPU FAQ

$
0
0

Data-Blog-Header

  1. Warum sollte man den Jedox OLAP Accelerator verwenden?

Heutige Grafikkarten sind aufgrund ihres Aufbaus perfekt dazu geeignet, große Mengen an Zahlen parallel zu verarbeiten. Besonders Berechnungen wie Aggregationen, Rules oder Datenfilter, die im OLAP-Szenario häufig vorkommen, werden durch Grafikkarten signifikant beschleunigt, da hier meist dieselbe Rechenoperation auf einer großen Menge von Daten ausgeführt wird (Single Instruction, Multiple Data, SIMD).

Doch nicht nur bei einzelnen Abfragen, auch bei der Erstellung einer großen Menge an Berichten oder beim Datenimport, kann die Verwendung von Grafikkarten dazu führen, dass die Berechnungen nicht eine ganze Nacht in Anspruch nehmen, sondern bestenfalls nur die Mittagspause.

  1. Um welchen Faktor beschleunigt der Jedox OLAP Accelerator einzelne Abfragen im Vergleich zur CPU-berechneten Version des OLAP-Servers?

Im Durchschnitt werden derzeit Beschleunigungen zwischen fünf- und zehnfach erreicht.

Diese Frage ist jedoch pauschal nicht zu beantworten, da der Beschleunigungsfaktor gegenüber der CPU-Version des OLAP Servers von verschiedenen Umständen wie der Beschaffenheit und Größe des Datenmodells, der Art und der Anzahl der verwendeten Rules und auch der Komplexität der jeweiligen Anfrage abhängt.

In einzelnen Anfragen hat sich in Performanceanalysen eine über 70-fache Beschleunigung gegenüber der CPU-Version des OLAP Servers gezeigt.

Es existieren aber auch Worst-Case-Szenarien, bei denen die Verwendung des Jedox OLAP Accelerators keine, oder eine wenig signifikante Beschleunigung gegenüber der CPU-Version bewirkt.

 

jedox-gpu-accelerator

Mythbusters Demo GPU versus CPU

 

  1. In welchen Szenarien ist es sinnvoll den Jedox OLAP Accelerator zu verwenden?

Die größte Beschleunigung wird mit dem Jedox OLAP Accelerator erreicht, wenn große Datenmengen verarbeitet werden. Hier kann die GPU ihr volles Potential ausschöpfen, da ihre vielen Prozessorkerne die Daten parallel verarbeiten können und somit im Vergleich zur CPU-Version weniger Rechenschritte und somit weniger Zeit benötigt werden. Große Datenmengen werden insbesondere bei Berechnungen auf hochaggregierten Werten verarbeitet (in Würfeln mit ca. 10 Millionen oder mehr gefüllten Basiszellen), aber auch komplexe Rules und Datenfilter in Subsets können große Datenmengen verursachen und somit durch die Verwendung des Jedox OLAP Accelerators auch in kleineren Würfeln um ein vielfaches beschleunigt werden. Im Einzelfall lässt sich jedoch nur experimentell herausfinden, wie hoch die Beschleunigung durch den Jedox OLAP Accelerator ist.

  1. Wieviel Speicher belegt der Jedox OLAP Accelerator auf der Grafikkarte?

In den meisten Fällen benötigt eine Würfelzelle 16 Byte im GPU-Speicher. Je nach Anzahl und Größe der verwendeten Dimensionen kann die Größe einer einzelnen Zelle auch 24, 32 oder mehr Bytes betragen. Somit hängt der Speicherbedarf des Datenwürfels auf der Grafikkarte von der Anzahl der tatsächlich existierenden (“gefüllten”) Zellen im Würfel ab. Geht man von einer Datumsgröße von 16 Byte aus, so würden beispielsweise auf eine NVIDIA Tesla C2070 mit 6 GB Grafikkartenspeicher (VRAM) rund 400 Millionen Datenzellen, auf eine NVIDIA Tesla K40 mit 12 GB VRAM entsprechend doppelt so viele, also rund 800 Millionen Zellen passen.

Es wird empfohlen, die verwendeten Grafikkarten nicht mit mehr als 75% des verfügbaren VRAMs zu befüllen, um noch genügend Platz für Berechnungen und Zwischenergebnisse zur Verfügung zu haben. In einigen Fällen, z.B. bei der Verwendung rechenintensiver Rules, könnte sogar eine maximale Befüllung von lediglich 50% des VRAMs sinnvoll sein. Dies sind jedoch lediglich Richtwerte und sollten für den Einzelfall geprüft werden.

  1. Was wird beim Jedox OLAP Accelerator beschleunigt?

Der Jedox OLAP Accelerator kann stets ohne funktionale Einschränkungen verwendet werden. Dieser beschleunigt automatisch die unterstützten Operationen mit Hilfe der Grafikkarte. In allen anderen Fällen greift der OLAP Server auf die CPU-Version der Operationen zurück.

Die unterstützen Operationen sind:

  • Aggregation (SUM, MAX, MIN, AVG, CNT)
  • Datenfilter (ANY, ALL, MAX, MIN, SUM, AVG)
  • Rules (math. Operatoren, Transformationen, PALO.DATA)

Aktuelle Handbücher finden Sie hier.

Einige Funktionen befinden sich derzeit in der Entwicklung und werden noch nicht beschleunigt, d.h. nicht von der Grafikkarte, sondern von der CPU berechnet.

Das sind konkret:

  • Schreibzugriffe (in Entwicklung, verfügbar ab Version 6.0)
  • Funktionen mit Bedingungen, die also if / then / else beinhalten (in Entwicklung, verfügbar ab Version 6.0)
  • Funktionen auf Element- oder Dimensionsnamen
  • Funktionen, die Strings manipulieren
  • Funktionen, die auf Attributwürfel zugreifen (in Entwicklung, verfügbar ab Version 6.0)

Es kann aber ohne funktionale Einschränkungen stets der Jedox OLAP Accelerator verwendet werden. Dieser greift in diesen Fällen einfach automatisch auf die CPU-Version des Jedox OLAP Servers zurück. In allen anderen Fällen wird die Grafikkarte und somit der Jedox OLAP Accelerator zur Berechnung verwendet.

  1. Worauf sollte beim Erstellen des Datenmodells geachtet werden?

Bei der Modellierung der Würfel sollte darauf geachtet werden, dass Dimensionen, bei denen bei der späteren Verwendung oft auf tiefaggregierte Elemente zugegriffen wird oder bei denen mittels Datenfilter der Elementbereich eingeschränkt werden soll, möglichst nach ihrer Größe geordnet an oberster Stelle im Würfel eingefügt werden.

Das Video unten präsentiert einen unterhaltsamen Vergleich zwischen CPUs und Grafikprozessoren.

jedox-gpu-accelerator

 

Mythbusters Demo GPU versus CPU

The post Zünden Sie den Datenturbo – GPU FAQ appeared first on BInsights.

Sum over subset… Jedox !!!

$
0
0

Hi,

A seemingly trivial looking task took me all over the board recently to figure out a solution for the business where users didn’t wanted to create consolidated nodes in the dimensions to get the aggregations, instead they wanted to get the aggregated results via subset which where filtered based upon the attributes flags, phew !!!

Ne ways I thought this should be achievable by some tips and tricks applied in the areas of excel based formulas and get the result. So instead of extending my words further I will first present you with the picture which would directly illustrate the problem and solution which I will describe below more:

CropperCapture[1]

From the above as you can see, the “Sum by Subset” row has the longest looking formula, but this formula once broken down to components is very easy to interpret.

This formula is initially using the PALO.TFILTER to generate the filter for the dimension year to include only the elements “2011” and “2012”.

This is then fed to the PALO.SUBSET formula which is responsible to generate the subset required to be fed into  the PALO.DATAV (be careful this is DATAV not DATAC, which is array based retrieval of values from the cube via Excel)

Once we have got the PALO.DATAV working we wrap up the output into the Excel based SUM formula and enter the all content of the formula as array formula (Ctrl+Shift+Enter).

And there you go, you have got the result as desired aggregated summed values for the two years worth of data in excel spreadsheet, this can also be leveraged in paste view generated via Jedox add-in for excel.

Now what you have read so far is part of the story till Excel was in picture, but the same successful story is not so successful in Jedox web, because I do acknowledge that Jedox has made a smart and rich UI to replicate excel on web, but still some glitches are found, which actually elongated this story.

Jedox web is not so good as evaluating the nested array formulas as of yet and I expect it to be fixed up soon in next coming releases, once its done it awesomeness will be increased further…

So the solution to the rescue for Jedox Web for the similar to achive is the custom UDF via Macro.

CropperCapture[2]

<pre>
function subset_sum($region,$yearPattern){

// Define constant variables.
define('HOST', 'localhost');
define('PORT', '7777');
define('USER', 'admin');
define('PASS', 'admin');

// Establishes a new connection to the OLAP server.
$connection = palo_init(HOST, PORT, USER, PASS);
// create the variables db_name and cube_name
$db_name = 'Demo';
$cube_name = 'Sales';

$tFilter = palo_tfilter(array($yearPattern),true);
$ySubset = palo_subset($connection, $db_name,"Years",1,null,null,null,null,$tFilter, null);
$ySubset = array_map(function($element){return $element['name'];}, $ySubset);
array_unshift($ySubset,2,1);
$val = palo_datav($connection, $db_name, $cube_name,
"All Products",$region,"Year",$ySubset,"Actual","Units");
unset($val[0]);
unset($val[1]);

// Closes the established connection.
palo_disconnect($connection);
return array_sum($val);
}

Attached along with this post are both the Excel and Jedox web based solutions… And I look forward to the comments if any thing better can be done !!!

Hope it helps…

Download:

http://amolpandey.com/home/downloads/blog23_download.zip


Refrence: http://www.amolpandey.com/2014/10/11/sum-over-subset-jedox/

The post Sum over subset… Jedox !!! appeared first on BInsights.

Cube Sync Real Time

$
0
0

Hi,

Recently coming across this issue, and problems relating to it. I took upon a following approach which I would like to share across, helping a wider community and get reviews on the same:

Problem:

Many times designing the cubes there are situations in which the cube may not have all the dimensions required for the reporting purposes reason’s being, the planning users want to splash data only on certain limited set of dimensions, but for analytical purposes they need some additional dimensions (which may be attributes of previously used dimensions for planning cubes).

Or for many other reasons where there are lookups involved or complex computation is involved between the planning and reporting cubes. But the summary of the problem is, keeping the cubes in sync real time. So that the numbers remain homogeneous across the system and do not get out of balance, confirmed by many numerous reconciliation reports which are tedious to keep an eye always.

Some arguments do exist that Rules can help achieve this to link multiple cubes, but to my experience so far, Rules are great when used for computations upon variables within one cube itself (even good when cube sizes are relatively small with look up formulas), but as soon as lookup functions start to appear in the rules like “PALO.DATAC” that’s where none my rules were ever performant from usability of the system (as my projects involved large data set cubes), not just with Jedox event Microsoft confirms this nature of SSAS and suggest to keep the cubes comprehensive of data as far as possible.

Microsoft:

Any calculation using the LookupCube function is likely to suffer from poor performance. Instead of using this function, consider redesigning your solution so that all of the data you need is present in one cube.

http://msdn.microsoft.com/en-au/library/ms144720.aspx

Solution:

At work I realized always keep things configurable (Golden Rule), as every day some thing changes like rules, logic, constants. So the best mechanism I planned to suit the flexibility requirements to keep the cubes in sync was to leverage the Jedox ETL but custom designing the ETL project to keep the cubes in sync  by the required variables, and kicking off the ETL by the web service triggered by the Supervision Server on the cell change event, this way we wont loose out on any cube change event and all the affected cubes are also synced up:

The configuration of the set up is as follows:

1. Configure the “PALO.INI” for monitoring cell change events via Supervision Server

Add the following command:

“use-cube-worker”

2. In the “SVS/sample_script” folder of Jedox create a copy of “sep.inc.on_cell_change.php” and place it in the “custom_script” folder by renaming it to your choice, in my case it is “sep.inc.on_cell_change_cube_sync.php”

Amend the code in the file as follows:

/**
* Sample Script for cell change event in Jedox OLAP Server. Version 6.0.0
* SVN: $Id: sep.inc.on_cell_change.php 239 2013-02-12 14:52:17Z vmalicevic $
*/

// adapt protocol, host, port here to match your setup
define('ETL_URL','http://127.0.0.1:7775');

// wait for job to finish prior returning status
define('WAIT_FOR_FINISH', true);

// max execution time of script in seconds used in combination with WAIT_FOR_FINISH
define('MAX_EXECUTION_TIME', 10);

class SEPEventHandler extends SEPEventHandlerBase
{
public function OnUserLogin($username)
{
sep_log("<< USING SAMPLE SCRIPT PLEASE ADJUST TO MATCH YOUR CONFIGURATION >>");
sep_log("<< User logged in: $username >>");
}

public function OnUserLogout($username)
{
sep_log("<< USING SAMPLE SCRIPT PLEASE ADJUST TO MATCH YOUR CONFIGURATION >>");
sep_log("<< User logged out: $username >>");
}

public function OnUserAuthenticate($username, $password) { // bool
sep_log("<< USING SAMPLE SCRIPT PLEASE ADJUST TO MATCH YOUR CONFIGURATION >>");
sep_log("<< User authenticate >>");
return true;
}

public function OnUserAuthorize($username, $password, array& $groups) { // bool
sep_log("<< USING SAMPLE SCRIPT PLEASE ADJUST TO MATCH YOUR CONFIGURATION >>");
sep_log("<< User authorize >>");
return true;
}

public function OnWindowsUserAuthorize($domain, $username, array $winGroups, array& $groups) { // bool
sep_log("<< USING SAMPLE SCRIPT PLEASE ADJUST TO MATCH YOUR CONFIGURATION >>");
sep_log("<< User Windows authorize, domain $domain, username $username >>");
$groups = $winGroups;
return true;
}

public function OnServerShutdown() { // void
sep_log("<< USING SAMPLE SCRIPT PLEASE ADJUST TO MATCH YOUR CONFIGURATION >>");
sep_log("<< Server shutdown handler >>");
}

public function OnDatabaseSaved($database) { // void
sep_log("<< USING SAMPLE SCRIPT PLEASE ADJUST TO MATCH YOUR CONFIGURATION >>");
sep_log("<< Databased saved : $database >>");
}

public function OnTermination() { // void
sep_log("<< USING SAMPLE SCRIPT PLEASE ADJUST TO MATCH YOUR CONFIGURATION >>");
sep_log("<< Termination handler >>");
}

# setting the cubes or part of cubes which should be triggered
public function InitCubeWorker($database,$cube)
{
if($database == "Demo")
{
# set triggering area for cube ‚Sales‘
if($cube == "Sales")
{
$AreaA = array(DIMENSION_TOTAL,DIMENSION_TOTAL,DIMENSION_TOTAL, DIMENSION_TOTAL,DIMENSION_TOTAL,array('Units','Turnover'));
$this->WatchCubeArea($AreaA,'SalesCube');
}
}
}

public function OnDrillThrough( $database, $cube, $mode, $arg ) { // string
sep_log("<< USING SAMPLE SCRIPT PLEASE ADJUST TO MATCH YOUR CONFIGURATION >>");
sep_log("<< OnDrillThrough >>");
return "not implemented;\r\n";
}

public function InitDimensionWorker()
{
sep_log("<< USING SAMPLE SCRIPT PLEASE ADJUST TO MATCH YOUR CONFIGURATION >>");
sep_log("<< Get triggering dimensions >>");
}
}

function SalesCube($database, $cube, $areaid, $sid2, $coordinates, $value, $splashMode, $additive)
{

include_once('etl_code.php');</pre>
<pre>$user = get_user_for_sid($sid2); // user who made the change
$groups = get_groups_for_sid($sid2); // groups of the user who made the change

if ($coordinates[5] == 'Units')
{
# read the Price of target product from it's attribute cube
$unit_price = palo_dataa("SupervisionServer/$database", '#_Products',array('Price Per Unit',$coordinates[0]));

# calculate turnover
$turnover_cell = array ($coordinates[0], $coordinates[1], $coordinates[2], $coordinates[3], $coordinates[4], 'Turnover');
$turnover_value = $unit_price * $value;

# starting to lock the database (needed to be allowed to change data)
# (notice that the time the server will be locked for writing has been minimized to the minimum time needed)
event_lock_begin($areaid,$sid2);

# get old units value
$oldUnitsVal = palo_data("SupervisionServer/$database", $cube, $coordinates[0], $coordinates[1], $coordinates[2], $coordinates[3], $coordinates[4], $coordinates[5]);

# write original dataset at given coordinates in 'Sales' cube
# (notice that in case of a triggered event you may decide yourself whether the input data should be written to
# database or not. In case you want it written you must not forget to write it into the database)
$write = palo_setdataa($value, FALSE, "SupervisionServer/$database", $cube, $coordinates);

# write calculated turnover into column 'Turnover' in 'Sales' cube
$write = palo_setdataa($turnover_value, FALSE, "SupervisionServer/$database",$cube, $turnover_cell);

# ending lock of affected database
event_lock_end();
}
elseif ($coordinates[5] == 'Turnover')
{
# Throws a popup notice in Excel
sep_error("Warning", "No one is allowed to change the Turnover");
}

//Put the ETL Kickoff code at the bottom of the script so that once the changes intended by the user are saved to the cube can be picked up by the corresponding ETL event.
//Location of ETL kick off code is vital to address the requirements.

sep_log("ETL Function is about to be called !!!");
sep_log(dirname(__FILE__));

startJob();

}

Also addtionally in the same folder create the following file called “etl_code.php” for custom code relating to ETL kick off

</pre>

function connectSoap()
{
 $wsdl_url = ETL_URL . '/etlserver/services/ETL-Server?wsdl';
 $server = @new SoapClient($wsdl_url, array('exceptions' => true, 'location' => $wsdl_url));
 return $server;
}

function startJob(){
sep_log("ETL Function is called...");
$server = connectSoap();
$project = 'LearnDummy';
$type = 'jobs';
$name = '[J][JustFromEvent]';
$locator = "$project.$type.$name";
 $response = $server->execute(array('locator' => $locator));
 sep_log("ETL Kick off has now been called...");
}

3. Following the above changes amend the “SVS” configuration file for the script “sep.inc.php” to point to you new custom script:

include './custom_scripts/sep.inc.on_cell_change_cube_sync.php';

4. Finally restart the MOLAP service and , fire up a Jedox spreadsheet and with your inputs flowing in to the cube and keep an eye on the Jedox ETL log accumulating, indicating the process works and your ETL is being called upon any changes occurring in the targeted cube region. (In my case the ETL name was “LearnDummy” with the Job name as “[J][JustFromEvent]“)

CropperCapture[6]

Note: One thing to be very careful for this process is, to ensure that this mechanism is primarily built for user based inputs to the cube from spreadsheets, to track them and sync them over. But for any ETL based cube load, the SVS event must be ensured to be de-activated for the optimal performance in the nightly load processes, if missed can lead to huge overburdening of the process which it wasn’t designed to cater.

The main benefit I experienced from this solution is that its an async operations hence user don’t realised any performance impacts, as the user inputs trapped are only used for kicking off the ETL job which works on its own, effectively by queuing jobs under heavy loads and ensuring all operations are accomplished with the logs in place to review and audit.

Hope it helps, Enjoy !!!


Refrence: http://www.amolpandey.com/2014/10/18/cube-sync-real-time/

The post Cube Sync Real Time appeared first on BInsights.

Grid is not enough !!! Javascript Grids for your reports …

$
0
0

Hi,

Working with Jedox and saying Grid is not enough is little sarcastic… There cells all over the places !!!

Well I thought to bring out this topic for a simple reason that though in the product such as Jedox there are enough grid to keep one busy, but by the nature of them they are still little limited to certain features which the power of widgets combined with JavaScript multiple mature grid components can spark life in your applications.

Limitations by not using Widgets/JS Grid Combo:

1. If you tend to use a vertical dyna-range (Jedox), it dynamically expands the whole set of rows across all columns (like insert row functionality) though good enough but from a ease of use design perspective it severely limits the report/app design, as many of the times when working with dyna-ranges with only small number of columns such as 2~5  we would had to leave the rest of the columns unused as when the report is rendered any content on the same will be pushed down as the dyna-range will insert set of rows to represent the table.

CropperCapture[11]

As you can see in the image above, the coloured area next to dyna-range is wasted real estate on the UI as we are unable to put any functionlaity as button or report

2. Advanced features such as paged report, which I have posted in my last articles is hard to get in practice as so many aspects of paging has to be taken care of when designing it manually, some thing off the self is more ease and robust to put in working.

3. Rich UI, Jedox in itself is a well designed product but at some places you need search functionality, richer UI and more features as business gets demanding.

And the list continues as you browse through the new flashy grid controls offered by the JavaScript technology.

Solution

So in order to over come the above limitations, I have built a  sample report showcasing the usage of popular JavaScript Grids as follows:

1. Data Table

http://datatables.net/

CropperCapture[12]

2. Handson JS Grid

http://handsontable.com/

CropperCapture[13]

3. ExtJS Grid

http://dev.sencha.com/extjs/5.0.0/examples/index.html

CropperCapture[14]

In all the above tables the data is sourced from Macro (except ExtJS, in which its local but can be easily amended to any source).

In the above file the widgets are driven by custom HTML code files to which the widget refers to and sends the data array to be displayed on the grid. Thus now you can more effectively use the UI area for user functionality and build comprehensive applications with good means of reporting as well.

This above method can greatly help you to develop richer UI’s and leverage more power of Jedox as BI portal.

Hope this trick helps !!!

Downloads:

http://amolpandey.com/home/downloads/blog24_download.zip

 


Refrence: http://www.amolpandey.com/2014/10/20/grid-is-not-enough-javascript-grids-for-your-reports/

The post Grid is not enough !!! Javascript Grids for your reports … appeared first on BInsights.

JEDOX SAP CONNECTOR – EINFACHE ÜBERTRAGUNG, SCHNELLE ERGEBNISSE

$
0
0

SAP-Systeme mit enormen Mengen an darin gespeicherten Geschäftsdaten sind die Arbeitsgrundlage vieler Unternehmen. Die Übertragung dieser wertvollen SAP-Daten in Jedox ermöglicht es, einfach und flexibel Planungs-, Analyse- und Reporting-Anwendungen aufzubauen.
Der Jedox SAP Connector ist der schnellste Weg, um Daten aus SAP-Systemen in Jedox zu transportieren. Die Installation ist einfach und der gesamte Extraktionsprozess kann im grafischen Web-Frontend von Jedox Web modelliert werden – ABAP-Kenntnisse sind dafür nicht erforderlich. Das leistungsstarke Werkzeug Jedox ETL, das für das Laden von Massendaten zum Jedox OLAP Server optimiert wurde, verarbeitet den Ladevorgang, ohne dass Zwischen-Flat Files erzeugt werden. Die Laufzeit der Extraktion ist daher besonders kurz.

Wo auch immer Ihre SAP-Daten liegen: Alle auf SAP-Netweaver basierten SAP-Systeme werden unterstützt und deren Sicherheitsanforderungen und Autorisierungsbedingungen beachtet. Für SAP ERP und SAP Business Warehouse (BW) gibt es einen speziellen Business Content für benutzerfreundliche Datenextraktionen.

Machen Sie in unserem einstündigen Webinar erste Erfahrungen mit Jedox.
In diesem Webinar stellen wir Ihnen unsere SAP Kickstart Solution auf SAP FI, CO, EC-PCA vor. (Kostenstellenrechnung, Profit Center Rechnung, Bilanz und GuV).
Wir zeigen Ihnen wie Daten aus SAP extrahiert und in Jedox integriert werden.

Registrieren Sie sich jetzt für das SAP Kickstart Webinar am
Mittwoch, den 05. November um 10:00Uhr!

Jetzt registrieren


Anbindung an SAP ERP

Mit Jedox SAP Connector können Sie sämtliche Daten aus allen SAP Modulen (z. B. FI, CO, MM, etc.) extrahieren. Technisch greift Jedox dabei auf RFC Funktionsbausteine (BAPI’s) und SAP Tabellen zurück und ergänzt diese mit eigens definierten Extraktionstypen, um Strukturen z. B. Kostenstellen, Kostenarten, Innenaufträge oder PSP Elemente, einfach auslesen zu können. Auf diese Weise konfigurieren Sie die Extraktion unkompliziert und ohne Kenntnisse der zugrunde liegenden SAP-Tabellen zu benötigen.

Anbindung an SAP BW
Mit SAP Standard-Tools kann das Erstellen flexibler Planungsanwendungen, auf Basis von SAP Business Warehouse, mühsam und zeitaufwendig sein. Jedox SAP Connector beinhaltet einen BW Business Content und ermöglicht so eine unkomplizierte und schnelle Extraktion von SAP BW Daten zu Jedox. Ob Sie BW InfoObjects, einschließlich Attributen und Texten, oder mehrere zeit- und versionsabhängige Hierarchien extrahieren und sie in eine Jedox OLAP Dimension laden: Mit dem Jedox BW Business Content arbeiten Sie schnell und zielorientiert. Dabei können die Massendaten sowohl aus dem Data Warehouse Layer durch Anschluss an SAP Data Store Objects (DSO) als auch aus SAP Infocubes extrahiert werden. Somit können Anwender des Jedox SAP Connectors ihre SAP BW Landschaft durch flexible Planungsprozesse selbstständig verbessern („Self-Service BI“).

Einfacher Aufbau von Hierarchien
Der komplizierteste Teil eines ETL-Prozesses für OLAP-Modelle besteht meist im richtigen Umgang mit den Stammdaten – komplexe Hierarchien mit mehreren Ebenen, Konsolidierungen und Attributen. Jedox ETL und auch Jedox SAP Connector haben diesen Vorgang optimiert und sind in der Lage, Hierarchien analyseorientiert aufzubauen. Der Business Content für SAP macht es darüber hinaus möglich, z. B. Profit-Center-Hierarchien aus SAP ERP oder InfoObject-Hierarchien aus SAP BW ohne Transformationen direkt in Jedox zu laden. Individuelle Konfigurationen, etwa das Beschreiben mehrerer Hierarchien oder eine Datenbereinigung, sind dennoch möglich.

The post JEDOX SAP CONNECTOR – EINFACHE ÜBERTRAGUNG, SCHNELLE ERGEBNISSE appeared first on BInsights.


Dot Net functions for Jedox

$
0
0

Hi,

With my another addition to the series of blog’s, this time I am trying to leverage the .NET potential with Jedox. In this post I will be writing a custom .NET dll, and utilizing it in the Jedox Macro.

Solution:

Step 1: Create a “Class Library”  C# project in your Visual Studio, remember to switch to the .NET version to 3.5 as the PHP likes it more, than version 4 and beyond. (Also remember, when you fire up your Visual Studio, Run it as Administrator)

CropperCapture[16]

 

Step 2: For you project generate a signing key which is require for you dll to be put into GAC (Global Assembly Cache, a .NET store for global library referencing This is the place where PHP will be looking for your dll)

CropperCapture[17]

Step 3: Navigate to your “AssemblyInfo.cs” file in your project, and change the following line, making your assembly as “ComVisible”.

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(true)]

 

Step 4: Now you are ready to jot down your .NET functionality, in your class file.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DotNetToJedox
{
public class JedoxInDotNet
{
public string GetData(string message)
{
return "Message:" + message;
}
}
}

Step 5: Fire your “Command Prompt” as an admin, and run the following command:

C:\>gacutil -i “<<Path to your dll>>\DotNetToJedox.dll”

Note: In case if you command prompt suggest that it cant find gacutil, just add the relevant refrence account to your OS, for the path:

C:\Program Files\Microsoft SDKs\Windows\v6.0A

The following post can help you further on that:

http://stackoverflow.com/questions/3397479/where-is-gacutil-exe

The above will add your dll in your machine GAC, which is now ready for your PHP/Jedox installation to utilize.

You can check the physical assembly being present in GAC by navigating to the following path and confirming:

C:\Windows\assembly

CropperCapture[18]

Step 6: Now its time to write some PHP Macro for Jedox to utilize our dll, So the code in one of the spreadsheets is as follows:

function test_dotnet(){

$sampleClass = new DOTNET("DotNetToJedox, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9fd42dd22c7fef0d, processorArchitecture=MSIL", "DotNetToJedox.JedoxInDotNet");
return __msgbox($sampleClass-&gt;GetData('Get me the message !!') , 'Dot Net To Jedox');

}

And the result is :

CropperCapture[19]

 

Note: This mechanism will work on single machine as GAC is system wide only. So if you need a .NET library functionality for you application, it has to be GAC deployed on the server where Jedox is installed.

Hope it helps !!

Downloads:

http://amolpandey.com/home/downloads/blog25_download.zip

 


Refrence: http://www.amolpandey.com/2014/10/22/dot-net-functions-for-jedox/

The post Dot Net functions for Jedox appeared first on BInsights.

Managing Web Reporting – Part 2

$
0
0

After being out in the wild for over 12 months, the Performance Dashboard has been one of the most popular posts on our blog. As it was originally written for in Jedox 5.0, we have updating it to reflect the latest functionality in 5.1 SR2. New Features

  • Hits chart now using a Stock type chart, that allows zooming in to specific days
  • Hits by Hour, to allow you to zoom in on the busiest time of the day
  • Doughnut chart now shows the report  for a specific hour, vs overall usage
  • Filters are clearer, and easy to reset.
  • Login stats, to see the numbers of users logging onto the server (including from Excel).
  • On the report tab, you can now open the specific report that you are analysing.
  • The ad-hoc tab now has a heatmap which helps with visualisation of the most popular reports. The drop list on this tab also now has the complete File Manager hierarchies to enable you to navigate easily.

NOTE: If you truncate your logs, please ensure you truncate the olap server log and the core log at the same time. As the Dashboard uses data from both logs so if they are out of sync, the numbers displays might not be correct. Installing the new Dashboard Download the .pb file here This is basically the same steps as the last Dashboard (which you can find here), but I will repeat the process for anyone doing it for the first time:

1. Log in to Jedox Web, and go to File Manager. Import the .pb file

2014-10-24 13_55_24-Jedox Web

2. Once imported, you should see the following:

img1

3. Download the Jedox-Stats.xml. This is a Jedox ETL Project. Open ETL Manager and import the project.

2014-10-24 11_36_24-Jedox Web

4. Download the Jedox-Stats.zip. Unzip this file. This is a Jedox database that you need to add to your Jedox data folder (stop the Jedox MOLAP Service first).

5. Start the MOLAP Service. Note, you can now change the ETL parameters on the dashboard itself:

2014-10-24 14_00_05-Jedox Web

6. Click the Run Stats button on the Dashboard. This will populate your cube with the settings from your system.

7. Once you have ran the ETL, refresh the Performance Dashboard. It should look something like this: 2014-10-24 13_50_14-Jedox Web

You’re done! The idea of this Dashboard is to make managing your Jedox web reporting portal easier. If you know what reports are being used and which ones are not, you can manage report development and prioritise the types of reports that users are using.

The post Managing Web Reporting – Part 2 appeared first on BInsights.

Schedule Up !!! Calender in Jedox !!!

$
0
0

Hi,

In one of the another exciting tweaks about Jedox for better scheduling of our resources, I like to present an outlook style calender format from our time management system.

Simple Calender View:

CropperCapture[1]

Calender with Dialog Box:

CropperCapture[2]

Coloured highlights of the scheduled resources:

CropperCapture[3]

The benefits of this UI  layed out are as follows:

1. Easy and clean view of scheduled resources

2. Similarity with outlook style calender, and with custom Javascript the outlook format schedules can be exported out as *.vcf file

3. Great for planning resources ahead, as with the features of drag and drop the data can be pushed in the cube via custom php file called upon by the js widget

4.The calender can be driven via database/cube data via custom PHP JSON files, thus rendering an insight into the existing data.

The UI in another version is mixed with additional information presented in an overlay dialog box, driven by another javascript framework.

The screen presented in this blog are for demonstration purposes only, where the complete functionality discussed is not exhibited in the attached code as its needs customization according to the business specifics desired.

Hope it helps, enjoy !!!

Note: For demonstration purposes, I have created the hyper links to the widgets in the above case, as the contents were relatively big to fit in a report and clarity.

CropperCapture[4]

Frameworks:

http://fullcalendar.io/

http://leanmodal.finelysliced.com.au/

Downloads:

http://amolpandey.com/home/downloads/blog27_download.zip

 


Refrence: http://www.amolpandey.com/2014/10/28/schedule-up-calender-in-jedox/

The post Schedule Up !!! Calender in Jedox !!! appeared first on BInsights.

Time Sheets !!! its fun to fill them up now…

$
0
0

Hi,

In the consultancy business, an aching pain for the consultants is to fill out the time sheets. What was I doing 2 hours before ??, and a a day before ??, what was my task I was assigned ??, did I completed it ??, and the list goes on !!!

And to add to problems, there are no jazzy UI’s around to fill up the same and keep the motivation levels high enough (same old jQuery validated text boxes), so I though it would be a good addition to the system and keep our team happy (inc myself) to keep fiddling with our time sheet management system and keeping my time sheets in good shape.

So cutting out all the talk, here I present to you with another widget which would make your time entry more fun, quicker and smarter way of doing things.

In the above widget I have leveraged the following JavaScript framework to achieve the same:

http://haineault.com/media/jquery/ui-timepickr/page/

CropperCapture[1]

Hope it helps, Enjoy !!!

Downloads:

http://amolpandey.com/home/downloads/blog26_download.zip


Refrence: http://www.amolpandey.com/2014/10/28/time-sheets-its-fun-to-fill-them-up-now/

The post Time Sheets !!! its fun to fill them up now… appeared first on BInsights.

Dynamic Reporting, List Box Filtration for Dashboard – Point and Click

$
0
0

Hi,

In this post, I would like to highlight one of the most favoured feature of the BI universe is click filtering of dashboards, most commonly popularized by Qlikview systems which allow users to play with dashboards interactively by the user selections impacting the global dashboard filters.

I was wondering if it was achievable to some extent by Jedox as well, and here’s one of my attempts to bring out the same from Jedox. In Qlikview the filter process is two ways that selection of filters can affect the dashboard contents like graphs and tables, and vice versa as well in which the selection made on graphs and tables re-selects the filters affecting the selection. Its a very intuitive way of exploring the data and sampling the impacting drivers for the selections.

So I though if I could leverage some part of the Qlikview goodness to the Jedox reporting system and here I am proud to present the interactive dashboard for point and click filtration:

CropperCapture[1]

The core feature of the above dashboard are the filter for the list box selections and the interactive nature of selection changing the dashboard content.

The dashboard leverage’s the list box provided by

http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxlistbox/jquery-listbox-getting-started.htm

Hope you like it !!!

Enjoy !!!

Downloads:

http://amolpandey.com/home/downloads/blog29_download.zip


Refrence: http://www.amolpandey.com/2014/11/02/dynamic-reporting-list-box-filtration-for-dashboard-point-and-click/

The post Dynamic Reporting, List Box Filtration for Dashboard – Point and Click appeared first on BInsights.

Real Time Dashboards

$
0
0

Hi

In another addition to my series of blog’s, here I would like to present you the real-time dashboard in which the interval frequency can be decided by you and obtain the following output.

CropperCapture[2]

Here I am using a custom widget to set a JavaScript poll to my custom defined macro to re-fresh the work book. Though I myself has created this up, I would not recommend it using it too much as a very similar functionality is also provided by Jedox natively but they restrict it to 10 seconds interval for a good reason.

auto_refresh

As too  much usage my methodology will get your infrastructure guys roasting food on the Jedox server (if you maintain the physical one !!) but jokes apart it would overload the server (Jedox core service) and thus reducing the optimal experience for all the other users.

But this widget I created for the users who love to visualize the real time data and its possibility with Jedox, These user base can mainly be targeted in the areas of finance (any thing that moves in finance impresses them) or any other domain as per the applicability.

Hope it helps.

Enjoy !!!

Downloads:

http://amolpandey.com/home/downloads/blog30_download.zip


Refrence: http://www.amolpandey.com/2014/11/02/real-time-dashboards/

 

The post Real Time Dashboards appeared first on BInsights.

Jedox Analyzer Report Or Pivot Table … Jazz it up !!!

$
0
0

Hi,

In this article I would like to draw your attention towards the back burner feature of Jedox called as “Analyzer Report”, Its one of the interesting and powerful features of Jedox which seems to me under utilized.

Reason’s being users are more fixated towards the standard/fixed reports which resolves their work issues and move on, or there’s no interest in the data discovery, or may be its developer centric feature to investigate the cube status, or putting it simple some say “its too complex“… Who knows !!!

But its been a great feature which provides a flexibility for one self to really slice and dice (core essence of BI) the segment’s across the cube and bring data discovery concept to the users, and leverage the potential of Jedox to the fullest.

http://knowledgebase.jedox.com/knowledgebase/example-jedox-analyzer-report/

CropperCapture[1]

But !!!

Until I stumble bled upon some thing like this,

http://webpivottable.com/

CropperCapture[3]

I thought it would be really great to incorporate it on the Jedox portal to add more fun to the analyzer report. So far I have realized visualizations really excite people more than numbers. (seems there’s a kid within all of us)

And indeed its been  a great add-on to the Jedox because it features all the functionalities in similar to the Excel based pivot table the summation/count/average of the fields and simultaneous visualizations are some of the benefits of the above add-on.

Experience it yourself and make the most of it !!!

Enjoy !!!

Note: In the above report, I have created a hyper link object to the webpage for the Pivot Report as

http://localhost:85/pr/custom/WebPivotTable-2.4.2-free/public/index.html

Downloads:

 http://amolpandey.com/home/downloads/blog28_download.zip

The post Jedox Analyzer Report Or Pivot Table … Jazz it up !!! appeared first on BInsights.


Simulation Strategy : Jedox

$
0
0

Hi,

Today in this post, I would like to share an simulation strategy using Jedox spreadsheets, where business users can design models via formulas and upon which simulations can run, building upon the case list for statistical insight.

Background:

Many times in real-world scenario, the clients of any business have a profile (meaning they have their choices, preferences, and a business can have multiple types of different profiled client), on which the business has to price products for optimal profit.

Now some times in retailing the bundling of products is also required to attract more customers. So for further taking this post, I have build a case study for an Indian takeaway business where the owner can profile his diners and design bundled menus for optimal profit.

Model Question:

With my existing Indian take away menu, and the following customer profile :

Couple

Type: Vegetarian

Categories Opted: Entrée (Any), Two different main course dish, rice, bread and dessert

With all the possible combinations of my menu has to offer, to the above diner experience.

Which combination of items on the menu will give me the  Maximum, Minimum and Average  diner spending.

Model Answer:

The model in the post runs a 1000 combinations of all the random items with the relevant filter to generate the diner spending and archives the information. Upon which the statistics on the generated list is searched for the required insights.

CropperCapture[17]

Notes: In the workbook, there is a simulation worksheet, which is actually not necessary as for larger list of combination generation it would dramatically slow down the system and its not actually required by the user, so in the long term for such simulated models I would stored the data in an array itself only and dump the evaluated statics on that array, thus saving the workbook size and opening the doors for larger iteration simulations.

Also higher the count of simulations, more accurate your model results.

In this post I have used a very simple simulation model to exhibit the basics for the simulation strategy, but this can open doors to more complex evaluations of Monte Carlo Simulations and similar for option pricing and more, which I will plan to come up soon as well.

http://en.wikipedia.org/wiki/Monte_Carlo_method

http://en.wikipedia.org/wiki/Monte_Carlo_methods_for_option_pricing

Hope it helps !!!

Enjoy !!!

Downloads:

http://amolpandey.com/home/downloads/blog31_download.zip


Refrence: http://www.amolpandey.com/2014/11/09/simulation-strategy-jedox/

The post Simulation Strategy : Jedox appeared first on BInsights.

Document Management System, bring it along Jedox !!!

$
0
0

Hi,

In another series of my post, today, I would like to introduce you to the power of document management system and how it can greatly simplify the office workflow processes and document management in any enterprise.

And to add, how it can be easily integrated in your Jedox portal to add-on the power to your Jedox usage experience.

Q- So what is Document Management System, what are its features and benefits ?

A- One of the big questions revolve around any system (IT) to be incorporated in the main stream business, is it really worth investing the money, time, labour to achieve the benefits. And what are the benefits ?

Well in this case of incorporating any document management system, the benefits are enormous: To name few document version, security, template generation, preview (if your system offers), collaboration,  auditing and more.

So being a developer, I like to follow a principle famous in the community DRY (Don’t repeat yourself). So in order to be efficient in this post for answering the above question, I providing some useful hyper links for viewers to gain the good insight into the feature’s of the product/system has to offer !!!

Links:

http://en.wikipedia.org/wiki/Document_management_system

Q- How would the Document Management System, integrate and add value with my existing Jedox installation ?

A- Now on this question I would like to elaborate in detail in this post and give more insight as the added value and benefits realized when document management system is incorporated along with your organisation BI platform.

Background

Every Project/Task has a Paper Work: In any organisation, when dealt with any Projects which can include financial planning, invoicing, reports,  approvals  and much more.

Some things can be a system in itself, like approvals (or similar) can be built in another system like SharePoint forms, or custom HTML forms to eliminate the custom document/emails and stream  line the process for more clarity.

But not every thing can be built out, no matter how simplified the form creation is, the office documents (in the form of Word, Excel, Outlook emails) makes their way in to fully efficient business system.

Some of the examples, are like organisations using email for approvals, reports stored on shared drives, custom word document with the first page dedicated to the a massive table listing the authors, and anonymous excel file all over the place…

Jedox Dimensions Drive Document Space: In many Jedox implementations, I have realised the of document generated by the business in the regular operation are usually categorised by the combination of Jedox dimension values

Example: For “Scenario” (Forecast_01 , Dimension)  the “Department” (Sales , Dimension) for the “Year” (2012 , Dimension) the “Sales Report” (this is the document)

In the above conversation statement, the user has pronounced the double quoted dimension values identifying the document.

Security: In many organisations, still people use the shared folders to achieve the collaboration of documents across teams and individuals, via the file/folder permissions. Its good while it last unless things get little out of hand and disaster strikes. File is readable by all users of the organisation, because IT revised permissions of all folders, or hierarchy update of permissions are few to blame.

Standardization: I am the approval manager, and users send me documents of whole wide variety of colours, fonts, shapes…, driving me mad to the find the relevant information I am looking for approval and permission.

System

For the above background, I have evaluated multiple systems, with one to name in this post attracting my attention with its great features is “OpenKM”. I found this document management system, very good and I was very impressed by its features provided, much added benefits even with its paid competitors and clarity of usage and clean interface.

http://www.openkm.com/en/

http://wiki.openkm.com/index.php/Main_Page

Jedox Integration:

Picture speaks a thousand word !!!

CropperCapture[16]

There are a great set of API with OpenKM web service calls whose structure is in-line with Jedox, to integrate well with custom PHP scripts based on the needs.

Integration scenario: The OpenKM roles/groups can be matched with the Jedox and security protected directory structure can be generated based on dimensional elements via scripts where the the permissions are driven by Jedox (regular script sync) for providing the user their space for their document storage pertaining to their dimensional area (like forecasting, based on project name)  operations, and can be shared on demand across users for efficient collaboration and notifications.

The integration between a Jedox model and OpenKM is purely business specific requirements based hence generic tool or utility wouldn’t be of much use, but in this post I am trying to highlight the added benefits of a document management system in relation to Jedox for bringing more organisation and features to the business process leveraged by Jedox.

Hope it helps !!!


Refrence: http://www.amolpandey.com/2014/11/09/document-management-system-bring-it-along-jedox/

The post Document Management System, bring it along Jedox !!! appeared first on BInsights.

Brownian/Weiner Process – Simulated Stock Prices

$
0
0

Hi,

This post is especially geared for the investment banking domain, but all are welcome on-board always :).

Embarking on this topic is more mathematically challenging as the crux of this topic is more geared to wards advance maths. But putting that aside for a while in this post I am trying to achieve which is an eye candy for any investment banker/trader requirement for any system they adopt.

In order to simulate the stock prices close to reality on any system (or lets say excel only) a normal random function can not achieve the same.

Why, just plot the “RAND” function for 50~100 points on any chart and see if it by any means represent’s  any stock price movement over the past few years.

CropperCapture[20]

The thing above lacks the “Drift” portion in the randomness, any stock price over the history is surly chaotic, but it has got some directional movement over the time, which the above chart lacks.

Thus to effectively simulate any stock price the mathematical model has to have a random/distortion and drift component to it. And this is where the complex mathematics start which I don’t want to delve  in this post. But here are the links for the interested readers to dig in more.

http://en.wikipedia.org/wiki/Brownian_motion

http://en.wikipedia.org/wiki/Wiener_process

http://en.wikipedia.org/wiki/It%C5%8D’s_lemma

(Ito’s Lemma has got some thing to with rocket science, enough to get you excited until to land up to its wiki page)

So in order to achieve a nice simulated stock price for our future financial models, just by using the native formulas, below is the spreadsheet to achieve the same.

CropperCapture[21]

The above looks more like a stock price movement (see the directional movement, in addition to the randomness), so go ahead and change some parameters and run your own stock simulation models.

So the big question ???

Why, do we need to simulate the stock prices ?? Ain’t the real data of the world is worth enough to run off our models…

Answer is NO, because this stock price generation system will lay the foundation of the future financial models I will introduce, to price complex derivatives like options, futures and its variant’s. To give you an insight using the above model foundation we will run internally thousands and millions of simulations of stocks prices to price the optimal price of the derivative. Remember my simulation strategy post (link). The concept is similar.

Hope it helps !!!

Enjoy !!!

Downloads:
http://amolpandey.com/home/downloads/blog33_download.zip


Refrence: http://www.amolpandey.com/2014/11/11/brownianweiner-process-simulated-stock-prices/

The post Brownian/Weiner Process – Simulated Stock Prices appeared first on BInsights.

Foreign exchange data, Download into your Jedox Model

$
0
0

Hi,

In this post I would like to share,  a technique which has been well rewarded to me in the past, is the extraction of foreign exchange rates from web into my financial models on demand.

Now some information in the world is never static (FX being one of them and the fastest moving information), and some times its not very fruitful to store the entire world data in your models/databases when you can get it on demand any time you need.  (Let experts of their field manage their data, remember my DRY “Dont Repeat Yourself” principle)

This technique has been critical in some of my past projects for the reason of multi currency/country financial reporting. Many businesses now a days are not limited to their continent, they are spread across the world earning’s in multiple currencies thus bring a different set of challenges with itself for conversion complexities and reporting.

Thus to address all the above problems, here you go with the solution:

CropperCapture[19]

The above Jedox spreadsheet downloads the data for the selected currency against USD for the user selected time frames and renders a chart out of it. The above spreadsheet can be amended to download the latest data itself only, for accounting representation of into multiple currencies.

(Note: The data downloaded in the above spreadsheet, is dumped on the “data” sheet)

This is a reference technique only for illustration purposes, which can be amened to incorporate multiple data sources providing data sets like  historical stock prices, macro economic data, custom web extractions, and similar. But ensure that the source is reliable and established in terms of their reporting format so that your model/extraction code continues to work depending upon the source.

Hope it helps !!!

Enjoy !!!

Downloads

http://amolpandey.com/home/downloads/blog32_download.zip


Refrence: http://www.amolpandey.com/2014/11/11/foreign-exchange-data-download-into-your-jedox-model/

The post Foreign exchange data, Download into your Jedox Model appeared first on BInsights.

Option Pricing and Greeks – Jedox

$
0
0

Hi,

In this post, I would like to present you the “Option Pricing n Greeks” in Jedox.

Well continuing on my previous post, I would like to highlight the potential of Jedox in terms of number crunching capacity, where I have designed the macro for option pricing most commonly used in any front desk team of an investment bank.

For all the background about options derivatives used in the financial industry and the measures (the Greeks) incorporated in this model references are as below:

http://www.investopedia.com/university/options/

http://www.investopedia.com/university/option-greeks/

http://en.wikipedia.org/wiki/Option_(finance)

http://en.wikipedia.org/wiki/Greeks_(finance)

This model in Jedox computes the option prices and its greeks based on the user inputs and as the benefits of Jedox come along together the possibilities are enormous.

CropperCapture[22]

Code:

function dOne($S, $X, $T, $r, $v, $d){
 &nbsp;$n1 = application()->Log($S / $X);
  $n2 = ($r - $d + 0.5 * pow($v , 2)) * $T;
  $d1 = $v * pow($T,2);
  $value = ($n1 + $n2) / $d1;
  return $value;
}

function NdOne($S, $X, $T, $r, $v, $d){
  $nd = dOne($S, $X, $T, $r, $v, $d);
  $n1 = -1* (pow($nd , 2) / 2);
  $d1 = application()->sqrt(2 * application()->Pi());
  $value = application()->Exp($n1) / $d1 ;
  return $value;
}

function dTwo($S, $X, $T, $r, $v, $d){
  $value = dOne($S, $X, $T, $r, $v, $d) - $v * application()->sqrt($T);
  return $value;
}

function NdTwo($S, $X, $T, $r, $v, $d){
  $value = application()->NormSDist(dTwo($S, $X, $T, $r, $v, $d));
  return $value;
}

function OptionPrice($OptionType, $S, $X, $T, $r, $v, $d) {
  if($OptionType == 'C'){
   $value = application()->Exp(-$d * $T) * $S * application()->NormSDist(dOne($S, $X, $T, $r, $v, $d)) - $X * application()->Exp(-$r * $T) * application()->NormSDist(dOne($S, $X, $T, $r, $v, $d) - $v * applica   tion()->sqrt($T));
  } elseif ($OptionType == 'P'){
   $m1 = application()->Exp(-1*$r * $T);
   $m2 = application()->NormSDist(-1 * dTwo($S, $X, $T, $r, $v, $d));
   $m3 = application()->Exp(-1 * $d * $T);
   $m4 = application()->NormSDist(-1 * dOne($S, $X, $T, $r, $v, $d));
   $s1 = $X * $m1 * $m2;
   $s2 = $S * $m3 * $m4;
    $value = $s1-$s2;
  }
  return $value;
}

function OptionDelta($OptionType, $S, $X, $T, $r, $v, $d){
  if($OptionType == 'C') {
   $value = application()->NormSDist(dOne($S, $X, $T, $r, $v, $d));
  }elseif ($OptionType == 'P'){
   $value = application()->NormSDist(dOne($S, $X, $T, $r, $v, $d)) - 1;
  }
  return $value;
}

function Gamma($S, $X, $T, $r, $v, $d){
   $value = NdOne($S, $X, $T, $r, $v, $d) / ($S * ($v * application()->sqrt($T)));
   return $value;
}

function Vega($S, $X, $T, $r, $v, $d){
  $value = 0.01 * $S * application()->sqrt($T) * NdOne($S, $X, $T, $r, $v, $d);
  return $value;
}

function OptionRho($OptionType, $S, $X, $T, $r, $v, $d){
  if($OptionType == 'C'){
   $value = 0.01 * $X * $T * Exp(-1 * $r * $T) * application()->NormSDist(dTwo($S, $X, $T, $r, $v, $d));
  }elseif ($OptionType == 'P'){
   $value = -0.01 * $X * $T * Exp(-1*$r * $T) * (1 - application()->NormSDist(dTwo($S, $X, $T, $r, $v, $d)));
  }
  return $value;
}

function OptionTheta($OptionType, $S, $X, $T, $r, $v, $d){
  if($OptionType == 'C'){
   $value = -(($S * $v * NdOne($S, $X, $T, $r, $v, $d)) / (2 * application()->sqrt($T)) - $r * $X * Exp(-1 * $r * ($T)) * NdTwo($S, $X, $T, $r, $v, $d)) / 365;
  }elseif ($OptionType == 'P'){
   $value = -(($S * $v * NdOne($S, $X, $T, $r, $v, $d)) / (2 * application()->sqrt($T)) + $r * $X * Exp(-1 * $r * ($T)) * (1 - NdTwo($S, $X, $T, $r, $v, $d))) / 365;
  }
  return $value;
}

Hope you like it.

Enjoy !!!

Downloads:

http://amolpandey.com/home/downloads/blog34_download.zip


Refrence: http://www.amolpandey.com/2014/11/11/option-pricing-and-greeks-jedox/

The post Option Pricing and Greeks – Jedox appeared first on BInsights.

Viewing all 140 articles
Browse latest View live