Categories
- All Categories
- 15 Oracle Analytics Sharing Center
- 16 Oracle Analytics Lounge
- 216 Oracle Analytics News
- 43 Oracle Analytics Videos
- 15.7K Oracle Analytics Forums
- 6.1K Oracle Analytics Idea Labs
- Oracle Analytics User Groups
- 79 Oracle Analytics Trainings
- 15 Oracle Analytics Data Visualizations Challenge
- Find Partners
- For Partners
Hyperion Essbase Integration with ODI 12c

Hello
I'm trying to do an integration in ODI 12c to load data from an Oracle database to HyperionEssbase. I am having problems with the RKM when performing the Reverse Engineering.
My KM is composed of steps 1.Reset MetaData 2.Start the Reverse and 3.Set MetaData.
The error occurs in step 2.Start the Reverse.
The code of this task is in Jython, an its the following:
from java.util import HashMap
from java.lang import Boolean
from com.hyperion.odi.common import ODIConstants
from com.hyperion.odi.common import ODIModelImporter
from com.hyperion.odi.connection import HypAppConnectionFactory
#
# source planning connection properties
#
serverName = "<%=snpRef.getInfo("SRC_DSERV_NAME")%>"
userName = "<%=snpRef.getInfo("SRC_USER_NAME")%>"
password = "password.1"
application = "<%=snpRef.getInfo("SRC_CATALOG")%>"
database = "<%=snpRef.getInfo("SRC_SCHEMA")%>"
portStr = "1423"
srvportParts = serverName.split(':',2)
srvStr = srvportParts[0]
if(len(srvportParts) > 1):
portStr = srvportParts[1]
#
# Put the connection properites and initialize the planning loader
#
srcProps = HashMap()
srcProps.put(ODIConstants.SERVER,srvStr)
srcProps.put(ODIConstants.PORT,portStr)
srcProps.put(ODIConstants.USER,userName)
srcProps.put(ODIConstants.PASSWORD,password)
srcProps.put(ODIConstants.APPLICATION_NAME,application)
srcProps.put(ODIConstants.DATABASE_NAME,database)
imod = <%=snpRef.getModel("GLOBAL_ID")%>
multipleDataCols = <%=snpRef.getOption("MULTIPLE_DATA_COLUMNS")%>
dataColDimension = r"<%=snpRef.getOption("DATA_COLUMN_DIMENSION")%>"
dataColMembers = r"<%=snpRef.getOption("DATA_COLUMN_MEMBERS")%>"
extractAttrMembers = <%=snpRef.getOption("EXTRACT_ATTRIBUTE_MEMBERS")%>
rkmOptions = HashMap()
rkmOptions.put(ODIConstants.MULTIPLE_DATA_COLUMNS, Boolean(multipleDataCols))
rkmOptions.put(ODIConstants.DATA_COLUMN_DIMENSION, dataColDimension)
rkmOptions.put(ODIConstants.DATA_COLUMN_MEMBERS, dataColMembers)
rkmOptions.put(ODIConstants.EXTRACT_ATTRIBUTE_MEMBERS, Boolean(extractAttrMembers))
#get planning connection
hApp = HypAppConnectionFactory.getAppConnection(HypAppConnectionFactory.APP_ESSBASE, srcProps)
#get connection to repository
repCon = odiRef.getJDBCConnection("DEST")
#
# START THE REVERSE
#
odiModelImporter = ODIModelImporter(imod, hApp, repCon, rkmOptions)
odiModelImporter.importModels()
When executing the Reverse Engineering, the following error occurs:
ODI-1590: The execution of the script failed.
Caused By: org.apache.bsf.BSFException: exception from Jython:
SyntaxError: ("mismatched input 'b8' expecting NEWLINE", ('<string>', 35, 24, 'imod = d31bffaa-a39b-40b8-a758-254092d2e12f \n'))
at org.apache.bsf.engines.jython.JythonEngine.exec(JythonEngine.java:146)
at com.sunopsis.dwg.codeinterpretor.SnpScriptingInterpretor.execInBSFEngine(SnpScriptingInterpretor.java:396)
at com.sunopsis.dwg.codeinterpretor.SnpScriptingInterpretor.exec(SnpScriptingInterpretor.java:247)
at oracle.odi.runtime.agent.execution.interpreter.SessionTaskScriptingInterpretor.scripting(SessionTaskScriptingInterpretor.java:190)
at oracle.odi.runtime.agent.execution.SessionTask.scripting(SessionTask.java:105)
at oracle.odi.runtime.agent.execution.cmd.ScriptingExecutor.execute(ScriptingExecutor.java:49)
at oracle.odi.runtime.agent.execution.cmd.ScriptingExecutor.execute(ScriptingExecutor.java:21)
at oracle.odi.runtime.agent.execution.TaskExecutionHandler.handleTask(TaskExecutionHandler.java:52)
at oracle.odi.runtime.agent.execution.SessionTask.processTask(SessionTask.java:206)
at oracle.odi.runtime.agent.execution.SessionTask.doExecuteTask(SessionTask.java:117)
at oracle.odi.runtime.agent.execution.AbstractSessionTask.execute(AbstractSessionTask.java:886)
at oracle.odi.runtime.agent.execution.SessionExecutor$SerialTrain.runTasks(SessionExecutor.java:2225)
at oracle.odi.runtime.agent.execution.SessionExecutor.executeSession(SessionExecutor.java:610)
at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:718)
at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:611)
at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:203)
at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor.doProcessStartAgentTask(TaskExecutorAgentRequestProcessor.java:800)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$1400(StartSessRequestProcessor.java:74)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:702)
at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:180)
at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:108)
at java.lang.Thread.run(Thread.java:748)
Caused by: SyntaxError: ("mismatched input 'b8' expecting NEWLINE", ('<string>', 35, 24, 'imod = d31bffaa-a39b-40b8-a758-254092d2e12f \n'))
at org.python.core.ParserFacade.fixParseError(ParserFacade.java:96)
at org.python.core.ParserFacade.parse(ParserFacade.java:203)
at org.python.core.Py.compile_flags(Py.java:1685)
at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:172)
at org.apache.bsf.engines.jython.JythonEngine.exec(JythonEngine.java:144)
... 21 more
Thanks for your help!
Answers
-
-
Hi, you need to put api call in quotes
imod = '<%=snpRef.getModel("GLOBAL_ID")%>'
0