Creating KPI using OLAP DML
Hi all,
How do we develop KPI (Key Performance Indicators) using OLAP DML in AWM 10g R2 (Analytical Workspace Manager)? I am new to this tool. Can anybody help me with a sample code. If there is any other way of implementing KPI in Oracle BI, kindly quote that example as well.
Kieth, if you can answer my question and give me a sample OLAP DML code, i will be more than happy.
Thanks in advance
In 10g this is not quite as simple as 11g. To create a custom measure that calls an OLAP DML program you need to either:
1) Download the Excel Utility from the OLAP home page on OTN:
http://download.oracle.com/otn/java/olap/SpreadsheetCalcs_10203.zip
but check the readme first:
http://www.oracle.com/technology/products/bi/olap/OLAP_SpreadsheetCalcs.html
or
2) Use Warehouse Builder to manage your AWs. OWB allows you to automatically create custom calculations that call OLAP DML programs.
If you look at this posting on the Oracle OLAP Blog you will find an example of how to create an OLAP DML program and reference it from a calculated measure:
http://oracleolap.blogspot.com/2008/03/creating-calculated-measure-cube.html
Keith Laker
Oracle EMEA Consulting
OLAP Blog: http://oracleOLAP.blogspot.com/
OLAP Wiki: http://wiki.oracle.com/page/Oracle+OLAP+Option
DM Blog: http://oracledmt.blogspot.com/
OWB Blog : http://blogs.oracle.com/warehousebuilder/
OWB Wiki : http://wiki.oracle.com/page/Oracle+Warehouse+Builder
DW on OTN : http://www.oracle.com/technology/products/bi/db/11g/index.html
Similar Messages
-
Creating CUBE through OLAP DML
Hi
We have a relational database in which we had build cubes . Now we want to convert this into multi dimensional database format . Is it possible to make cubes through OLAP dml and are these cubes accessible via OLAP access packs .
AmarSo far, it has been my understanding and experience that you can't start from "nothing" and have an AW that is capable of using the OLAP API (Java-based access). It always needs the presence of a valid ROLAP cube, and the wizard really does nothing more than create from that the MOLAP equivalent in an AW. I haven't seen anything that lets you do this from only OLAP DML commands. I would love to be wrong, and have a method presented, but all my searching says you can't get there from here.
-
Creating variables in OLAP DML - 11g
Hi Experts,
My understanding is that the OLAP metadata is exposed to GUI via formulas only. if I create a variable in OLAP DML worksheet, is it possible to expose it to cube view, and awm by formulas/programs etc?
Kind RegardsIn OLAP Worksheet you can select 'SQL Mode' from the Options menu and run the SELECT statement there. Alternatively you can run the SELECT statement from inside an olap dml PROGRAM. Here is an example.
DEFINE LIST_AWS PROGRAM
PROGRAM
VARIABLE _owner TEXT
VARIABLE _aw TEXT
VARIABLE _errortext TEXT
VARIABLE _id_width INTEGER
TRAP ON HADERROR NOPRINT
" SQL Names are 30 characters long
_id_width = 30
" Declare a SQL cursor to get the list of AWs
SQL DECLARE AW_SQL CURSOR FOR -
SELECT OWNER, AW_NAME FROM ALL_AWS
" Open the cursor
SQL OPEN AW_SQL
" Loop through the results
WHILE SQLCODE EQ 0
DO
IF _aw EQ NA
THEN DO
" First loop, so print report headings
SHOW JOINCHARS(RPAD('OWNER', _id_width) ' ' 'AW')
SHOW JOINCHARS(RPAD('-' _id_width '-' ) ' ' RPAD('-' _id_width '-'))
DOEND
ELSE DO
" Print aw and owner names
SHOW JOINCHARS (RPAD(_owner, _id_width) ' ' _aw)
DOEND
" Fetch next row into local varialbes
SQL FETCH AW_SQL INTO :_owner, :_aw
DOEND
" A SQLCODE of 100 is OK,since it means end of records
IF SQLCODE EQ 100
THEN DO
SQL CLOSE AW_SQL
SQL CLEANUP
RETURN
DOEND
HADERROR:
SHOW SQLERRM
SQL CLEANUP
ENDAnd here is what I see when I call it as the GLOBAL user.
call list_aws
OWNER AW
SYS EXPRESS
SYS AWMD
SYS AWCREATE
SYS AWCREATE10G
SYS AWXML
SYS AWREPORT
GLOBAL GLOBAL -
Using OLAP DML to maintain measures
Can anyone point me to documentation on running custom DML programs in maintenance scripts in AWM? I would like to be able, for instance, to output information to the Logs.
You can run an insert statement from the OLAP DML to populate any table you want. The only complication is that the rows will only be persisted if the transaction is committed, and you can not (should not!) commit the transaction during the current build since it will persist bad data in the case of a failure. A possible solution is to write a PL/SQL procedure that begins an "autonomous transaction" and make this be responsible for logging. E.g.
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO ...
COMMIT;
END;
/You would then call your PL/SQL procedure from OLAP DML every time you wanted to log a record. -
How do I view data from OLAP DML program or statement?
Hi
I'm struggling to find any information on this topic anywhere on the net:
How to view data produced by an Oracle OLAP DML program or statement.
Background :
I am using the latest AWM to create and maintain dimensions, cubes and measures. However, I've noticed that AWM, Discoverer OLAP, BI Beans, Excel Plug-In et al only provide a fixed set of formula and expressions.
For example, I wanted to created a Standard Deviation (STDEV) on measure. After much searching I learnt that I could do this by creating a custom measure in AWM by importing a measure defined in an XML dcoument as it's not provided by AWM. The output in Discoverer OLAP on the surface seems to give the correct results, however when drilling from high level to lower level of time time dimension hierarchy Discoverer includes the parent value in the calculation and renders the values incorrect.
My alternative is to use OLAP DML, as it provides a richer range of formuale and calculations possibilities and I was hoping to use this functionality to do create the measures. I have the distinct impression, however, that OLAP Worksheet is the only interface out there to do this.
It seems very primitive and limited with regards to data output, almost like SQL*Plus in many ways.
The burning questions I have are :
1) Do I need to write DML programs to perform these custom measure calculations and add them to cubes or do I import the custom measures via AWM and XML?
2) If the answer to question 1 is DML programming, is there a way of viewing the OLAP data output through a GUI interface without embedding the statements in SQL.
3) Has anyone experienced or noticed the same problem with Discoverer OLAP, AWM Viewer that I mentioned above? i,e, statistical functions performed on whole dimension hierarchy rather than lower levels.
I'm hoping someone out there knows what I am trying to do or get at. Keith, any ideas or suggestions?
Thanks
Kind Regards
GregHi Greg,
There are two ways to achieve what you want. Both require the use of custom calculations which cannot be created via the calculation wizard within AWM. To do this the easiest way is step outside of AWM and use the Excel Calculation utility that is on the OLAP OTN home page:
Creating OLAP Calculations using Excel
http://download.oracle.com/otn/java/olap/SpreadsheetCalcs_10203.zip
Readme
http://www.oracle.com/technology/products/bi/olap/OLAP_SpreadsheetCalcs.html
(Oracle OLAP DML Reference contains a list of all the OLAP functions that can be used to create a custom calculation. http://www.oracle.com/technology/products/bi/olap/OLAP_DML_10.2.zip)
The Excel tool lets you assign your own formula to a measure and then uploads that measure definition into your AW. It is possible to import a custom calculation template into AWM using the menu option on the Calculated Measure node of each cube, but it is safer to use the Excel Worksheet as this directly uses the public XML API and is always best to use a public API rather than hacking XML templates.
There are two types of custom calculation:
1) Formula: using a formula you can directly call any of the OLAP functions. For example to create a measure that returns the standard deviation for a measure then you would enter the following as the formula for your calculated measure:
stddev(sales_revenue, time)
The easiest way to test if the measure is working as expected is to use the data viewer within AWM.
2) Programs - if the function you need is not provided or you want to do special processing to return a result you can create an OLAP DML program which can return a result. To do this use OLAP Worksheet to define the program and add a datatype to the DEFINE statement, such as :
DEFINE PRG_SD_SALES PROGRAM DECIMAL
In the program return the value you have calculated within your program. Within the program you can do just about anything but be aware that your program is going to fire for every cell within your virtual cube so it must be efficient and fast to execute. For a measure then you would enter the following as the formula for your calculated measure:
prg_sd_sales(time, products, geographies, channels).
The actual program code would look something like this:
DEFINE PRG_SD_REVENUE PROGRAM DECIMAL
PROGRAM
argument T_TIME TIME
argument T_PRODUCT PRODUCTS
argument T_GEOGRAPHY GEOGRAPHIES
argument T_CHANNEL CHANNELS
variable D_RETURN decimal
TEMPSTAT TIME, PRODUCTS, GEOGRAPHIES, CHANNELS
do
limit PRODUCTS to T_PRODUCT
limit CHANNELS to T_CHANNEL
limit GEOGRAPHIES to T_GEOGRAPHY
limit TIME to T_TIME
limit TIME add descendants using TIME_PARENTREL
limit TIME keep TIME_LEVELREL 'CAL_MONTH'
D_RETURN = stddev(SALES_REVENUE)
doend
return D_RETURN
END
This code computes a standard deviation the all months within the specified time range, at year level for all 12 months, at quarter level for the three months within the quarter ans returns NA at the month level.
As the code executes within a implicit loop you can only change the status fo dimensions that for part of that implicit by using the TEMPSTAT command. To test the program at the command line use the OLAP Worksheet and the SHOW command to just return one cell of data, DO NOT SIMPLY USE THE RPR COMMAND because you will have to wait for the whole cube to be returned. If you want to use the RPR command make sure you limit your base dimensions first! You can use PRGTRACE to debug your program code it is not working as expected. Again, the easiest way to test if the measure is working as expected is to use the data viewer within AWM, although this will not return debug information so send all your debug output to a file to capture any errors and/or trace the execution flow.
Hope this helps
Keith Laker
Oracle EMEA Consulting
BI Blog: http://oraclebi.blogspot.com/
DM Blog: http://oracledmt.blogspot.com/
BI on Oracle: http://www.oracle.com/bi/
BI on OTN: http://www.oracle.com/technology/products/bi/
BI Samples: http://www.oracle.com/technology/products/bi/samples/ -
How to generate OLAP DML code or CWM2 code outside of workspace manager 10g
I am using AWM 10.2, where I am creating cubes and dimensions etc. I can export the workspace into XML, but i want more, i want to generate definition of my OLAP, i want to see OLAP DML code for creating my workspace. Anybod has an idea ?
1) How can I generate OLAP DML definition of my existing workspace ?
Second thing is, that I really don't understand the concept of CWM2, what is this good for ? Is my AWM automatically generating some CWM2 statements and executing it ? Where can i see them ? Why do i need another logical CWM definition when I have regular OLAP definition ?
2) What is the role of CWM2 in OLAP ? How can i generate CWM2 code outside of my existing workspace ?The DESCRIBE command will give you the definition of the object but it won't tell you anything about how objects should be populated. The API for Analytic Workspaces (AW/XML) takes responsibility for both object creation and object maintenance.
What is it that you might want to accomplish by using OLAP DML to create the objects? -
Help on OLAP DML function – "joinchars"
Hi,
We have built a cube called 'CubeTest' which has a measure called 'TestMeasure' of decimal data type, using Oracle AWM v10.2.0.3.0A.
Now, I am using "Oracle OLAP Calculations v1.2.5", as available on OTN homepage, to define my own calculated measures using OLAP DML for this cube.
I have defined the following two measures (for both, Calculation Type is 'Equation' and both are using free-form equations defined over TestMeasure):
1. Calculated_Measure1
2. Calculated_Measure2
Now, I want to define a third calculated measure in a way that it represents a concatenation of the above two measures suffixed with some standard text.
e.g. A Typical value of the third calculated measure will be like:
Calculated_Measure1 + 'ABC' + Calculated_Measure2 + 'XYZ'
Here, the '+' sign indicates the idea of concatenation.
To achieve the above result, I am using the OLAP DML function "joinchars" to define a free-form equation like the one below:
joinchars(Calculated_Measure1,'ABC',Calculated_Measure2,'XYZ')
Now, the issue is that calculation like the one above, using joinchars is not being created successfully. I tried pre-qualifying (and not pre-qualifying) the names of the calculated measures with the cube name and also experimenting with the “Show” command. Also, once the calculation definition fails to get created, I am not even being able to attach my AW in R/W mode as I get the error as below:
oracle.AWXML.AWException: java.lang.NullPointerExceptionat oracle.AWXML.AW.readAWDefinitions(AW.java:1339)at oracle.olap.awm.dataobject.aw.WorkspaceDO.getModelAW(WorkspaceDO.java:803)at oracle.olap.awm.dataobject.aw.WorkspaceDO.getModelAW(WorkspaceDO.java:749)at oracle.olap.awm.navigator.node.WorkspaceNode.getModelerViewChildren(WorkspaceNode.java:368)at oracle.olap.awm.navigator.node.WorkspaceNode.getChildren(WorkspaceNode.java:341)at oracle.olap.awm.navigator.node.BaseNodeModel.refreshData(BaseNodeModel.java:74)at oracle.olap.awm.navigator.node.BaseNodeModel.dTreeItemExpanding(BaseNodeModel.java:221)at oracle.bali.ewt.dTree.DTreeDeferredParent.__fireExpansionChanging(Unknown Source)at oracle.bali.ewt.dTree.DTreeDeferredParent.setExpanded(Unknown Source)at oracle.olap.awm.navigator.node.BaseNode.expandHelper(BaseNode.java:2186)at oracle.olap.awm.navigator.node.BaseNode.access$400(BaseNode.java:109)at oracle.olap.awm.navigator.node.BaseNode$ExpansionThread.run(BaseNode.java:2136)Caused by: java.lang.NullPointerExceptionat oracle.AWXML.AW.readAWDefinitions(AW.java:1313)... 11 more
For the above issue, I have the following questions to seek your help on:
1. First, obviously, to know what is wrong with the usage of "joinchars" in this scenario.
2. If we use Oracle OLAP Calculations v1.2.5 to define any calculations, and if for some reason, the calculation is not defined successfully, is there any way to see what went wrong and where (this is because if your calculation definition fails, the Oracle OLAP Calculations v1.2.5 utility just exits out without giving any significant information on the reason for failures).
3. When we create any new calculation and then click on “Define Calculations” button, the Oracle OLAP Calculations v1.2.5 utility prompts us with the message “Do you want to update the AW views after creating the calculation (Y/N)? – Can you please help me with the details on the implications of stating a Y or N to this message.
Any help on these questions is much appreciated.
Thanks and Regards,
PiyushPiyush..
The Error you get on using the rpr command is a display error, its not a functionality issue. Think of this as something similar to the sqlplus buffer overflow issue if you have a pl/sql program which outputs a lot of dbms_output.put_line statements.
So if you get a display error, restrict the cube or the dimensions to a reasonable number and check your output. Example: Take every user dimension and restrict them to a few values... (say, 5 products, 1 channel, 1 location, 1 organization, 2 time periods)..
Rpr <<expression>>
will return the expression for every cell in status.. Depending on the dimensions that the expression is based on, for every dimension depending on the number of values (members) in status, the <<expression>> is evaluated and output'ed.
No of cells in report is Cross product of each dimensions status (statlength).. For example above.. 5*1*1*1*2 = 10 cells.
Shw <<expression>>
will return the expression for the first cell in status.. 1st value (member) in status for every dimension that <<expression>> depends on.
Hence Shw <<expressions>> does not lead to a display error since the output is restricted (small).
Using the OLAP Calc utility to define the formula (the utility uses java olap apis), you may need to do something to protect the single quotes so that the expression gets evaluated with single quotes in the OLAP DML formula.
You can try...
joinchars(CUBE1_CMEAS1, \'ABC\', CUBE1_CMEAS2, \'XYZ\')
If above doesn't work, just ask for help regd how to translate a formula expression containing single quotes (formula is correct in OLAP DML) into the AW via the Spreadheet utility.
HTH
Shankar -
I am not able to get the patch no 2323002 for WinXP/NT/2000. Our project requires to tap the data stored in the cube for analysis and reporting .We plan to use OLAP-DML as a work about.
Can we write OLAP-DML procedures to reply to the dynamic queries of the users and display ther results in JAVA i.e. interface it with JAVA? Also pls tell me how to create stored procedures. i am a new comer to OLAP. Pls help me out.
thanx in advance
PrahaladHi,
You should post this to the OLAP forum.
Thanks, Mark -
R KIMBALL & OLAP DML QUESTIONS
Hi. I'm a OLAP DML student and like a lot of you (i guess it) i have read Ralph kimbal Books, specifically "The Data Warehouse Lifecycle Toolkit" to undertand multidimesional modeling.
So.... here i a´m questioning to me how do i put all my multidimensional modeling into Analytic Workspaces Objects. My questios are:
1) Does exist some documents that teach how to pass from teory to practice, i mean from multidimensional modeling to AW objetcs? (i can pay for it !!!). (I have read all Oracle Examples - SH and Global) and them always show the same - everyiting is ready to work and work-.
2) Puntually, how do i represent non-hierarchial attributes and how do i use them. I feel that non-hierarchial attributes are not useful to make analysis.... please correct me.
3) How do i define a default herarchy using OLAP DML and if my dimension have more than one hierarchy how do i work wiht them.Hello Lisandro,
1) The easiest way to create AW objects is to use the AWM application, that comes with online documentation. You can start creating the basic objects (dimensions, cubes, measures, and simple calculations) using the AWM GUI, and continue with the OLAP Worksheet for the other objects, eg. models, aggregation/allocation maps, relations etc. At least the first part of this is also within the scope of a present or upcoming OLAP 10g course from Oracle University.
2) I'm not sure what you mean by your question. Attributes are global to a dimension (which is obvious if you use a value based dimension), otherwise AWM etc. lets you define attribute projections (limit attributes) to hierarchies and levels.
3) You can specifically assign a default hierarchy using AWM, or the OLAP AW Java API, Hierachy setIsDefault() method. Also, there is a Normal Form relation DEFAULT_HIER between a dimension and its default hierarchy, but I don't know if you can just add to this relation to make it work.
Regards, Hans Henrik
Message was edited by:
hheriksen 17-Oct-2005 09:53 CET -
Hi All,
Could you please clarify if I can access the AW created and maintained by OLAP DML via AWM?
I created an AW and some dims and cubes inside it, by using OLAP Worksheet, and cannot see these objects in AWM?
Kind Regards, NeeleshThat is another question. As long as you use AWM to define the dimensions, attributes, measures, and cubes, then you should be fine. And you are correct in saying that the OLAP DML can be used as a calculation language to extend the model defined through AWM. (You can do many other things, too, with this 30-year-old language, but then you really are on your own.)
There are two basic points of integration between the objects defined in AWM and objects you define yourself using OLAP DML.
(1) Calculated measures can be directed to FORMULAs that you define. This, in turn, gives you access to PROGRAMs and other structures. There is also a way, not exposed by AWM, to support calculated attributes (in 11.2.0.2).
(2) Cube Build Scripts can execute OLAP DML commands during a cube build. This gives you a way to link into a forecasting program, for example.
In the other direction you can use the (new to 11.2.0.2) objorg function in OLAP DML to get access to the structures defined through AWM. (This is better than hardcoding the generated names.)
So the real issue is how you edit these calculation objects through AWM. One answer, and it is not a bad one, is through the OLAP Worksheet. The EDIT command will bring up a PROGRAM editor, for example.
For a non AWM answer you could try the old OX program, which is available from here: http://www.oracle.com/technetwork/database/options/olap/olap-downloads-098860.html . This provides a full view of all the objects in an AW. It is quirky, but I like it. -
Dear All,
We are using OLAP DML to work with multi-dimensional data on an Analytic workspace. How do you access pre-stored multi dimensional variables set up in a analytic workspace, using OLAP API's.
How/Is it possible to load Cube data from a multi-dimensional variable ?
How or from where do we setup OLAP WORKSHEET to work with OLAP DML ??
Regards,
SubhankarJean-Marc,
I had an email from one of my colleagues in development and has kindly explained some errors in my previous posting. In 10.2 and earlier, relational import/export should do as good a job as EIF, except that these utilities are slower (due to the need to text encode the EIF data) and less granular (you can only export an entire schema at a time).
Fortunately, there is no need to worry about the various objects that comprise and AW. We manage all that for you directly inside the database.
However, the performance overhead is enough that for clients with the know-how, it's usually recommended to use EIF instead. That being said, the particular problem you are having seem extreme since you should not see a "15 minutes" to "hangs" slowdown when using relational import.
Have you tried monitoring the export job via Enterprise Manager to check the wait events which might be occuring when the system hangs? Are there any messages in the alert log?
It might be a good idea to open a TAR with Support to try and diagnose this issue.
Keith Laker
Oracle EMEA Consulting
OLAP Blog: http://oracleOLAP.blogspot.com/
OLAP Wiki: http://wiki.oracle.com/page/Oracle+OLAP+Option
DM Blog: http://oracledmt.blogspot.com/
OWB Blog : http://blogs.oracle.com/warehousebuilder/
OWB Wiki : http://wiki.oracle.com/page/Oracle+Warehouse+Builder
DW on OTN : http://www.oracle.com/technology/products/bi/db/11g/index.html -
AWM OLAP-DML Expression to large?
Hello all!
I have a problem with my AW or with my AW -Manager. I used OLAP-DML Expressions ,and when I write longer Expressions, I got:
oracle.express.idl.util.OlapiException: java.sql.SQLException: Keine weiteren Daten aus Socket zu lesen.
So no more data from socket. I have to restart AW Manager. I can compile the Expressio nwithout error, but when I save the Expression I get the error.
I use AWM 11.2.0.3.0A
Her an example:
This function very well:
if time_utility eq 'CURRENT_DAY' then CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq '12MONTHS' then lag(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 12, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'CURRENT_DAY28' then lag(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 28, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'CURRENT_DAY7' then lag(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 7, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'CURRENT_MONTH' then CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq 'CURRENT_MONTH12' then lag(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 12, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'DELTA_CD7' then LAGPCT(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 7, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'DELTA_CD28' then LAGPCT(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 28, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'DELTA_CM12' then LAGPCT(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 12, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'MTD' then if extchars(zeit,1,3) eq 'DAY' then mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION,1-convert(joinchars(extchars(zeit,5,2)) int),0,1,zeit) else CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq 'MTD1' then if extchars(zeit,1,3) eq 'DAY' then mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION,convert (ADD_MONTHS(convert( joinchars( '01' extchars(zeit,7,8)), date 'DMY'), -1) - convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int) ,convert(ADD_MONTHS(convert(extchars(zeit,5,8), date 'DMY'), -1) - convert(extchars(zeit,5,8), date 'DMY'),int),1,zeit) else CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq 'MTD12' then if extchars(zeit,1,3) eq 'DAY' then mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION,convert (ADD_MONTHS(convert( joinchars( '01' extchars(zeit,7,8)), date 'DMY'), -12) - convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int) ,convert(ADD_MONTHS(convert(extchars(zeit,5,8), date 'DMY'), -12) - convert(extchars(zeit,5,8), date 'DMY'),int),1,zeit) else CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq 'YTD' then if extchars(zeit,1,3) eq 'DAY' then if convert(extchars(zeit,8,2), int) GE 10 AND convert(extchars(zeit,8,2), int) LE 12 THEN mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, convert(convert(joinchars( '01.10.' extchars(zeit,11,2)), date 'DMY') - convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int) , 0,1,zeit) ELSE mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, convert( ADD_MONTHS( convert(joinchars( '01.10.' extchars(zeit,11,2)), date 'DMY'),-12) - convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int) , 0,1,zeit) else CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq 'YTD1' then if extchars(zeit,1,3) eq 'DAY' then if convert(extchars(zeit,8,2), int) GE 10 AND convert(extchars(zeit,8,2), int) LE 12 THEN mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, convert( ADD_MONTHS (convert(joinchars( '01.10.' extchars(zeit,11,2)), date 'DMY'),-12) -convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int), convert(ADD_MONTHS(convert(extchars(zeit,5,8), date 'DMY'), -12) - convert(extchars(zeit,5,8), date 'DMY'),int),1,zeit) ELSE mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, convert( ADD_MONTHS (convert(joinchars( '01.10.' extchars(zeit,11,2)), date 'DMY'),- 2 * 12 ) -convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int), convert(ADD_MONTHS(convert(extchars(zeit,5,8), date 'DMY'), - 12) - convert(extchars(zeit,5,8), date 'DMY'),int),1,zeit) else CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION
but this is too much:
if prod_type_no eq 'PROD_TYPE_L1_Call' then ( -
if time_utility eq 'CURRENT_DAY' then CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq '12MONTHS' then lag(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 12, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'CURRENT_DAY28' then lag(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 28, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'CURRENT_DAY7' then lag(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 7, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'CURRENT_MONTH' then CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq 'CURRENT_MONTH12' then lag(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 12, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'DELTA_CD7' then LAGPCT(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 7, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'DELTA_CD28' then LAGPCT(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 28, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'DELTA_CM12' then LAGPCT(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, 12, zeit, RELATION ZEIT_LEVELREL) else -
if time_utility eq 'MTD' then if extchars(zeit,1,3) eq 'DAY' then mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION,1-convert(joinchars(extchars(zeit,5,2)) int),0,1,zeit) else CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq 'MTD1' then if extchars(zeit,1,3) eq 'DAY' then mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION,convert (ADD_MONTHS(convert( joinchars( '01' extchars(zeit,7,8)), date 'DMY'), -1) - convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int) ,convert(ADD_MONTHS(convert(extchars(zeit,5,8), date 'DMY'), -1) - convert(extchars(zeit,5,8), date 'DMY'),int),1,zeit) else CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq 'MTD12' then if extchars(zeit,1,3) eq 'DAY' then mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION,convert (ADD_MONTHS(convert( joinchars( '01' extchars(zeit,7,8)), date 'DMY'), -12) - convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int) ,convert(ADD_MONTHS(convert(extchars(zeit,5,8), date 'DMY'), -12) - convert(extchars(zeit,5,8), date 'DMY'),int),1,zeit) else CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq 'YTD' then if extchars(zeit,1,3) eq 'DAY' then if convert(extchars(zeit,8,2), int) GE 10 AND convert(extchars(zeit,8,2), int) LE 12 THEN mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, convert(convert(joinchars( '01.10.' extchars(zeit,11,2)), date 'DMY') - convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int) , 0,1,zeit) ELSE mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, convert( ADD_MONTHS( convert(joinchars( '01.10.' extchars(zeit,11,2)), date 'DMY'),-12) - convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int) , 0,1,zeit) else CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
if time_utility eq 'YTD1' then if extchars(zeit,1,3) eq 'DAY' then if convert(extchars(zeit,8,2), int) GE 10 AND convert(extchars(zeit,8,2), int) LE 12 THEN mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, convert( ADD_MONTHS (convert(joinchars( '01.10.' extchars(zeit,11,2)), date 'DMY'),-12) -convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int), convert(ADD_MONTHS(convert(extchars(zeit,5,8), date 'DMY'), -12) - convert(extchars(zeit,5,8), date 'DMY'),int),1,zeit) ELSE mvtot(CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION, convert( ADD_MONTHS (convert(joinchars( '01.10.' extchars(zeit,11,2)), date 'DMY'),- 2 * 12 ) -convert( joinchars( extchars(zeit,5,8)), date 'DMY'),int), convert(ADD_MONTHS(convert(extchars(zeit,5,8), date 'DMY'), - 12) - convert(extchars(zeit,5,8), date 'DMY'),int),1,zeit) else CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION else -
CUB_MEMBER_TRANSACTION_F_TVON / CUB_MEMBER_TRANSACTION_F_DURATION) ELSE -
+0+
Is there a limit for the length of Expressions? Or is there a problem with AW -Manager ??
Thanks a lot
Greetings from Berlin
Michael
Edited by: Schattenzeit on 13.05.2013 14:54Not sure why you are getting error.
You can put this in an OLAP dml program and call that program in your formula (i.e., calculated measure).
Some other suggestions:
(1). Define multiple formulas (or calculated measures) in your AW. For example you can define a separate calc measure for moving total function.
(2). Try to use OLAP Expression Syntax, instead of OLAP dml.
IF...THEN..ELSE logic is done using CASE statements in OLAP Expression Syntax. Moving Total and other time-series functions can be done easily also in OLAP Expression Syntax.
(3). Looks like you probably have a dimension whose members are time-series measures. You can define all the time series measures separately also. Its easier to manage each measure and you can do LOOP_VAR and LOOP_DENSE settings also for better performance. -
Hi,
i would like to access and query my cube. Is it possible to do it without building a view? Can I do it just using OLAP DML? Where can I find an example?
thank youYes. You can query using OLAP DML. Try this in the OLAP Worksheet (within the AWM)
(Assuming you have attached to the AW)
allstat
limit dimName1 to 'dimValue1'
limit dimName2 to 'dimValue2'
report measName1
Hope this helps,
Swapan. -
Creating a Cube using pure OLAP DML
This should be quite simple, but neither reading OLAP_*.pdf nor googling helped me, so maybe you can give me a hint where to look:
I want to create dimensions, populate them, create a cube, and finally populate it, using just OLAP DML (i.e. no DBMS_AW or CWM/CWM2 packages).
1) How can I execute OLAP DML? Right now I'm using sqlplus, wrapping each line in execute dbms_aw.execute(...);
There's some better way, right? :)
2) Can someone give me a link to a simple tutorial, showing how to create a cube et c.? Right now I'm as far as
AW CREATE olaptest1
DEFINE dimfoo DIMENSION TEXT AW olaptest1
DEFINE dimbar DIMENSION TEXT AW olaptest1
SQL SELECT DISTINCT(foo) FROM footable ORDER BY 1 INTO :dimfoo
(the latter one fails, telling me that "quux is not a vaild olaptest1!dimfoo")
3) Have I understood this correctly: I only need an Catalog if I want to work with AWM or DBMS_AWM, not if I just use DML?I'm not sure exactly why you want to do this.
I guess I didn't explain very clearly :)
We (i.e. the company I work for) creates software (in C++) which needs to work with a lot of data which is in an Oracle-DB.
As the analysis done by the SW would profit (performance-wise) from the layout of the data in an cube, we want to get the data in a cube.
But information like the number of dimensions isn't known beforehand (as that's sth. that's dependent on the site the customer uses the SW on, and can
change with time), the software has to do the creation of dims and the cube itself.
(For the curious ones: http://www.centerpoint.eu.com/ )
And as OLAPI isn't available for C++ (at least afaics), I'd really want to do this in PL/SQL.
If you do use standard form, you then allow yourself the
option of using the various tools later
That's really not needed :)
You can always build the original AW using
AWM, then save the build script it generates, and use
that to do subsequent builds.
Is that build-script in OLAP DML? How do I save it?
BTW, in addition to the SPL INFILE command, there is
the DBMS_AW.INFILE plsql routine, which saves you
some quotes :-).
dbms_aw.execute('infile ''work_dir/my.inf''') vs
dbms_aw.infile('work_dir/my.inf')
I hate superfluous quotes :)
Thanks Jim! -
Could use some help for creating KPI for Created SharePoint 2010 List Items
Hello All,
I am using PPS and connecting to an SP 2010 List as a Datasource. I'd like to create KPI's against the List showing how many items each individual has created (using the Created column) and set a goal with Indicators showing visual performance (Red,
Yellow, Green).
Any guidance is much appreciated!I concur with Scott. Check your Recycle Bin and then also check the Site Collection Recycle Bin. Once deleted from there, it should free up space.
As far as the database side of things go, the database would have grown to accommodate the larger list. If you're trying to recover space on that side of the equation, you'll need to conduct a shrink operation against the database in question.
I trust that answers your question...
Thanks
C
|
RSS |
http://crayveon.com/blog |
SharePoint Scripts | Twitter |
Google+ | LinkedIn |
Facebook | Quix Utilities for SharePoint
Maybe you are looking for
-
Why will the new version of picasa not work on my imac
Why will my upgraded version of picasa not work on my IMac???HELP It will start to load and then error message and cuts off. ( Picasa is photo editing software)
-
Not in JDeveloper: Lifecycle PhaseListener best practice for a single page?
ADF Faces 10.1.3.2 * Not using JDeveloper * Two questions: I need to add logic to the lifecycle for one page and not all of the pages in the application. 1.) What is the best practice to write a Lifecycle PhaseListener for a single page? I understand
-
So Excited!! Capital One response to GW letter!
Yay! Doing the a little nervous but happy dance! I wrote a GW letter to Capital one about a week ago and they just called me today! I can't believe the quick response after what I have read on here. Capital One is notorious for denying GW letters or
-
SharePoint page as a Word file
hi sir, I want to reterive html content of current page on button click event in c# and convert it to word file. and also I want to save a SharePoint page as a Word file vijay
-
How do I upgrade os 10.2 to os 10.6
Hi. I have a Mac Power PC G4 tower, running with 500Mhz. I am trying to upgrade OS 10.2 to OS 10.6. Instead of buying my young boys a new computer, I thought I could update this one, instead of them using my up to date laptops.(I am a graphic designe