Kyligence AI 服务 - 让大模型完成准确、可靠的数值计算和回答! 立即了解更多
AI 数智助理
Kyligence Zen Kyligence Zen
Kyligence Enterprise Kyligence Enterprise
Kyligence Turbo Kyligence Turbo
指标平台解决方案
OLAP 解决方案
行业解决方案
客户总览
金融
零售
制造
医药
其他
云平台
BI
寻求合作
资源
Kyligence Enterprise
Kyligence Zen
培训
Apache Kylin
Byzer
Gluten
博客
关于
市场活动
上周,Kyligence 的两位资深讲师为大家带来了《如何使用 Kylin 进行海量自定义标签的用户画像分析》线上分享。错过直播的同学可以直接点击此处查看视频和下载演讲资料。
Q:在什么业务场景下会使用 intersect_count 函数?A: intersect_count 函数使用的业务场景,包括按各类标签和标签值做用户筛查、统计等。如按客户数,地区分布、年龄分布、手机品牌分布做用户筛查,以及自由组合标签圈选用户等。
Q:intersect_count 使用了什么技术能做到秒级响应? A: 我们使用了 Bitmap 技术,Bitmap 通常用于精确保存用户集合,它的存储空间比保存用户 ID 数组要小非常多倍,通常为了进一步节省空间,我们会使用 Roaring Bitmap 做压缩。Bitmap 不但可以精确去重,而且可以高效执行交集(and)、并集(or)运算,天然适合用户画像场景;目前在大多数传统数据库例如 mysql 等,大多没有实现 Bitmap。无法通过写 SQL 的方式使用 Bitmap 进行高效精确去重。
Q:除了 intersect_count,Kylin 还有哪些函数使用了 Bitmap 做加速? A:intersect_count 是 Kylin 专有的扩展语法,使用的时候请参考 Kylin 官网说明使用。除了intersect_count,count distinct 和 intersect_value 也使用了 Bitmap。尤其要注意的是 intersect_count 也支持求并集,例如:当我们的过滤条件修改为(年龄在 ('21','19','20') 或者经过身份认证成功的)并且 (性别是 女的)用户。这个时候我们可以按照下面这种 SQL 语句来写:
select intersect_count(uid,label_name,array['age|credit_auth','gender']) from USER_ANALYSIS.BORROWER_LABEL_RAW_LONG where (label_name='age' and label_value in ('21','19','20'))or (label_name='credit_auth' and label_value in ('成功认证'))or (label_name='gender' and label_value in ('女'));
select intersect_count(uid,label_name,array['age|credit_auth','gender']) from USER_ANALYSIS.BORROWER_LABEL_RAW_LONG
where (label_name='age' and label_value in ('21','19','20'))
or (label_name='credit_auth' and label_value in ('成功认证'))
or (label_name='gender' and label_value in ('女'));
Q:宽表是如何转为窄表的,Kylin 支持吗?A:开源版和企业版都不包括宽表转窄表的功能。用户画像场景下,宽表转窄表的过程,是数据在进入 Kylin之前需要做的。可以直接通过 Hive HQL 实现,使用 LATERAL VIEW explode 就可以。或者如果你想实现复杂的转换逻辑,可以通过 UDTF 的方式完成。
Q:明细数据是存在哪里?如何查询的? A:在我们的 Demo 中明细表是存在 HBase 中,查询明细时,通过 Kylin 筛选出目标用户 uid,然后使用 HBase API 根据 uid 去获取对应的明细。如果用户的 uid 不是 int 类型,需要在数据源中先转换成 int 类型。
Q:如果标签数据很多,且分布在多个不同的表中,最佳实践是什么样的? A:建议将所有的标签合并在一张表中,使用一个 cube;如果放在不同 cube,需要开发额外函数进行 Bitmap 操作。
Q:如果输入标签值是连续值,有没有推荐的最佳实践? A:如果类型为连续的,建议根据业务需求定义类似“本月消费额”、“本年消费额”这样的标签,并离散消费额(少于100,100-200...)来实现。对于时间类维度,可以采用单独作为一个维度来计算。
Q:在用户画像场景下,int 类型标签值为什么需要单独为一列?转换的步骤是怎样的? A:由于 string 类型数字无法比较大小,所以我们需要将需要比较大小的列单独来做来。我们做用户圈选的时候,常见的一个需求是比较大小。例如我要筛选出金额大于100的用户。Hive 中默认保存的数据是 string 类型,string 类型的数字在比较大小的时候会出现跟预期不符合的情况【String 是按照字典顺序比较大小(依次比较ASCII码值),比如 "5" > "100"】。所以需要添加一个 int 或 double 类型标签字段,可以通过单独开发 UDTF 函数完成转化步骤。
Q:Kylin 对 SQL 的语法解析是怎么解析的? A:使用的是 Apache Calcite 作为 SQL 解析器。
Q:Kylin 支持准实时吗?如果支持,离线与实时数据如何合并? A:Kylin 支持准实时,并且在 3.0 版本之后支持真实时,在准实时情况下和实时情况下的查询和正常的查询是一样的,Kylin 支持 lambda 架构,Kylin 内部会对实时和离线的结果做合并,用户不需要关心。
Q:Kylin 里面使用 Bitmap 有什么限制吗? A:支持 int 表示的最大值 (22亿)个精确去重值,目前还不支持差集运算。
Q:如果 label_value 的基数很大,会出现问题吗? A:一般标签值,都是经过范化并不会太多,要避免过度离散化。Kylin 如果使用字典编码的话,可以五百万个不同标签值,假设有一千个标签,那么平均一个标签可以有五千个值,是非常足够的。
近年来,随着商业环境的竞争日益激烈,企业对于实时数据服务的需求急剧增加。Kyligence 在服务众多客户的过
数据要素在银行各业务领域和流程中发挥着至关重要的作用,面对激烈的市场竞争和客户需求,银行越来越注重从数据管理中
作为一名消费者,炎热的夏天我们会走进一家便利店,从冰柜中选出一瓶汽水;下午工作有点累了,我们会在公司的自动贩卖
2024 年伊始,Kyligence 联合创始人兼 CEO 韩卿(Luke)分享了对 AI 与数据行业的一些战
房地产行业是我国国民经济中的重要支柱产业之一,在房地产市场供求关系发生重大变化的当下,房企面临多重挑战。Kyl
今年年初,Kyligence 高级副总裁兼合伙人葛双寅(Silas Ge)受邀在阿斯利康“跃行致远三十周年年会
2024 年伊始,Kyligence 联合创始人兼 CEO 韩卿在公司内部的飞书订阅号发表了多篇 Rethin
400 8658 757
工作日:10:00 - 18:00
已有账号? 点此登陆
预约演示,您将获得
完整的产品体验
从数据导入、建模到分析的全流程操作演示。
行业专家解惑
与资深行业专家的交流机会,解答您的个性化问题。
请填写真实信息,我们会在 1-2 个工作日内电话与您联系。
全行业落地场景演示
涵盖金融、零售、餐饮、医药、制造等多个行业,最贴合您的业务需求与场景。
Data + AI 应用落地咨询
与资深技术专家深入交流,助您的企业快速落地 AI 场景应用。
立即预约,您将获得
精准数据计算能力:
接入高精度数值计算大模型服务,为您的企业级AI应用提供强大支持。
个性化业务场景解决方案:
量身定制的计算模型和数据分析服务,切实贴合您的业务需求和应用场景。
Data + AI 落地应用咨询:
与资深专家深入探讨数据和 AI 如何帮助您的企业加速实现应用落地,构建更智能的数据驱动未来。
申请体验,您将获得
体验数据处理性能 2x 加速
同等规模资源、同等量级数据、同一套数据处理逻辑,处理耗时下降一半
专家支持
试用部署、生成数据、性能对比各操作环节在线支持