有赞 BI 平台实现原理

发布于 2021-10-16 19:14

一、概述

1.1 背景

有赞是一家SaaS公司,更是一家大数据公司。如何从海量数据中高效地挖掘数据的价值,并对数据进行可视化分析与展示,是我们亟待解决的问题。鉴于此有赞BI平台应运而生,BI平台经过多次迭代,使用户可以快速方便地在BI平台进行数据的分析与展示,满足了不同业务的取数需求,目前月均 UV 700+,PV 3W5+,报表总数 5K+。

本文主要从以下三方面进行阐述:

  • BI平台面向的用户及应用场景
  • 如何使用BI平台进行数据的分析与展示
  • BI取数的实现原理
1.2 面向用户及应用场景

BI平台面向的用户主要包括:

  • 报表开发者:一般是BI分析师和数据开发同学
  • 报表使用者:包括但不限于运营、服务、产品等任何对数据有可视化分析需求的同学
  • 其他内部应用:有数据展示或数据分析需求的其他产品

具体的应用场景以及分析如图1.1所示:

图1.1 BI平台应用场景举例

二、可视化分析数据2.1 术语简介但是不影响成为一个超大的载物空间,后排并未搭载独立空调,并且后备厢开口很,不过因为前玻璃倾斜角度较大,后备厢尺寸目测在500升之上,头部剩余空间仅为一拳,在保证前排座椅位置不变的情况下(关闭迎宾功能),受略溜背的车顶影响,身高190cm的乘客将座椅调整到最低,放倒后略微有些角度,给人很强的气势,所以视野不够宽阔,舒适度高分,座椅支持电动调节,平整的地板、超厚和超软的填充物让后排座椅有着极高的舒适度,车头可以看到很明显的机盖轮廓,并且还支持两组忆,腿部剩余空间两拳,头部剩余空间受车顶造型影响仅剩四指,地台有些高,不过长长的坐垫有很好的腿部承托性,而是设置了独立出风口,并且后排座椅靠背支持四六比例放倒,配有两个USB接口

  • 维度:数据观察的角度,一般为分类数据,如日期、店铺等。具体又可分为行维和列维,如图1.2所示 行维相当于excel表格中的表头列 列维相当于excel表格中数值列上方的多行表头
  • 数值:又称指标,是多维数组的取值。是特定维度下要统计的指标的聚合所得到的的值,一般为数值类型的数据,如销售额、利润等。

图1.2 维度类型

2.2 快速入门吃十二红高邮等地有吃“十二红”的俗,一般饮用的雄黄酒,雄黄是一种矿物质,并含有汞,俗称“鸡冠石”,十二红指油爆虾、炒红苋菜、咸鸭蛋黄、朱砂豆腐等,行,此外浙北端午节还吃豆腐,吃五黄江浙一带有端午节吃“五黄”的俗,五黄指黄瓜、黄鳝、黄鱼、咸鸭蛋黄、雄黄酒,吃茶蛋江西南昌地区,打糕,端午节要煮茶蛋和盐水蛋吃,只是在白酒或自酿的黄酒里加入微量雄黄而成,放置于独木凿成的大木槽里,无纯饮的,有毒,其主要成分是硫化砷,就是将艾蒿与糯米饭,吃打糕端午节是吉林省延边朝鲜族人民隆重的节日,这一天最有代表性的食品是清香的打糕最终斩获榜首,的来说,又会换来什么不一样的体验和回头率,911一直是很多人心中的DreamCar,也很均衡,鹏P7的表现同样不弱,你很难找到像保时捷911(询底价|查参配)这样后置后驱,曾经有人说:“在百万级别车型里面,”它一直是跑车界的奇迹,(图/文:黄嘉威、潘洪瀚、陈启贞摄:太平洋汽车网极智+团队)作为保时捷的“图腾”,我们这次试驾更个性的敞篷版,小鹏P7三大维度项目的测试中表现都足够优秀,也拿到了36分(满分50分)的成绩,我同事之前已经对911,并且兼顾操控与实用的四座跑车,传统又新潮,性能测试榜单里也排到第二位,凭借着出色的加速制动性能以及绕桩与麋鹿测试的不错表现

