开发者社区> 问答> 正文

ODPS中,实现两表关联,但能关联的字段为包含关系,怎么实现,谢谢

[font='Helvetica Neue', Helvetica, Arial, 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif]ODPS中,实现两表关联,但能关联的字段为包含关系,其中被包含的字段的表为纬度表,怎么实现,谢谢 [font='Helvetica Neue', Helvetica, Arial, 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif]例如表1中字段a的数据为‘1,2,3,4,5’ [font='Helvetica Neue', Helvetica, Arial, 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif]表2 字段b的数据为3

展开
收起
蓝炎 2016-01-15 11:47:12 7780 0
3 条回答
写回答
取消 提交回答
  • 你好,你可以通过TRANS_ARRAY列转行函数,将一行数据转化为多行,将关联的key打开后再进行关联,使用如下,谢谢

    +----------+----------+------------+
    | login_id | login_ip | login_time |
    +----------+----------+------------+
    | wangwangA | 192.168.0.1,192.168.0.2 | 20120101010000,20120102010000 |
    | wangwangB | 192.168.45.10,192.168.67.22,192,168.6.3 | 20120111010000,20120112010000,20120223080000 |
    执行sql:
    select trans_array(1, ",", login_id, login_ip, login_time) as (login_id,login_ip,login_time) from t_table;
    产生的数据是
    +----------+----------+------------+
    | login_id | login_ip | login_time |
    +----------+----------+------------+
    | wangwangB | 192.168.45.10 | 20120111010000 |
    | wangwangB | 192.168.67.22 | 20120112010000 |
    | wangwangB | 192.168.6.3 | 20120223080000 |
    | wangwangA | 192.168.0.1 | 20120101010000 |
    | wangwangA | 192.168.0.2 | 20120102010000 |
    
    2021-03-31 19:20:47
    赞同 展开评论 打赏
  • 传学,专注于大数据领域的解决方案
    我看你的意思,你的表1里的存的是一个字符串,但是实际是想实现类似数组的功能。
    目前odps的数组功能还在内部测试中,对外还是不支持的。
    你可以考虑写个udf来实现,或者有一些odps自带函数你也可以考虑一下,比如

    CHAR_MATCHCOUNT
    REGEXP_COUNT
    详情见: https://help.aliyun.com/document_detail/odps/SQL/builtin_function.html?spm=5176.product8314999_odps.4.35.LcMUkL
    2016-01-15 14:21:26
    赞同 展开评论 打赏
  • ReODPS中,实现两表关联,但能关联的字段为包含关系,怎么实现,谢谢
    ODPS中,实现两表关联,但能关联的字段为包含关系,其中被包含的字段的表为纬度表,怎么实现,谢谢
    例如表1中字段a的数据为‘1,2,3,4,5'
    表2 字段b的数据为3
    表1 表2关联,其中表2为纬度表
    2016-01-15 11:49:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data+AI时代大数据平台应该如何建设 立即下载
大数据AI一体化的解读 立即下载
极氪大数据 Serverless 应用实践 立即下载