Categories
- All Categories
- Oracle Analytics and AI Learning Hub
- 34 Oracle Analytics and AI Sharing Center
- 22 Oracle Analytics and AI Lounge
- 276 Oracle Analytics and AI News
- 47 Oracle Analytics and AI Videos
- 16.1K Oracle Analytics and AI Forums
- 6.3K Oracle Analytics and AI Idea Labs
- Oracle Analytics and AI User Groups
- 99 Oracle Analytics and AI Trainings
- 16 Oracle Analytics and AI 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