您好!

这样好像还是不行,因为group by id ,id还是密文字符串,还是会把id当成字符串处理,所以还是不能正确分组;
为了更清楚表达,下面为图示:


谢谢您!



















在 2021-10-29 10:49:35,"Caizhi Weng" <tsreape...@gmail.com> 写道:
>Hi!
>
>你是不是想写这样的 SQL:
>
>SELECT id, sum(price) AS total_price FROM (
>  SELECT T1.id AS id, T2.price AS price FROM T AS T1 INNER JOIN T AS T2 ON
>decrypt_udf(T1.id, T2.id) = 1
>) GROUP BY id
>
>这个 sql 会输出每个 id 和该 id 属于的分组的总价格。
>
>lyh1067341434 <lyh1067341...@163.com> 于2021年10月29日周五 上午9:41写道:
>
>> 您好!
>>
>>
>>   感谢您在百忙之中抽空回复我的邮件,我已经按照您的建议,自定义join函数实现了密文的join,但密文的group by 还是实现不了;
>>
>>
>> 比如 有一张表 a, 表a有
>> id,price列,数据都是密文,类似这样("MBwEELdR0JDC0OSryuQskeulP8YCCAyJLH7RwmAA");
>>
>>
>> 如果我想求 不同id组的price之和:
>> 直接使用flink 计算:    会把id的分组当成字符串处理,从而导致分组的不正确;
>> 如果调用密文计算的接口的话,把两个比较的key的密文传进入,会得到1或者0,来判断这两个密文key是否相等,从而分组可以正确;
>>
>>
>>
>>
>> 问题:
>>
>>
>>     目前group by分组,不知道在哪里实现调用密文计算的接口,从而传入两个key,来进行分组正确;
>>    我看到api只能指定分组的key是哪一个;
>>
>>
>> 谢谢您!
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> 在 2021-10-28 11:09:26,"Caizhi Weng" <tsreape...@gmail.com> 写道:
>> >Hi!
>> >
>> >没太明白你的需求。你的需求是不是
>> >
>> >1. 调用一个自定义函数,用某一列密文算出一个值 k,用这个 k 作为 join key 或者 group key。
>> >
>> >如果是这个需求,只要实现一个 udf 即可。详见 [1]。
>> >
>> >2. 调用一个自定义函数,用某两列密文算出一个 true 或 false,如果是 true 说明 join key 匹配。
>> >
>> >如果是这个需求,仍然只需要实现一个 udf。join 条件中调用这个 udf 即可。但如果是这个需求,不太明白你期望中的 group by
>> >是什么样的,因为不能仅通过 true false 就判断哪些数据属于同一个 group。
>> >
>> >[1]
>> >
>> https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/dev/table/functions/udfs/
>> >
>> >lyh1067341...@163.com <lyh1067341...@163.com> 于2021年10月27日周三 下午5:20写道:
>> >
>> >> 您好:
>> >>
>> 目前公司数据都是密文,要进行密文数据的比较或者计算的话,只能调用公司密文计算的接口,去看了下flink的分组和join算子,都只能指定分组的key或者join的key,不知道怎么改写比较的规则,我用mapreduce实现了重写shuffle的比较规则,可以实现密文下的join和group
>> >> by,对于使用spark和flink算子不知道如何实现。
>> >>
>> >> 问题:
>> >> 请问有啥办法,实现密文下的join和group by操作吗?(在不能解密,只能调用公司密文计算的接口)
>> >>
>> >> 谢谢您。
>> >>
>> >>
>> >>
>> >> 发自 网易邮箱大师
>>

回复