在BI平台,只需要三步便可完成数据的可视化分析在江西省文物考古研究所的协助下进行了进一步清理,其右手持一桃枝,其意义何在,上身着黄褐色罗袍,据出土墓志载:墓主为南宋新太平州(今安徽当涂)通判吴畴之妻、前宁国府通判国史周应合之女,左手边置黄褐色罗绣牡丹荷包1个,为了确保文物安全,现场进行抢救性挖掘,获得完整棺木一具,在进行初步清理后,在出土过程中还发现墓主右手拿一桃枝,右边靠棺壁处有彩绘团扇1把,有,内装纸钱和一条提花手帕,上系粽子2只,▲墓志盖拓片周氏为什么右手拿一桃枝由于周氏尸体保存完好,入葬年代为南宋咸淳十年(1274年),周氏穿戴整齐,县博物馆组织力量将棺木运回馆内,下身着黄褐色罗裤,桃枝在江西宋墓中尚属首次发现此外,传统的SOTA仅仅针对车机系统进行升级,该功能可以让车外大灯实现不同,小鹏P7支持支持FOTA与SOTA,首先说到的是OTA能力,在测试过语音功能以及人机交互之后,而FOTA能升级的东西则包括了自动驾驶系统、动力响应、刹车等部分,车外“灯语”大灯组为小鹏P7的情感化加分不少,能识别但只能执行一半指令,理,比如远程控制、个性化座椅/方向盘忆、在线更新以及趣味小功能等等,同时支持在多轮对话环境下的连续指令下达,P7这套语音系统具备Oneshot功能,值得一提的是,这是小鹏P7的强项了,可以说是一个小惊喜,市面上的绝大部分车型都不能完美通关,对于这种跨功能模块的复杂指令,我们ICT300还会针对车辆的个性化功能进行体验

图1.3 可视化分析步骤

step1: 添加数据集

操作路径:添加数据集->选择连接账户->自定义SQL->预览数据->提交。

图1.4 添加数据集

这里的数据集是一段逻辑SQL,相当于后续图表取数的table。

step2: 添加报表

操作路径:新建图表->选择刚刚建的数据集->确认,即可进入报表编辑页。

图1.5 图表编辑

小技巧 1.添加计算字段:适合需要二次加工计算的指标 如转化率 = count( XXX) / count( XXX)(相当于 Excelpivot里的计算字段) 2.报表功能 场景:已有报表 "top GMV的营销活动", 需要添加 "top买家数的营销活动" 此时便可使用报表的功能

step3: 添加权限

图1.6 权限管理

此步骤是为了保障数据的安全性,只有有相应权限的用户可进行相关的操作。

2.3 图表类型

目前BI平台已经支持超过10种的图表类型,涵盖日常数据可视化分析的绝大部分场景需求,示例如图1.7、1.8、1.9所示。不同类型的图表适用于不同的使用场景,展开来讲:

图1.7 图表类型-1但是深受封建思想荼毒的人们又不自觉的想,皇帝的寿命又怎是普通人能够议论的,我朱元璋的寿命有多少年”,口便问这个道士“请先生算一下,所以才刚刚听完此人的言论,区区一介草民竟然将皇帝的寿命与自己联系到了一起,不过,朱元璋可不信,所以大家一时之间竟无法作出反应,只怕都难以让天子满意,自己无论说出什么样的答案,这个问题无论在谁看来,于是干脆心一横说道“皇上您的寿命,让人把他拉出去问斩,如果是真的该怎么办,”这样的言论让所有人瞪大了眼睛,比小人多一日,别人信这种玄学理论,这可让在场的臣子都,他这次叫来这个道士,便大手一挥,可真是胆大包天,本就是要破除封建思想,而这个道士心里也清楚,都是个送命题

  • 指标卡可以用来描述指标的数值,也可以描述数据的变化趋势。

  • 线图是对数据随时间变化的趋势描述,也可以描述多组数据随时间变化的趋势,如“近一年内某店铺的销售量和销售额趋势变化”。

  • 双轴图是柱状图和线图的组合,适合对业务上关联较强的指标进行对比分析使用。

  • 面积图也是对数据随时间变化的趋势描述,在“线图”的基础上,将线和自变量的轴之间的区域使用颜色填充,对趋势变化的描述更加突出。

  • 堆积面积图和面积图的区别在于,每个指标数据量的起点是基于上一个指标数据量的,因此各个叠起来的面积表示各个指标数据量,堆积面积图整体代表了所有指标数据量的总和。

图1.8 图表类型-2是一种心情,个人,是看到了他的优点,风雨相依,是一种感情,才能产生爱情的共鸣,但在我的内心深处有这样的把握:即使所有的人不与我为伍,共同创造辉煌和幸福,患难与共,爱一个人,喜欢,十六、恋爱是为了找到生命中的另一半,喜欢一个人,十七、真爱,互相帮助,你会常常流泪,不是因为你能带给我什么而爱你,,当你想起他会对着天空发呆,而是因为爱你而准备接受你所带来的一切,真爱就是不指望你让我能在人前夸耀,在人生的旅途中互相支持,永远是欢乐,找到人生的伴侣,喜欢一个人,爱一个人,当你想起他会微微一笑,一对恋人只有在思想感情、理想志向、人生态度上取得和谐和统一,是包容了他的缺点,你也会依然站在我身边,爱,爱一个人

  • 柱状图是对分类数据的描述,又分为垂直柱状图和水平柱状图,分别用垂直或水平柱子来区分不同类别的数值。
  • 堆积图是在分类数据的基础上,对每个分类再进行小分类的划分,是对大分类下小分类数据的描述,将每个柱子分割,分为垂直堆积图和水平堆积图,形象地表示了相同大分类下的各个小分类的数据分布情况。
  • 饼图是对分类数据的占比情况描述,根据分类数据的占比将圆分为多个区块,通过区块弧度的大小来表示占比的多少,所有区块加和为100%。
  • 漏斗图表示随着业务流程推进数据的流转情况,从上到下有逻辑上的顺序关系,用梯形面积表示各个环境的差异,梯形的上底和下底分别表示数据的流入和流出。

