全部产品
云市场

背景信息及准备工作

更新时间:2019-04-11 10:03:27

背景信息

SQL操作中,经常有行转列(Pivot)和列转行(Unpivot)的数据处理需求。本文将通过SQL示例,介绍如何在Data Lake Analytics(DLA)中使用SQL,达到行转列和列转行的目的。另外,DLA支持JSON函数和UNNEST语法,您可以更加方便、灵活地通过SQL处理数据。

示例图

前提条件

  1. 在OSS中上传测试数据文件pivotunpiovt表,表存储路径分别为oss://bucket-name/test/pivot/pivot.txtoss:/bucket-name/test/unpivot/unpivot.txt

    存储路径1

    存储路径2

  2. 创建OSS Schema

    1. CREATE SCHEMA oss_test_schema with DBPROPERTIES(
    2. catalog='oss',
    3. location = 'oss://bucket-name/test/'
    4. );
  3. 创建OSS表

    1. CREATE EXTERNAL TABLE pivot (
    2. id int,
    3. username string,
    4. subject string,
    5. score int
    6. )
    7. ROW FORMAT DELIMITED
    8. FIELDS TERMINATED BY ','
    9. STORED AS TEXTFILE
    10. LOCATION 'oss://bucket-name/test/pivot/'
    1. CREATE EXTERNAL TABLE unpivot (
    2. username string,
    3. yuwen int,
    4. shuxue int,
    5. yingyu int
    6. )
    7. ROW FORMAT DELIMITED
    8. FIELDS TERMINATED BY ','
    9. STORED AS TEXTFILE
    10. LOCATION 'oss://dlaossfile1/test/unpivot/'
  4. 查询表数据

    1. SELECT * FROM oss_test_schema.pivot

    pivot表数据

    1. SELECT * FROM oss_test_schema.unpivot

    unpivot表数据