文档首页 > > 快速入门> 导入数据入门示例> 导入交通卡口车辆通行样例数据并查询

导入交通卡口车辆通行样例数据并查询

分享
更新时间:2020/05/29 GMT+08:00

交通卡口车辆通行样例简介

DWS支持用户将数据从集群外导入到集群中。用户可以参考以下指导,快速将样例数据从OBS导入集群。本示例,将加载8.9亿条交通卡口车辆通行模拟数据到数据仓库单个数据库表中,并进行车辆精确查询和车辆模糊查询,展示DWS对于历史详单数据的高性能查询能力。

DWS已预先将样例数据上传到OBS桶的“traffic-data”文件夹中,并给所有华为云用户赋予了该OBS桶的只读访问权限。

导入交通卡口车辆通行样例数据

使用SQL客户端工具连接到集群后,就可以在SQL客户端工具中,执行以下步骤导入交通卡口车辆通行的样例数据并执行查询。

  1. 执行以下语句,创建traffic数据库。

    1
    create database traffic encoding 'utf8' template template0; 
    

  2. 执行以下步骤切换为连接新建的数据库。

    1. 在Data Studio客户端的“对象浏览器”窗口,右键单击数据库连接名称,在弹出菜单中单击“刷新”,刷新后就可以看到新建的数据库。
    2. 右键单击数据库名称,在弹出菜单中单击“打开连接”
    3. 右键单击数据库名称,在弹出菜单中单击“打开新的终端”,即可打开连接到指定数据库的SQL命令窗口,后面的步骤,请全部在该命令窗口中执行。

  3. 执行以下语句,创建用于存储卡口车辆信息的数据库表。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    create schema traffic_data;
    set current_schema= traffic_data;
    drop table if exists GCJL;
    CREATE TABLE GCJL
    (
            kkbh   VARCHAR(20), 
            hphm   VARCHAR(20),
            gcsj   DATE ,
            cplx   VARCHAR(8),
            cllx   VARCHAR(8),
            csys   VARCHAR(8)
    )
    with (orientation = column, COMPRESSION=MIDDLE)
    distribute by hash(hphm);
    

  4. 创建外表。外表用于识别和关联OBS上的源数据。

    外表是对远端数据结构的定义,一个外表可以用来像数据库表一样进行查询,但是实际并没有存储数据在DWS中,当外表被调用的时候,DWS会根据外表中远端数据源的定义从外部数据源获取、更新数据。DWS当前支持OBS、HDFS外表数据源的并行高速访问和查询,本示例中通过定义外表导入OBS上的数据到普通的数据表中。

    创建外表语句如下。请参见语句下方的参数说明,将创建外表语句中的参数<obs_bucket_name>、<Access_Key_Id>和<Secret_Access_Key>替换为实际值,然后在客户端工具中执行替换后的语句创建外表。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    create schema tpchobs;
    set current_schema = 'tpchobs';
    drop FOREIGN table if exists GCJL_OBS;
    CREATE FOREIGN TABLE GCJL_OBS
    (
            like traffic_data.GCJL
    )
    SERVER gsmpp_server 
    OPTIONS (
            encoding 'utf8',
            location 'obs://<obs_bucket_name>/traffic-data/gcxx',
            format 'text',
            delimiter ',',
            access_key '<Access_Key_Id>',
            secret_access_key '<Secret_Access_Key>',
            chunksize '64',
            IGNORE_EXTRA_DATA 'on'
    );
    

    参数说明:

    • <obs_bucket_name>:表示样例数据存储的OBS桶名,集群所属的区域不同OBS桶名也不同。

      “华北-北京一”区域,OBS桶名为“dws-demo”。

      其他区域的OBS桶名为“dws-demo-<Region>”,其中<Region>表示区域。区域信息请参见地区和终端节点。例如,Region为cn-east-2,<obs_bucket_name>即为“dws-demo-cn-east-2”。

    • <Access_Key_Id>和<Secret_Access_Key>:分别表示访问密钥ID和私有访问密钥。请参见创建访问密钥(AK和SK)进行获取。然后,将获取到的值替换到创建外表语句中。

  5. 执行以下语句,将数据从外表导入到数据库表中。

    1
    insert into traffic_data.GCJL select * from tpchobs.GCJL_OBS;
    

    导入数据需要一些时间,请耐心等待。

查询样例数据

DWS是一个分布式并行数据库,查询性能和节点规格、节点数量以及数据库表的分布列、存储模型等都相关。

以下以交通卡口车辆通行标准查询为例,演示在DWS中进行的基本数据查询。

  1. 执行Analyze

    用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。执行计划生成器会使用这些统计数据,以生成最有效的查询执行计划。

    执行以下语句生成表统计信息:

    1
    Analyze;
    
  1. 查询数据表中的数据量

    执行如下语句,可以查看已加载的数据条数。

    1
    2
    set current_schema= traffic_data;
    Select count(*) from traffic_data.gcjl;
    
  1. 车辆模糊查询

    执行以下语句,指定车牌号码和时间段查询车辆轨迹,DWS在应对模糊查询时秒级响应。

    1
    2
    3
    4
    5
    6
    7
    set current_schema= traffic_data;
    select hphm, kkbh, gcsj 
    from traffic_data.gcjl
    where hphm like '%A23F%' 
    and kkbh in('508', '1125', '2120') 
    and gcsj between '2016-01-01' and '2016-01-07'  
    order by hphm,gcsj desc;
    
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问