In order to use the UDA we need to perform the following tasks:
- Import ODI Models Folder and Project into the FDMEE repository
- Configure the JDBC driver
- Configure ODI Topology
- Configure Source System and Source Adapter in FDMEE
- Configure FDMEE artifacts (period mappings, import format, location, etc.)
In this second part I will cover the following topics:
- Configuration of the JDBC driver for SAP HANA (2nd task)
- Configuration of ODI Topology for SAP HANA (3rd task)
JDBC driver for SAP HANA (ngdbc.jar)
As usually, I perform several tests with the local agent in ODI so I need to place it in the driver's location for ODI Studio as well:
I just need to add a reference to the driver in additional_path.txt file located in WINDOWS_USER_HOME\AppData\Roaming\odi\oracledi\userlib (user "Administrator" in my case).
In the same way, we need to place it in the FDMEE agent's drivers location:
Please note that driver must be copied into every FDMEE server in case you have high availability architecture. For the local agent, just in the machines where ODI Studio is installed.
Both ODI Studio and FDMEE service(s) need to be restarted before using the driver.
JDBC Url (connection string)
The JDBC connection string is used by the agent to connect to the source HANA db. The generic url is jdbc:sap//<server>:<port>[/?<options>] and it is configured in the Data Server created in ODI Topology for the HANA DB server.
In my case, I tried to keep it simple and I used the following url to connect to the SystemDB database:
jdbc:sap//<server>:<port>?databaseName=SystemDB
I used the following ports but value depends on your SAP environment:
- 30013 for SAP HANA 1.0 (HANA instance number = 00)
- 39013 for SAP HANA 2.0 (HANA instance number = 90)
You can also configure tracing in the JDBC driver but this is something I won't cover as it is not essential. These two sites are good to see how the JDBC Url is configured and how to enable tracing:
- http://gerardnico.com/wiki/hana/jdbc for a good overview
- SAP HANA Studio guide contains all details about the driver
Configuring the ODI Topology
Once SAP HANA technology has been imported into ODI, we have to configure our physical and logical architecture:
- Create new Context(s)
- Create new Data Server(s)
- Create new Physical Schema(s)
- Link Physical Schema(s) with the Logical Schema UDA_HANA through context(s) created in step 1
Context
I always recommend to create new contexts rather than using GLOBAL one (it gives you more flexibility). My new context is UDA_HANA:
Data Server
Then I create a new data server under SAP_HANA technology:
As shown above, ODI will connect to HANA with specific user FDMEEHANA created for this purpose. This user owns the schema were my source table is located. You will have to ask your HANA admin for which user will connect to HANA via JDBC.
Don't get confuse about seeing two data servers, it's just because I tested the two versions of HANA.
Don't get confuse about seeing two data servers, it's just because I tested the two versions of HANA.
Time for the JDBC Url:
I'm using the SystemDB database but again, just to keep it simple.
Once the data server is created, I have to create a physical schema where I can set the HANA schema storing my source table/view:
Configure Context (link Physical-Logical schema)
You may have noticed that I skipped creation of Logical schema. This is because schema UDA_HANA is created when importing the technology into ODI. Therefore, the last step is just to link our physical schema with the logical schema through the context created:
As an additional step, we also have to link Global context as FDMEE uses it when generating the ODI project template for the source adapter. That's a common root cause when generation fails.
Testing the ODI connection to SAP HANA Database Server
Now that our topology is configured, we can test the connection to the SAP HANA DB server so we can confirm that everything is good so far:
Common errors you may get:
- Invalid user/password: check with your HANA admin
- ODI cannot reach the host: check your FDMEE server can ping the HANA DB server
- ODI cannot load driver: check driver is in the right location as shown above and that the FDMEE service was restarted
I haven't covered this one before as I wanted you to have all steps clear. Now it's time to talk about it.
The technology delivered in PSU210 is not complete. Data Types are missing. Human error. It can happen to everyone :-)
Without data types, nothing will work.
At this point you have two options:
- Raise a SR with Oracle although this will be hopefully fixed in a PSE soon. Please confirm that the logical schema is present after importing the new technology delivered in the PSE. In case it doesn't exist, you have to create it manually (name it as UDA_HANA)
- Reverse data types yourself. This option requires also creating maps between HANA and Generic SQL technology for each data type
I would suggest option 1 so you are safe. In case you prefer option 2, I let you proceed on your own risk:
Once data types are reversed, you need to map 1 by 1 in the Converted To tab:
This map needs to be replicated in the Logical Schema as well:
FYI, I verified that data types reversed from HANA 1.0 match the ones reversed from HANA 2.0.
That's all for today. With these steps, UDA for SAP HANA is now configured in ODI.
What are the next steps? configure it in FDMEE so we can get our data extracted.
Enjoy!
Hey Francisco, Great info. I have been working with Hyperion Products for over 20 years and it is great to see somebody put all this info together for everyone. Can you also provide a link to a document that shows the list of tables & views available in the SAP Hana data server, along with the descriptions of them, so I can determine which tables to pull from to get monthly financial data. Thanks, T. (Hyperion20@att.net)
ReplyDeleteHi,
DeleteI think you mean S/4 HANA? as it we talk about SAP HANA DB you can have any view you create
This comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThanks for this post!
ReplyDelete