使用|使用 SAP HANA Virtual Table 连接外部数据源
Access Remote Sources with SAP HANA Database Explorer
远程源(Remote sources)是与其他数据库的连接。 虚拟表使用远程源创建指向存储在另一个数据库中的数据的本地表。 联合查询使用虚拟和非虚拟表。
为了说明这些概念,将在远程数据库中创建一个表,其中包含来自给定酒店附近的一些顶级旅游景点的虚构评论数据。 酒店住宿与客户访问附近旅游景点或餐厅的愿望之间可能存在相关性。
有关 SAP HANA 智能数据访问 (SAP HANA smart data access,SDA) 和 SAP HANA 智能数据集成 (SAP HANA Smart Data Integration,SDI) 的更多详细信息,请参阅将 SAP HANA 云连接到远程数据源和使用 SAP HANA 云进行数据访问。
要从 SAP HANA 快速版创建远程源到 SAP HANA Cloud,请从 SAP HANA 快速版打开 SAP HANA 数据库浏览器。
文章图片
指定服务器、端口、额外的适配器属性和凭据(User1、Password1)。
文章图片
当然也可以执行通过执行 sql 语句来完成远程数据源的添加:
CREATE REMOTE SOURCE REMOTE_HC_TRIAL ADAPTER "hanaodbc" CONFIGURATION 'ServerNode=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.hana.trial-XXXX.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';
可以通过选择操作 > 复制 > SQL 端点从 SAP HANA Cloud Central 复制 ServerNode。
文章图片
执行create remote source SQL语句后,在Remote Sources文件夹中可以看到结果,如下图。 您可能需要按刷新按钮。
文章图片
下一步,将在 SAP HANA 快速版中创建名为 vt_tourist_reviews 的虚拟表。 这将允许访问在 SAP HANA Cloud 中创建的 Tourist_reviews 表。 这可以可视化如下:
文章图片
从 SAP HANA 快速版打开 SAP HANA 数据库资源管理器。 如果需要,创建 HOTEL 模式和可以访问该模式的用户。
CREATE USER USER1 PASSWORD Password1 no force_first_password_change;
CREATE SCHEMA HOTEL;
GRANT ALL PRIVILEGES ON SCHEMA HOTEL TO USER1;
右键单击名为 REMOTE_HC_TRIAL 的远程源并选择 Open。
选中 TOURIST_REVIEWS 复选框并按下 Create Virtual Object(s) 按钮。
文章图片
将对象名称设置为 VT_TOURIST_REVIEWS,将 schema 设置为 HOTEL。
按创建按钮。
文章图片
或者使用 SQL 语句创建 virtual table:
CREATE VIRTUAL TABLE HOTEL.VT_TOURIST_REVIEWS AT "REMOTE_HC_TRIAL"."HC_HDB_Trial"."HOTEL"."TOURIST_REVIEWS";
打开创建好的数据库表,发现其类型为 VIRTUAL:
文章图片
下面的 SQL 语句演示了对本地表和远程表执行查询,并执行包含本地和远程表的联合查询。
SELECT * FROM HOTEL.RESERVATION;
SELECT * FROM HOTEL.CUSTOMER;
SELECT * FROM HOTEL.VT_TOURIST_REVIEWS;
SELECT C.NAME, TR.REVIEW, REVIEW_DATE
FROM
HOTEL.RESERVATION AS R JOIN
HOTEL.VT_TOURIST_REVIEWS AS TR
ON TR.REVIEW_DATE = R.ARRIVAL JOIN
HOTEL.CUSTOMER AS C
ON C.CNO = R.CNO;
文章图片
从执行时间我们不难发现,从远程表读取数据,花费的时间明显多于从本地表读取:
文章图片
Connect from SAP HANA Cloud to SAP HANA Cloud, data lake IQ SAP HANA Cloud,data lake 可用于存储大量不常访问的数据。 以下步骤在 SAP HANA Cloud、data lake IQ 中创建表 Tourist_reviews 并从关联的 SAP HANA Cloud 实例访问该表。
如果需要,在 SAP HANA Cloud Central 中,通过选择操作: 添加数据湖,将 SAP HANA 云数据湖实例添加到您的 SAP HANA 云实例。
文章图片
执行以下SQL,在数据湖IQ中创建一个名为tourist_reviews的表。
CREATE TABLE TOURIST_REVIEWS (
REVIEW_ID INTEGER PRIMARY KEY,
REVIEW_DATE DATE NOT NULL,
DESTINATION_ID INTEGER,
DESTINATION_RATING INTEGER,
REVIEW VARCHAR(500) NOT NULL
);
INSERT INTO TOURIST_REVIEWS(REVIEW_ID, REVIEW_DATE, DESTINATION_ID, DESTINATION_RATING, REVIEW) VALUES(1, '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_ID, REVIEW_DATE, DESTINATION_ID, DESTINATION_RATING, REVIEW) VALUES(2, '2019-02-02', 1, 4, 'We had an enjoyable meal.The service and food was outstanding.Would have liked to have slightly larger portions');
文章图片
在 SAP HANA 数据库连接中,创建从 HANA 数据库到数据湖 IQ 的远程源。 请务必替换主机和密码值。
CREATE REMOTE SOURCE HC_DL_Trial
ADAPTER "IQODBC"
CONFIGURATION 'Driver=libdbodbc17_r.so;
host=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.iq.hdl.trial-XXXX.hanacloud.ondemand.com:443;
ENC=TLS(tls_type=rsa;
direct=yes)'
WITH CREDENTIAL TYPE 'PASSWORD'
USING 'user=HDLADMIN;
password=myPassword1';
文章图片
刷新之后,就看到一个名为 HC_DL_TRIAL 的 remote source 了:
文章图片
右键单击 HC_DL_TRIAL 并选择打开。 在 SAP HANA Cloud 中的架构 HOTEL 中创建一个名为 VT_DL_TOURIST_REVIEWS 的虚拟表,该表映射到 SAP HANA Cloud 数据湖 IQ 中新创建的表。
文章图片
示意图如下:
文章图片
SELECT * FROM HOTEL.VT_DL_TOURIST_REVIEWS;
文章图片
请注意,远程数据源是可更新的。 数据存储在 SAP HANA Cloud 中,数据湖存储在磁盘上,与内存存储相比具有成本优势。 SAP HANA Cloud,数据湖也可用于存储大量数据。
【使用|使用 SAP HANA Virtual Table 连接外部数据源】更多Jerry的原创文章,尽在:"汪子熙":
文章图片
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小