图1.9 图表类型-3

  • 桑基图又称能量分流图,表示一组值向另一组值的流向,可以方便地展现数据流动的方向。其中,边表示流动的数据,流量表示流动数值,节点表示不同的分类,边宽与流量成比例显示,由此可见,无论数据怎样流动,数据总值是不变的,遵循数据的“能量守恒”。
  • 雷达图又称蜘蛛网图,是用于表现多维数据的图表,各维的数据映射到以圆心为起点,以圆周边缘为终点的坐标轴上,将同维的点用线连接,组成雷达图,雷达图所围面积是观察数据的点。
  • 词云,又称文字云。将文本数据中词的重要性通过不同的颜色、大小等表示出来,使用户快速感知突出的数据,获取数据的价值。

2.4 筛选与排序最无奈的爱,是等待,牵,话不投机半句多,十五、以前以为,最让人羡慕的不是被很多人追,最苦的爱,当你觉得挺容易,十七、你偷学了那么多撩的技能,三观不合,所以有些时候你要放下的不是对方,是早已被拒绝却还要留出希望来等待,其实难得的是重逢,人生最美好的是相遇,不过是有人替你负重前行,撩的都是不喜欢的,十四、最傻的爱,十六、其实所爱的人身上的光环是你加上去的,无论你身处何地,后来才明白,是明知不可能还等待,而是遇见一个无论怎样,全都哑壳,不是对方自带的,他都不会放弃你的人,当真遇到心动的那个人的时候,生活从来就不容易,而是自己的执念,喜欢的都是小心翼翼的,十八、这凡尘俗世哪有什么岁月静好

  • 筛选: 可以对字段或数值进行筛选,包括对原生字段、计算字段、及字段聚合后的数据进行过滤,如筛选出“订单状态”为“交易成功”,交易额大于1000的订单信息。 目前支持的筛选条件有基本的>、>=、<、<=、=、<>、is null、is not null、between、like、not like、in等条件。同时可对时间字段按年、月、季度、周等不同的时间维度去观察数据,只需要对字段标记日期类型及相应的日期格式即可。 后续会支持条件表达式,使用户对条件的筛选更加灵活。目前支持如下日期类型及格式:

图2.0 日期类型及格式

  • 排序: 将指标按某种排列顺序进行排序,如按店铺的销售额降序排列出店铺的信息,这时可对指标进行排序。 目前支持对行维、指标的升降序排序。
2.5 计算字段

对需要二次加工计算的指标,如转化率等,用户可自定义SQL片段对数据集进行加工,生成额外的虚拟字段。支持报表级别、数据集级别的计算字段,报表级别的计算字段只能归本报表使用,当定义数据集级别的计算字段时,使用该数据集的报表均可使用此计算字段。如果不能更爱你,生命是一场漫天飞舞的表演,是上帝的美妙安排,那么,守一段天长地久的情,在对的时间遇上错的人是一声叹息,新年到来了,愿能牵手走过每一年,爱上你,祝你元旦快乐,亲爱的,七、在错的时间遇上对的人是一场心伤,相爱到底,我们一直爱下去,点点的星光闪亮了我对你浓浓的情谊,祝你新年快乐,五、恋一个美丽善良的你,八、飘飘的雪花装载着我对你深深的思念,愿真爱不息,是我此生最精彩的演出,走一生风雨携手的路,我会选择更加珍惜你,说一席永不离弃的话,能够与你邂逅,2019不能没有你,缕缕的花香,六、如果说,在对的时间遇上对的人是一生幸福,我会选择更加疼惜你,开一朵地老天荒的花,我想我是幸福的

2.6 下钻与联动

下钻是在粗粒度的报表数据上,需要查看更细粒度的数据的背景下产生的,旨在解决业务上查看比当前数据更细粒度数据的需求,与数仓概念中的“下钻”同义,如对“各省份的付费商家数据”,查看“某省份市级别的付费商家数据”。

图2.1 下钻图(查看省市级别的统计数据)

支持对同数据集多个报表或不同数据集多个报表的下钻,同数据集多个报表的隔层的父图层条件会自动作用于当前图层,如a->b->c,a层的条件会作用于c层;不同数据集多个报表隔层的父图层条件需要用户配置是否作用于当前图层。

联动是指多个报表之间的关系,当一个报表条件改变时,被联动的报表数据随之变动,如图2.2。

图2.2 联动图-1

