Re: Re: 公司数据密文,实现group by和join
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 于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" 写道: > >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 于2021年10月27日周三 下午5:20写道: > > > >> 您好: > >> > 目前公司数据都是密文,要进行密文数据的比较或者计算的话,只能调用公司密文计算的接口,去看了下flink的分组和join算子,都只能指定分组的key或者join的key,不知道怎么改写比较的规则,我用mapreduce实现了重写shuffle的比较规则,可以实现密文下的join和group > >> by,对于使用spark和flink算子不知道如何实现。 > >> > >> 问题: > >> 请问有啥办法,实现密文下的join和group by操作吗?(在不能解密,只能调用公司密文计算的接口) > >> > >> 谢谢您。 > >> > >> > >> > >> 发自 网易邮箱大师 >
Re: Re: Re: 公司数据密文,实现group by和join
上传的图片没法显示,通过图床工具或纯文本方式重新发一遍 lyh1067341434 于2021年11月1日周一 上午10:42写道: > 您好! > > 这样好像还是不行,因为group by id ,id还是密文字符串,还是会把id当成字符串处理,所以还是不能正确分组; > 为了更清楚表达,下面为图示: > > 谢谢您! > > > > > > > > 在 2021-10-29 10:49:35,"Caizhi Weng" 写道: > >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 于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" 写道: > >> >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 于2021年10月27日周三 下午5:20写道: > >> > > >> >> 您好: > >> >> > >> 目前公司数据都是密文,要进行密文数据的比较或者计算的话,只能调用公司密文计算的接口,去看了下flink的分组和join算子,都只能指定分组的key或者join的key,不知道怎么改写比较的规则,我用mapreduce实现了重写shuffle的比较规则,可以实现密文下的join和group > >> >> by,对于使用spark和flink算子不知道如何实现。 > >> >> > >> >> 问题: > >> >> 请问有啥办法,实现密文下的join和group by操作吗?(在不能解密,只能调用公司密文计算的接口) > >> >> > >> >> 谢谢您。 > >> >> > >> >> > >> >> > >> >> 发自 网易邮箱大师 > >> > > > > >
Re: Re: Re: 公司数据密文,实现group by和join
如果是group by id,不论id是明文还是密文,相同id的密文肯定也一样,直接group by 密文id不可以吗? godfrey he 于2021年11月1日周一 下午3:22写道: > 上传的图片没法显示,通过图床工具或纯文本方式重新发一遍 > > lyh1067341434 于2021年11月1日周一 上午10:42写道: > > > 您好! > > > > 这样好像还是不行,因为group by id ,id还是密文字符串,还是会把id当成字符串处理,所以还是不能正确分组; > > 为了更清楚表达,下面为图示: > > > > 谢谢您! > > > > > > > > > > > > > > > > 在 2021-10-29 10:49:35,"Caizhi Weng" 写道: > > >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 于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" 写道: > > >> >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 于2021年10月27日周三 > 下午5:20写道: > > >> > > > >> >> 您好: > > >> >> > > >> > 目前公司数据都是密文,要进行密文数据的比较或者计算的话,只能调用公司密文计算的接口,去看了下flink的分组和join算子,都只能指定分组的key或者join的key,不知道怎么改写比较的规则,我用mapreduce实现了重写shuffle的比较规则,可以实现密文下的join和group > > >> >> by,对于使用spark和flink算子不知道如何实现。 > > >> >> > > >> >> 问题: > > >> >> 请问有啥办法,实现密文下的join和group by操作吗?(在不能解密,只能调用公司密文计算的接口) > > >> >> > > >> >> 谢谢您。 > > >> >> > > >> >> > > >> >> > > >> >> 发自 网易邮箱大师 > > >> > > > > > > > > > > >
Re:Re: Re: Re: 公司数据密文,实现group by和join
您好! 不可以,因为这种加密算法有点特别, 比如id是密文的话,相同id的密文也不一样的,不管你这个密文的明文是不是一样,它的密文形成的字符串肯定不一样; 谢谢. 在 2021-11-11 12:43:48,"yidan zhao" 写道: >如果是group by id,不论id是明文还是密文,相同id的密文肯定也一样,直接group by 密文id不可以吗? > >godfrey he 于2021年11月1日周一 下午3:22写道: > >> 上传的图片没法显示,通过图床工具或纯文本方式重新发一遍 >> >> lyh1067341434 于2021年11月1日周一 上午10:42写道: >> >> > 您好! >> > >> > 这样好像还是不行,因为group by id ,id还是密文字符串,还是会把id当成字符串处理,所以还是不能正确分组; >> > 为了更清楚表达,下面为图示: >> > >> > 谢谢您! >> > >> > >> > >> > >> > >> > >> > >> > 在 2021-10-29 10:49:35,"Caizhi Weng" 写道: >> > >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 于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" 写道: >> > >> >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 于2021年10月27日周三 >> 下午5:20写道: >> > >> > >> > >> >> 您好: >> > >> >> >> > >> >> 目前公司数据都是密文,要进行密文数据的比较或者计算的话,只能调用公司密文计算的接口,去看了下flink的分组和join算子,都只能指定分组的key或者join的key,不知道怎么改写比较的规则,我用mapreduce实现了重写shuffle的比较规则,可以实现密文下的join和group >> > >> >> by,对于使用spark和flink算子不知道如何实现。 >> > >> >> >> > >> >> 问题: >> > >> >> 请问有啥办法,实现密文下的join和group by操作吗?(在不能解密,只能调用公司密文计算的接口) >> > >> >> >> > >> >> 谢谢您。 >> > >> >> >> > >> >> >> > >> >> >> > >> >> 发自 网易邮箱大师 >> > >> >> > >> > >> > >> > >> > >>