SAP Home Learn Build Integrate Model Operate Extend with AI ConnectTutorial navigator Knowledge Graph API Devtoberfest Developer Advocates App Space

Manage my Account SAP Devs YouTube ↗ Learnings ↗ Community ↗ Provide Feedback ↗
Logout
⤢ Open full site

Access Remote Sources with SAP HANA Database Explorer

Use SAP HANA federation capabilities to query data from other SAP HANA and SAP HANA Cloud, data lake Relational Engine databases using SAP HANA smart data access (SDA) and the Cloud Connector.

Overview

🎓 beginner 10 min. SAP HANA CloudBeginnerSAP HANA Cloud SAP HANA DatabaseSAP HANASAP HANA Cloud Data LakeSAP HANA Express EditionSAP Connectivity Service

You will learn

  • How to use SAP HANA smart data access (SDA) to create connections (remote sources) to other databases
  • How to create virtual tables from a remote source
  • How to setup the Cloud Connector to enable a remote source from SAP HANA Cloud to an on-premise SAP HANA database

Prerequisites

Prerequisites

  • You have completed the first 3 tutorials in this group
  • Two SAP HANA databases and an SAP HANA Cloud, data lake instance

Steps

Intro

Remote sources are connections to other databases. Virtual tables use a remote source to create a local table that points to data stored in another database. Federated queries make use of virtual and non virtual tables.

To illustrate these concepts, a table will be created in the remote database that contains fictitious review data from some of the top tourist sites near a given hotel. There is likely a correlation between hotel stays and the desire for customers to visit nearby tourist attractions or restaurants.

For additional details on SAP HANA smart data access (SDA) and SAP HANA Smart Data Integration (SDI), consult Connecting SAP HANA Cloud to Remote Data Sources and Data Access with SAP HANA Cloud.

This tutorial requires more than one database to complete. It is not necessary to complete this tutorial to continue to the next tutorial in this group.

The SAP HANA Cloud free tier or trial is limited to creating one SAP HANA database and one data lake instance.

The example in step 1 demonstrates connectivity from an on-premise, SAP HANA, express edition database to an SAP HANA Cloud, SAP HANA  database. The example in step 2 demonstrates a connection from an SAP HANA Cloud, SAP HANA  database to an SAP HANA Cloud, data lake Relational Engine. The example in step 3 demonstrates connecting from SAP HANA Cloud, data lake Relational Engine to an SAP HANA Cloud, SAP HANA  database. The example in step 4 demonstrates connecting from one SAP HANA Cloud, data lake Relational Engine to another. The example in step 5 demonstrates connecting from SAP HANA Cloud, database via the Cloud Connector to an SAP HANA, express edition database.