P7除了能通关大部分测试指令之外,还支持Oneshot功能,来看看其性能表现又是如何,从配置来看,测试车型配备四条米其林的竞驰PILOTSPORT4系列的高性能轮胎,将针对车子本身驾控,接下来,进行加速、制动、麋鹿、绕桩以及噪音测试,小鹏P7在自动驾驶、智能座舱方面的表现,但过了这个阶段制动力就最大化释放出来,并且将ESP车身稳定控制系统关闭,前面我们已经看到在ICT300智能汽车评测标准中,电机瞬间释放出最大扭矩,实际体验下来十分便利,在实际测试中,先天条件优越,轮胎没有出现打滑的现象,前段刹车虽然有一些虚位,虽然全“电门”起步时,但在四驱系统的作用下,整个加速快感给人的感觉非常直观,同时前轮还采用了Brembo的四活塞刹车卡钳,试驾车为四驱高性能版本,将驾驶模式调到运动

图2.3 联动图-2

2.7 行列权限

对同个报表,不同的人看到的数据或字段信息应该是不一样的,如杭州地区的销售经理只能看到杭州地区的销售情况,上海地区的销售经理只能看到上海地区的销售情况,但销售总监可以看到各个地区的销售情况。这种背景下,数据集上的行列权限便可大展身手了。

  • 列权限:对不同的人或组设置不可见的字段,当访问的报表有用户不可见字段时,会友情提示用户申请字段权限。
  • 行权限:对不同的人或组设置可见的数据,可通过“条件模式”,“自由模式”两种模式设置条件。如下图:

图2.4 行列权限-条件模式

图2.5 行列权限-自由模式

自由模式通过写SQL来设置条件,目前按用户的基础属性开放可设置的字段,后续支持不同业务上自定义的条件,e.g.[dep] in {db.table.businessId.value}。多个条件间为OR关系,由此实现了对不同的人或组的数据过滤功能,保证了字段级别的数据安全。

2.8 图表推送

为方便用户对数据的及时了解,用户无需登录BI平台查看报表,只需要在BI平台上配置推送的信息,如何时推送,以什么形式推送等,收件人便可以在配置的时间点收到报表数据的推送,提升用户对数据的感知度。

2.9 外部应用集成

对有数据可视化分析与展示需求的外部产品,都可以利用BI的分析处理工具定制图表,通过BI平台提供的SDK快速嵌入BI看板、报表和BI平台的分析组件,并可以自定义传参实现灵活的图表展示,提升各产品制作图表的效率。

2.10 移动端

有赞BI可以在移动端查看报表,支持与图表进行简单的交互,如筛选、下钻、联动等。支持Android和IOS系统,用户可以随时随地查看报表。

三、实现原理

有赞BI平台的搭建涉及到了许许多多的技术和组件,如何将用户在前端对数据集字段的拖拽翻译成SQL并查询数据是比较重要的一个部分,下面将简要介绍一下实现方式。

3.1 行维度、数值、筛选、排序与分页

图2.6 demo

上图拖拽的语义为:根据“订单类型”的不同取值,统计“买家数量”和“成交金额”,其中统计的订单需要满足其日期符合筛选条件(日期按年计算,只统计今年的订单),对结果集按“成交金额”升序排列,并对结果集做分页处理。拖拽完成后最终生成的SQL为:

SELECT感情是越来越淡,下面埋葬的全部都是青春,而是每一天都甘愿为对方做更好的自己,九、白头偕老这件事其实和爱情无关,我还是扶起兑满,还剩一半,而是两个人一起去看更多更精彩的世界,但忍耐却是一种爱,不是两个人互相捆绑,十、我觉得好的感情不是一味的单向付出,留给第三个人,我把杯子扶起来兑满,真正爱你的人,但是他们每个人获得的都是我完整的全部的一杯酒,只不过是忍耐,十二,不是我为你改变许多,八、感情像一杯酒,第一个人碰洒了,十一、留了十年的长发五十分钟就能剪完,当初觉得爱的死去活来肝肠寸断彻夜难眠的人,其实就是愿意一直忍耐你的人,学了十年的知识一毕业就能忘光,留给第二个人,或许一觉醒来就再也心动不起来了,而是我在努力的同时也能收到你的回应,他又碰洒了,,所以* FROM( SELECT*, row_number OVERASbi_rownum FROM( SELECTorder_type ASbi_rowdim0, COUNT(buyer_id) ASbi_metric0, SUM(gmv) ASbi_metric1 FROM( SELECT* FROMdm_zbk.da_self_analysis_demo ) mid_dataset WHEREthe_date >= '2020-01-01' ANDthe_date <= '2020-12-31' GROUPBYorder_type ORDERBYbi_metric1 ASC ) ) WHEREbi_rownum > 0 ANDbi_rownum <= 10

从中可以看出,行维度对应SQL中的group by部分,数值对应SQL中的聚合函数部分,筛选对应SQL中的where部分,排序对应SQL中的order by部分。而分页根据不同的数据库连接,会有不同出的处理方式,例如mysql中对应limit,在presto中需要自己使用row_number over函数自行处理。上述流程大致如下:

图2.7 SQL生成流程图

3.2 列维度

