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
博客
关于
市场活动
TopN查询,即从数据中实时查找前N项。当分析师需要排序的维度基数较大时,如从几十万名员工或者几百万个产品中查询TopN时,往往会遇到响应速度缓慢,性能不稳定等问题。这给技术团队带来很大压力。Kyligence Enterprise强大的功能之一就是可在秒级完成TopN数据的返回。本篇将重点介绍这个功能的使用技巧。
在编辑度量的表达式下拉框中,有这样一个选项“TOP_N”。它就是用来在大数据量情况下,为统计排名前N做预计算,从而达到提速百倍的目的的。(具体用法详见产品手册)
假如我们发送这样一条查询语句(某电商公司需要查询特定时段内交易额最高的前100位卖家):
这样一条普通的查询语句,其实只需要定义一个sum度量就能解决(一样能够击中cube,返回结果)。但是,如果我们有100W的SELLER_ID(这对于很多需要数据分析的公司来说是小意思),那么就需要先对这100W条记录按SUM(PRICE)进行排序,然后再返回前100条。当SELLER_ID达到千万的时候,你再试试?不去泡杯咖啡(几十秒~几分钟),结果是出不来的。
然而,我们观察到后面有个limit 100,实际上我们只关心这100W条SELLER_ID中的前100条,那么可以加一个Top度量试试。还是面对同样的数据量,还是发送同样的查询语句,但这一次绝对不一样。——结果秒级响应,大约是百倍的差异。
感觉提速百倍是吹出来的?不太相信一个小小TopN度量的价值和能力?请继续往下,邀请你一起来见证背后的秘密。
还是上面的查询例子,如果不设置TopN度量,数据在CUBE中预计算完以后,会这样保存。
由于查询的日期需要跨越一个月,因此大约需要读取30天*100W=3千万条记录,然后聚合成100W(SELLER_ID)之后,再排名统计出前100条。计算量可想而知。
如果我们在PRICE上增加一个TopN度量,那么数据在CUBE中预计算完以后,会保存成这样。
SELLER_ID不保存到RowKey上,而是作为TopN度量当中的一个值,按sum(price)排列好的顺序被保存到Measure区域(该区域会根据TopN中N的设置值保存大于N的记录个数)。此时再计算前100条时,只需要取30条(PART_ID)记录进行合并即可。
同时,这样做带来的好处是,不再需要将SELLER_ID设置为维度,cuboid中的记录数也会因为不包含高基数维度列而大大减小。
因此,TopN度量的应用场景为,当需要排序的维度基数越大时,效果越明显。
另外,我们在验证查询中是否利用到了Top N的优化策略,可以在Kyligence的后查询日志中,搜索是否包含如下提示信息。
信息一:
INFO [Query df42d20d-d9e6-4d5f-9c3a-844f4de63d39-135] cube.CubeCapabilityChecker : Cube CUBE[name=kylin_sales_cube] CapabilityInfluences: TOP_SELLER@class org.apache.kylin.measure.topn.TopNMeasureType
信息二:
INFO [Query df42d20d-d9e6-4d5f-9c3a-844f4de63d39-135] topn.TopNMeasureType : Rewrite function FunctionDesc [expression=SUM, parameter=KYLIN.KYLIN_SALES.PRICE, returnType=decimal(19,4)] to FunctionDesc [expression=TOP_N, parameter=KYLIN.KYLIN_SALES.PRICE,KYLIN.KYLIN_SALES.SELLER_ID, returnType=topn(100)]
最后分享两个客户咨询较多的实际案例。
某手机供应商需要统计耗电量排名前100的App应用名称。而App应用的数量接近有80W个,属于超高基数维度。查询语句类似于
该表有接近5000W的记录数,假设我们只定义维度ApplicationName,ApplicationLevel,DeviceType,Version和度量SUM(BatteryConsume),那么查询结果大约是180秒。
利用TopN的功能后,我们只需要定义维度DeviceType,Version以及度量TopN(BatteryConsume)+ ApplicationName,ApplicationLevel。查询结果只需要0.7秒。(设置TopN之后的存储结构类似如下:)
假设该手机供应商在统计耗电量排名前100的App应用名称时,也同时想看看它们的使用时长统计值,是否也能利用Top来实现呢?查询语句如下:
由于TopN中,只能保存一个度量,而该查询需要同时显示另一个度量的统计值,因此该查询无法命中TopN设置。然而,我们可以改写一下该语句:
同时,将BatteryConsume设置为TopN度量,将TimeConsume设置为普通的sum度量。这样,子查询的第一部分就能击中TopN度量了,并且整个查询不需要排序。
Kyligence Enterprise是人工智能增强型的数据管理和分析平台。其智能分析引擎可以自动加速对大规模数据的洞察,显著提高数据工程师和分析师的工作效率。
佘磊,Kyligence解决方案组架构师,拥有丰富的BI/数据仓库项目管理及架构设计经验,熟悉数据分析,大数据在各行业中的应用。
近年来,随着商业环境的竞争日益激烈,企业对于实时数据服务的需求急剧增加。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 加速
同等规模资源、同等量级数据、同一套数据处理逻辑,处理耗时下降一半
专家支持
试用部署、生成数据、性能对比各操作环节在线支持