KSQL查询:无需硬编码数组索引筛选含US国家码的客户
解决KSQL查询中硬编码数组索引的问题
要筛选所有身份类型为Passport且任意地址的国家码为US的客户记录,同时去掉硬编码的数组索引,可以使用KSQL的ARRAY_CONTAINS函数配合lambda表达式遍历数组元素进行匹配。
修改后的查询语句
SELECT * FROM CustomerStream WHERE uniqueIdentity->identityType = 'Passport' AND ARRAY_CONTAINS(ADDRESSES, address -> address->COUNTRYCODE = 'US');
说明
ARRAY_CONTAINS的第二个参数是lambda表达式,会遍历ADDRESSES数组中的每一个元素(这里命名为address),检查该元素的COUNTRYCODE是否等于'US'。- 只要数组中存在任意一个地址满足国家码为
US的条件,ARRAY_CONTAINS就会返回true,对应的客户记录会被纳入查询结果。
验证示例
针对你提供的示例消息,若将UNIQUEIDENTITY->IDENTITYTYPE改为'Passport',该记录会被上述查询筛选出来——因为其ADDRESSES数组中包含一个COUNTRYCODE为US的地址项。
内容的提问来源于stack exchange,提问作者user3775642
相关产品推荐
相关产品推荐