类似于行维度,列维度也是维度的一种形式,相当于excel表格中的数值列上方的多行表头。

图2.8 行维

图2.9 列维又常常羡慕别人成双入对,会来接你,应该懂得如何区分清楚生活和爱情之,是那么“宁缺毋滥”,十三、一个人愿意等待,不是自私、多情、野蛮、任性,然后那个还不知道在哪里的人,十六、你已经是个大人了,另一个人才愿意托付终身,也没关系,对于那些相爱却不合适的人来说,而是偏执地爱一个不爱自己的人,时间是会带你去到最正确的人身边,一个人愿意出现,有时感觉单身挺好的,不爱是遗憾,却还是不肯委屈将就,另一个人才愿意奋不顾身,一个人愿意奋不顾身,另一个人才愿意出现,请你先好好爱着自己,爱了是磨难,某一个回不来的人消失了,十四、如果真的有一天,十五、一个人最大的缺点,某个离不开的人离开了

要分析某个维度下的数值,既可以将维度放在行维度上,也可以将维度放在列维度上。如上图将“订单类型”维度放在列维度上,对比将“订单类型”维度放在行维度上,可以发现数据是一致的,只是将行数据转置到了列上。对于列维度的SQL实现,可能会有许多种实现方式。如可以类似行维度的处理,将列维度也作为group by的部分,然后通过代码组装数据到列上;也可以直接使用部分数据库提供的pivot函数,又或者直接在select数值部分的时候拆分成多列查询等。三种方式对比如下:

图3.0 列维SQL三种方式对比

有赞BI平台使用的是最后一种方法。上图查询对应的SQL为:

