大数据计算MaxCompute对同一条记录在不同地方使用unique_id生成的ID不可能一样吗?

大数据计算MaxCompute同一条语句中多处使用了unique_id函数,或者说同一个使用了unique_id函数的子查询被多次引用,类似CTE,那么对同一条记录在不同地方使用unique_id生成的ID不可能一样吗?为什么?我都特意做成子查询了以便重复引用,结果ID还不同了,导致实现不了我的思路
换成md5倒是可以,就是不喜欢,md5不简洁,效率好像也相对较差。反正uuid就比unique_id差。md5不是独立随机生成的ID,我觉得只是比联合主键简洁一丢丢,而且理论上有可能重复吧,虽然好像机率特别小

展开
收起
真的很搞笑 2023-09-10 08:53:15 123 分享 版权
1 条回答
写回答
取消 提交回答
  • 在MaxCompute中,unique_id 函数生成的ID是基于每个任务的唯一标识符生成的。如果在同一条语句中多次使用 unique_id 函数,或者将一个使用 unique_id 函数的子查询多次引用,每个引用都会生成不同的唯一标识符。

    这是由于MaxCompute的并行计算模型决定的。在MaxCompute中,每个任务都是独立执行的,每个任务都有自己的任务标识符。unique_id 函数生成的ID是基于任务标识符生成的,因此不同任务生成的ID是不同的。

    如果您希望在同一条记录的不同地方使用相同的唯一标识符,可以考虑使用其他的方法,如将生成的ID保存到临时表中,在后续的查询中引用该临时表的ID。或者使用MD5等其他方法生成ID,但是请注意,MD5生成的ID并不是独立随机的,理论上也有可能重复。

    总之,MaxCompute中的 unique_id 函数是基于任务标识符生成的,因此在同一条语句中多次使用或多次引用子查询,每次生成的ID都是不同的。如果您对ID的生成有更具体的要求,可以尝试使用其他适合的方法来生成唯一标识符。

    2023-10-18 11:01:57
    赞同 展开评论

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

还有其他疑问?
咨询AI助理