Step 1 Connect from SAP HANA, express edition to SAP HANA Cloud, SAP HANA database

  1. From SAP HANA Cloud Central, select an SAP HANA database instance (HDB), open the SAP HANA database explorer, and execute the following SQL statements to create the tourist_reviews table.

    If needed, first create a schema and user.

    SQL
    CREATE SCHEMA HOTELS;
    CREATE USER USER1 PASSWORD Password1 no force_first_password_change;
    GRANT ALL PRIVILEGES ON SCHEMA HOTELS TO USER1;
    SQL
    SET SCHEMA HOTELS;
    CREATE COLUMN TABLE TOURIST_REVIEWS(
        review_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
        review_date DATE NOT NULL,
        destination_id INTEGER,
        destination_rating INTEGER,
        review VARCHAR(500) NOT NULL
    );
    
    INSERT INTO TOURIST_REVIEWS(review_date, destination_id, destination_rating, review) VALUES('2019-03-15', 1, 5, 'We had a great day swimming at the beach and exploring the beach front shops.  We will for sure be back next summer.');
    INSERT INTO TOURIST_REVIEWS(review_date, destination_id, destination_rating, review) VALUES('2019-02-02', 1, 4, 'We had an enjoyable meal.  The service and food was outstanding.  Would have liked to have slightly larger portions');
  2. The result can be seen below.

    SQL
    SELECT * FROM TOURIST_REVIEWS;

    tourist reviews in HANA Cloud
    tourist reviews in HANA Cloud

  3. To create a remote source from SAP HANA, express edition to SAP HANA Cloud, open the SAP HANA database explorer from the SAP HANA, express edition.

    This step is optional for SAP HANA Cloud Trial users if you do not have an SAP HANA, express edition database. If you do not have an SAP HANA, express edition database, proceed to the next step which is Connect from SAP HANA Cloud to SAP HANA Cloud, data lake Relational Engine.

    In a SQL console, enter the SQL statement below after adjusting the ServerNode.

    SQL
    CREATE REMOTE SOURCE REMOTE_HC ADAPTER "hanaodbc" CONFIGURATION 'ServerNode=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.hana.prod-ca10.hanacloud.ondemand.com:443;driver=libodbcHDB.so;dml_mode=readwrite;sslTrustStore="-----BEGIN CERTIFICATE-----MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQkCAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=-----END CERTIFICATE-----"' WITH CREDENTIAL TYPE 'PASSWORD' USING 'user=User1;password=Password1';
    CALL PUBLIC.CHECK_REMOTE_SOURCE('REMOTE_HC');

    Alternatively, you can create a remote source manually by right-clicking Remote Sources and select Add Remote Source.

    Add remote source
    Add remote source

    Add a source name and specify the server, port, and credentials (USER1, Password1). The Extra Adapter properties can be retreived by copying the sslTrustStore in the SQL query above.

    Add remote source properties
    Add remote source properties

    Additional details can be found at CREATE REMOTE SOURCE Statement.

    The ServerNode can be copied from SAP HANA Cloud Central by choosing Actions > Copy SQL Endpoint.

    Host and Port
    Host and Port


    If the above command fails, one reason might be that an allowlist has been set on the SAP HANA Cloud instance. This can be seen by choosing Actions > Edit.

    allowlist
    allowlist


    The public root certificate of the certificate authority (CA) that signed the SAP HANA Cloud instance’s server certificate is required in the sslTrustStore parameter. For more information, see Secure Communication Between SAP HANA Cloud and JDBC/ODBC Clients.

  4. After executing the create remote source SQL statement, the result can be seen in the Remote Sources folder, as shown below. You may need to press the refresh button.

    remote sources
    remote sources

  5. A virtual table named vt_tourist_reviews will be created in SAP HANA, express edition. This will enable access to the tourist_reviews table that was created in SAP HANA Cloud. This can be visualized as follows:

    on-premise to cloud remote connection
    on-premise to cloud remote connection

    Open the SAP HANA database explorer from the SAP HANA, express edition.

    If needed, create the HOTELS schema and a user who can access the schema.

    SQL
    CREATE USER USER1 PASSWORD Password1 no force_first_password_change;
    CREATE SCHEMA HOTELS;
    GRANT ALL PRIVILEGES ON SCHEMA HOTELS TO USER1;
  6. Right-click the remote source named REMOTE_HC and choose Open.

  7. Set the Schema to be HOTELS and press the Search button.

    Check the TOURIST_REVIEWS checkbox and press the Create Virtual Object(s) button.

    create remote table
    create remote table

  8. Set the Object Name to be VT_TOURIST_REVIEWS and the Schema to be HOTELS.

    Press the Create button.

    Create virtual table
    Create virtual table

    Alternatively, the virtual table can also be created with the SQL statement below.

    SQL
    CREATE VIRTUAL TABLE VT_TOURIST_REVIEWS AT "REMOTE_HC"."HC_HDB".HOTELS."TOURIST_REVIEWS";

    Additional details can be found at CREATE VIRTUAL TABLE Statement.

  9. Open the virtual table VT_TOURIST_REVIEWS and notice that its type is virtual.

    table editor
    table editor

  10. Perform queries against the local tables, the remote table, and perform a federated query that contains both local and remote tables.

    SQL
    SELECT * FROM HOTELS.RESERVATION;
    SELECT * FROM HOTELS.CUSTOMER;
    SELECT * FROM HOTELS.VT_TOURIST_REVIEWS;
    SELECT C.NAME, TR.REVIEW, REVIEW_DATE
    FROM
        HOTELS.RESERVATION AS R JOIN
        HOTELS.VT_TOURIST_REVIEWS AS TR
        ON TR.REVIEW_DATE = R.ARRIVAL JOIN
        HOTELS.CUSTOMER AS C
      ON C.CNO = R.CNO;

    federated query
    federated query

    Notice the executed time is greater when the data is retrieved from a virtual table.

    timings
    timings

  11. Add a new review.

    SQL
    INSERT INTO HOTELS.VT_TOURIST_REVIEWS(review_id, review_date, destination_id, destination_rating, review) VALUES(3, '2020-08-21', 1, 5, 'The harbour cruise was fantastic.  It was great to see the city from a different viewpoint');
    SELECT * FROM HOTELS.VT_TOURIST_REVIEWS;

    Notice that the virtual table is editable.

A benefit of a virtual table is that there is no data movement. There is only one location where the data is persisted. As seen above, this can lead to longer query times when accessing remote data.

Step 2 Connect from SAP HANA Cloud, SAP HANA database to a data lake Relational Engine
+
Step 3 Connect from a data lake Relational Engine to SAP HANA Cloud, SAP HANA database
+
Step 4 Connect from a data lake Relational Engine to another data lake Relational Engine
+
Step 5 Connect from SAP HANA Cloud to SAP HANA, express edition via the Cloud Connector (optional)
+
Step 6 Knowledge check
+

Resources

Discussion

Share feedback on this tutorial or join the conversation in SAP Community.

Submit detailed feedback Discuss in Community
Steps
Step 1 of 6
1. Connect from SAP HANA, express edition to SAP HANA Cloud, SAP HANA database 2. Connect from SAP HANA Cloud, SAP HANA database to a data lake Relational Engine 3. Connect from a data lake Relational Engine to SAP HANA Cloud, SAP HANA database 4. Connect from a data lake Relational Engine to another data lake Relational Engine 5. Connect from SAP HANA Cloud to SAP HANA, express edition via the Cloud Connector (optional) 6. Knowledge check

Learn more →