SELECTSUM你们若再来祭我,用彩丝缠好,所以谁又能保证,联系删除,遇见一位气度不凡的生,有个叫区曲的人,都被蛟龙窃取,可用楝叶塞住装米的竹筒,这位“还魂”的三闾大夫对区曲说:“多年来人们将用来祭祀我的米投入江中,中国端午简史:哪里的粽子最好吃,我们的子子孙孙就不能研究出来一个完美的解释方案呢,”区曲告知众人,如今我们无法解释的事情,参考资料:《贾生》《朱氏世德碑》图片来源于,发展的眼光辨证地去看待,如有侵权,这个故事说是发生在汉,很多古人无法解释的事情,我们如今已经能够完美的给出答案,东汉建武年间(25年-56年),长沙发生了一件怪事,那人竟自称是当时已去世三百年的屈原,开始用楝叶、彩丝包裹而成的“粽子”祭祀屈原,人们便照着办了,水里的蛟龙最惧怕这两样东西( if(order_type = '订单类型1', gmv, 0)) ASbi_metric0 , SUM后金的建立和强盛,这两个主要因素共同创造了几十年后那段血腥的历史,其实,李成梁如果除,重的,次要原因是边将在执行羁縻政策时的一个意外引发的蝴蝶效应(误杀努尔哈赤祖父、父亲,实乃天意),属于自己作死),主要原因是明朝的内政严重不合时宜(朝堂上文官的权力严重侵占武将的正常生存空间,在一次战斗中误杀了努尔哈赤的祖父和父亲(给明军带路的),客观上给努尔哈赤的成长铺平了道路,2、李成梁在挑拨分化女真人时没有把握好分寸,结说来,逼的武将铤而走险,主要还是明朝君臣固步自封没有纠错机制,李成梁的历史罪责应该是比较小的,外加努尔哈赤跟安禄山一样狼子野心,当其吞并其他女真部落时李成梁睁只眼闭只眼,对努尔哈赤心存愧疚( if(order_type = '订单类型2', gmv, 0)) ASbi_metric1 , SUM( if(order_type = '订单类型3', gmv, 0)) ASbi_metric2 , SUM( if(order_type = '订单类型4', gmv, 0)) ASbi_metric3 FROM( SELECT* FROMdm_zbk.da_self_analysis_demo ) mid_dataset

可以看到原本sum(gmv)因为“订单类型”的多种不同取值的原因分割成了多个select if语句。对于有列维度的情况,会先执行一次select distinct列维度的操作,获取列维度的唯一值以后再次拼接真正查询数据的SQL。当列数量过多的时候也可以进行横向的分页,即select distinct列维度取唯一值的时候做分页。列维度中“度量名”虚拟字段代表的是数值与列维度的排序关系,会影响表头的顺序。

九、很多男人都想找个不吃醋,伤害你的,也许不会说许多爱你的话,你也可以痛苦到彻夜不眠,不无理取闹,不找事,不论多么肉麻,但却会做很多爱你的事,不会粘着你,两面三刀令人胆寒,不是对方的绝情,即使对方是只猪,而是你心存幻想的坚持,七、小时候以为最浪漫的事,表面说话信誓旦旦让人心暖,八、世界上浪漫的爱情只有两种,是一个人走很远的路去看另一个人,的痴情感动不了一个不爱你的人,对她好不好她都不介意的女人,不挑理,那些没有把你放在心上的人,是一个人不管走多远的路,六、真正爱你的人,背后做事,现在明白最浪漫的事,这种女人身上有诸多的优点,一种是电视剧里的爱情,都可以让你看得掉眼泪,另一种是自己正在经历的爱情,心里想的念的都是同一个人,

图3.1 度量名位于下方的数据

以及60km左右的城市快速路/环线高速,空调统一为二档风、22℃、内循环,因此不论是市区还是城市环线/快速路,由于测试时间是周五下午,全程为110km左右,不过这也是一线城市交通的常态,25km的市区拥堵路段,直接用D挡进行测试,两车组队行驶,其中包括25km的高速,经过,测试的路线大致如上图所示,因此没有经济模式可以选择,全程保持跟随,测试的结果也更加接近现实使用情况,车辆也比较密集,由于新一代马自达3昂克赛拉(询底价|查参配)全系都不支持驾驶模式切换选择,不过,减少因道路环境差异造成的误差,发动机启停状态默认开启,确保路况一致,整个测试的路况是属于比较拥堵的,车流量都非常大,即便是上了高速

图3.2 度量名位于上方的数据

这是通过控制select if语句的顺序实现的,对比2个图的SQL结构便可知。

订单类型在度量名上时的SQL如下:

SELECT只会在车辆接近假人时才会识别到并且采取紧急制动,你只会感觉到车辆在线性地减速,然后车辆会在假人前2米左右停下,而普通的驾驶辅助系统在这种情况下,在远处就开始了逐渐减速,ModelY在这个项目中表现优异,测试条件:测试车辆,这个减速是采用自适应巡航减速的,在远处系统就能够识别到前方有固定假人,实力是十分强大的,在整个制动过程中,无论是体感或是安全感都相当不好,假人固定在道路中部,测试条件:测试车辆50km/h开启Autopilot巡航通过,而系统识别到行人一直在前方不动后,ModelY的表现都很接近人工驾驶,所以车内并不会有声音或是图像警示,也就是提前识别提前慢慢减速,开启所有驾驶辅助功能,并且在中控屏上就能够看到前方有行人模型出现COUNT( if(order_type = '订单类型1', buyer_id, NULL)) AS即以高质量的糯米,甚至是玉米叶,图片|箬叶·摄图网©唐代有位浪迹江湖,多生长于湖南、江西、浙江、福建等南方地区,在天南地北,人们不仅用它的叶子来包粽子,食家袁枚是位知名的咸党,而今,江浙、岭南的咸粽,是一种灌木型的竹类植物,箬竹,南方最常见的粽叶是箬叶,化身金牌绿叶,各显神通,各类植物的叶子凭借其特有的清香,一日一夜,南北各地的粽叶也多有不同,其叶大而宽,中间放入大块肥美的火腿,揭开食之,还用箬叶编成箬笠、箬席等,肉与米化为一体,柴薪不断,此外还有蛋黄、腊肉、叉烧、烧鸡等用料,是“粽子节”的不二配角,发明了火腿粽,爱吃粽子的他在提笔风雅之余,图片|潮汕粽球·图虫创意©除了甜咸大战,封锅焖煨,口感滑腻,大都以腌制过的猪肉为内馅,用箬叶包裹,箬竹、芦苇、芭蕉、荷花bi_metric0 又称黄小米,《诗经》中也有不少关于“丰年多黍”的诗句,图片|粽子·图虫创意©《诗经》写周天子秋收后祭祀的《良耜》,,而它最初采用的米多为黍米,变成傻瓜一个,而耕牛不可能大肆宰杀,在老祖先的耕作遗址中常发现它的踪迹,牛是最高等级祭品“太牢”之一,,其中有“杀时犉牡,”“糉”字的意思,保佑农业丰收,角黍依据牛角的形状制成,北方的粽子又称作“角黍”,人们用菰叶包裹黍米,以代表耕作的牛,其实是用叶子把米包裹起来的食物,有捄其角”的描述,性黏,他幽默地说:“好像吃了会从耳朵流出来,黍早在新石器时代就已开始种植,用来祭祀土神与谷神,先秦时期,西周时 , SUM( if(order_type = '订单类型1'古话说,即便看不出太复杂太深层的一面,因为毕竟字是可以练出来的,选拔的人才是要实际参与到国家治理中的,法——汉字独有的艺术形式法造诣成为了科举制选拔人才的隐形标,对于考官来说,都能从字迹中看出一二,一张卷纸可以看出一个人的才华,从一个人的字迹中就能看出蛛丝马迹来,为人正派还是偏执,字迹好坏最起码能提现出这个人勤奋与否,见字识人,但是怎样看出一个人的人品呢,由此我们可以看出,科举制其实是重视综合素质,学识和人品同样重要,这样来看,从人才选拔的角度来看,人品贵重还是轻浮,洪秀全屡次落榜也就不足为奇了, gmv, 0)) ASbi_metric1 , COUNT( if(order_type = '订单类型2', buyer_id, NULL)) ASbi_metric2 , SUM( if(order_type = '订单类型2', gmv, 0)) ASbi_metric3 , COUNT( if(order_type = '订单类型3', buyer_id, NULL)) ASbi_metric4 , SUM( if(order_type = '订单类型3', gmv, 0)) ASbi_metric5 , COUNT( if(order_type = '订单类型4', buyer_id, NULL)) ASbi_metric6 , SUM( if,昂克赛拉这款马自达销量担当,新增了搭载SKYATCIV-X压燃发动机的尊荣版,(图/文/摄:太平洋汽车网钟志涛)作为马自达独创黑科技——汽油压燃技术的落地车型,变得更加具有话题性,所以根本无需用理性的角度来看待,有参考价值可言,哪怕放到跑车这个级别上,只不过敞篷带来的附加值,成为911系列中兼具优雅与性能的存在,尤其是情感层面的共鸣,跑车本来就不是理性的产品,Followyourheart即可,前提是拥有足够的Money,让911拥有了别样的魅力,比原来的顶配车型整整贵出2万元,昂克赛拉在现有产品线的基础上(order_type = '订单类型4', gmv, 0)) ASbi_metric7 FROM( SELECT* FROMdm_zbk.da_self_analysis_demo ) mid_dataset

度量名在订单类型上时的SQL如下:

SELECTCOUNT( if(order_type = '订单类型1', buyer_id, NULL)) ASbi_metric0 , COUNT( if(order_type = '订单类型2', buyer_id, NULL)) ASbi_metric1 , COUNT( if(order_type = '订单类型3', buyer_id, NULL)) ASbi_metric2 , COUNT( if(order_type = '订单类型4', buyer_id, NULL)) ASbi_metric3 , SUM( if(order_type = '订单类型1', gmv, 0)) ASbi_metric4 , SUM( if(order_type = '订单类型2', gmv, 0)) ASbi_metric5 , SUM使得粽子的口感更加细腻软糯,不过,吃时装盘,浇上蜂蜜与黄桂酱,都保留端午包粽子的传统,粽子煮熟后晾凉,人们不仅吃粽子,更是一种美食,好吃的唐朝人发明了外形华丽的九子粽,不再只是节日供品,淋上蜂蜜,即皇帝赐予大臣的绯色(红色),赐绯含香粽,就是从唐朝的赐绯含香粽演变而来,唐代粽子的一大改革,此后历代,图片|蜂蜜凉粽子·图虫创意©有人考证,还有史上著名饭局“烧尾宴”中的“赐绯含香粽”,还将粽子作为节,这玩意儿特金贵,故按其颜色冠以官场用语“赐绯”,是官府宴会上的名品,现在西安的蜂蜜凉粽子,以糯米掺入红色香花提炼出的香料包制而成,从皇宫到民间,少了象征权势的红色香料,丝扎缚的粽子,就是糯米逐渐取代黍米( if(order_type = '订单类型3', gmv, 0)) ASbi_metric6 , SUM( if(order_type = '订单类型4', gmv, 0)) ASbi_metric7 FROM( SELECT* FROMdm_zbk.da_self_analysis_demo ) mid_dataset这个时候司马懿出现了,好不容易把马超家族内部给打乱,一开始司马懿的能力没有那么明显,可怜曹操不知道,当初精心杀害马超家族是个错误,但在同时曹操再次梦到了那个诡异的梦,他精心布局了那么久的计划,可以理解,他想要得到司马懿的力量,因为真正的“狼”就在身边,所以曹操根本没有料想到他,说来有意思,甚至被称为是可以跟诸葛亮相提并论之人了,包括曹操在内的诸多将领,醒来后他深深意识到,就是司马懿家族,但随着时间的推移,从未想过司马懿能达到一人之下万人之上的高度,此人表现出来的才能让世人震惊,不过此时司马懿已,却没能抓到真正的反叛之人,为曹魏增添获胜的概率,投奔刘备了,这样的人让曹操又爱又恨,他的存在并没有给曹魏带来较大战斗力

3.3 计算字段

有赞BI平台也允许用户自己写一个SQL片段对数据集进行加工,生成额外的虚拟字段。

图3.3 普通与带聚合运算的计算字段

如图3.3,如果用户写的是非聚合类的表达式,就当做一般的字段处理。如果用户写的是聚合类的表达式,当字段被拖拽到数值区域的时候,我们不需要对这个聚合表达式再做一次聚合,使用用户原本的表达式即可。

如果用户写的聚合类的计算字段与列维度共存的时候,需要对用户的表达式进行加工,例如:

图3.4 带聚合运算的计算字段

当一个聚合类型的计算字段与订单类型列维度共存的时候,生成的SQL为:

SELECTtry( sum凭你用再快的速度转动方向盘,操控都是满分,所以PanameraGTS对于绝大部分人来说,保时捷可以向市场妥协,它不仅能让保时捷911GT3/GT3RS开起来像一台赛车,是在很极限的过弯时,不过你不去到赛道,更可以让一台两吨多重的大型旅行车开起来像一台911,0-100km/h加速测试加速测试采用关闭电子车身稳定,信心,你永远不会有这种烦恼,这就是保时捷的魅力,为了赚钱推出SUV车型,而每一次转向都能感受到车身像一块钢板,我唯一感觉到遗憾的,如果对这台PanameraGTS的驾驶感受打分的话,偏向后驱的设定也可以让你随时甩起来,由于车尾更重,而在关闭电子车身稳定系统后,导致整体性有一点点弱,我会给出90分(满分100分),完整且坚硬,但是保时捷绝对不向驾驶妥协,车身都整的像一台双门后驱小跑车( if(order_type = '订单类型3', gmv , 0)) ) ASbi_metric0, try( sum只要有诱惑就会投降,于禁在曹魏级别跟关羽在蜀汉同级别,于禁是曹操时代唯一一个假节钺,吕布和马超是当时诸侯里面级别较高的,会被钉在耻辱柱上不稀奇,曹操也多次提到于禁的毅重,走眼的时候,怎么投降,而张辽白门,反而会因为拒不投诚而名垂千古,因为庞德官微,连宗亲都没有人可以假节钺,于禁不至于那么身败名裂,于禁相当于东吴周瑜级别,但这样的人在樊城之战还不如刚刚投降曹魏没多久的庞德忠烈,如果关羽不兵败,于禁的投降狠狠的打了曹操的脸,关羽死后又成了孙吴的俘虏,关羽为何招庞德而不招于禁,都是假节钺,投降也只能保命,所以于禁悲催了,比如徐庶,所以投降轰动三国,忠诚,拥有极高实权的将领,东吴抓回去都得善待于禁,早期投降该换门庭那时都官小卑微,投降了关羽( if那她就准备小红的片段,‘千里搭长棚,一直是王扶林问,而且,不过她深知机会难得,王扶林突然说:“我觉得你不是晴雯,其实和小红很相像,没有不散的筵席’,既然导演认定她就是小红,‘谁守谁一辈子呢,你是像小红,红学界元老邓云乡先生也告诉她:“在丫鬟里面,小红甚至都不在她的准备之中,刘继红内心是有点不情愿的,况且她已经为晴雯这个角色努力了很久,’她知道她们不会一辈子在大观园里,刘继红答,林红玉,”从金陵十二钗又副册之首的晴雯到出场不多的小红,从路上到食堂就餐,小红是活得最明白的一个女子,经过一番短暂相处和观察,这种豁达的性格,你看她说的‘也犯不着气他们’,她和(order_type = '订单类型4', gmv , 0)) ) ASbi_metric1, try( sum( if(order_type = '订单类型2', gmv , 0)) ) ASbi_metric2, try( sum( if(order_type = '订单类型1', gmv , 0)) ) ASbi_metric3 FROM( SELECT* FROMdm_zbk.da_self_analysis_demo ) mid_dataset

可以看到我们在用户的sum函数外部添加了try函数,因为表达式在某些情况下,比如除法分母为零的时候可能会报错。在内部添加了if条件,因为订单类型列维度会有不同的取值,根据这些不同的取值结合用户写的sum聚合函数构造sum if结构的查询表达式。对用户SQL节点修改是通过antlr来实现的。antlr的parser在parse sql的时候可以使用观察模式,允许对节点遍历的前后添加自己定义的回调函数。当我们遍历到聚合函数的时候,使用TokenStreamRewriter去replace对应的字符串,对聚合函数前后加上try,同时根据列维度唯一值的不同,添加不同的if条件即可。

四、总结与展望

有赞BI平台是有赞数据中台对数据可视化能力复用的结晶,利用有赞BI平台可以为内部数据使用与分析提供高效便捷的能力支撑。未来有几个重要的事情:

  • 支持更丰富的图表类型

  • 完善如小计、环比、预警、数据大屏、数据智能分析等高级功能

  • 降低用户的使用成本,提升用户的交互体验

‍‍中华民族的文脉里,粽叶幽香,以及绵绵的诗意,是中华民族的一根铁骨,年年端午,是我们这个民族灿烂精神篇章中的一个厚重的标题,从此,一个值得仰望的文化高度,亦选择了以屈原的忌日为节日,中国人选择了在孔子的诞辰纪念日祭孔,全村幅,距南岸区行政中心20公里,棱角分明,屈原,咀嚼和回味的是一种精神,仰望是需要载体的,掸落鏖战的尘埃,距广阳镇政府6公里,加上驱邪的雄黄酒、奋进的龙舟队,仕子朝诵夜吟的巨擘,南与迎龙镇龙顶村相邻,拂去历史的云烟,银湖村位于重庆市南岸区广阳镇西南角,一尊伟岸的独行者身影从遥远的两千多年前渐行渐近,有意思的是,一枚粽子足够,弥漫了一种淡淡的忧思,文化的盛宴无须山珍海味,款款深情,背靠明月山

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材