首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kettle构建Hadoop ETL实践(九):事实表技术

对非可加度量,较好的处理方法是尽可能存储构成非可加度量的可加分量,如构成比例的分子和分母,并将这些分量汇总到最终的结果集合中,而对不可加度量的计算通常发生在BI层或OLAP层。...图9-3 设置年月变量的转换 获取系统信息步骤取得上月第一天,公式步骤用month和year函数获得上月对应的月份与年份,设置环境变量步骤设置MONTH和YEAR两个全局变量用于后面SQL作业项中的替换变量...这里的n==12只是为了方便测试,因为SQL中是以上个月的年月作为过滤条件,所以换做当月中任何一天都可以。这个作业保证了每月汇总只有在某天定期装载执行完后才开始,并且每月只执行一次。...此时订单应该具有了所有五个状态的日期代理键和度量值。 累积快照粒度表示一个有明确开始和结束过程的当前发展状态。...本节说明如何在销售订单示例中实现累积月销售数量和金额,并对数据仓库模式、初始装载、定期装载Kettle作业和转换做相应地修改。累积度量是半可加的,而且它的初始装载比前面实现的要复杂。 1.

6K12
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《Learning ELK Stack》7 Kibana可视化和仪表盘

    数据图 折线图 Markdown小部件 度量 饼图 切片地图 垂直柱状图 度量和桶聚合 度量和桶的概要来自Elasticsearch的聚合功能,这两个概念在Kibana中为数据集设计可视化的时候扮演着至关重要的角色...举个例子,如果指定@timestamp字段作为桶,且时间区间为一周,那么文档将基于每周的数据分组,然后可以对分组后的文档计算度量,如计数、求平均值等 直方图 直方图与日期直方图相似,除了要求指定的字段和区间都是数字类型的...例如,要计算每一个产品类别的访问者的数量,可以指定产品类别字段为桶聚合,然后进行count度量聚合计算 Average、Sum、Min和Max 类似于Count聚合,Average、Sum、Min和Max...相应地为聚合中的数字字段计算平均值、求和、最小值 和最大值 Unique Count 类似于SQL中的COUNT (DISTINCT fieldname)功能,计算出字段的唯一值的数量 ?...切片地图 切片地图用来根据geo坐标定位地理位置。这是基于Geohash桶聚合实现的,Geohash聚合会将多组坐标分组到一个桶中 ? 垂直柱状图 对基于时间和非时间的字段都表现得很好。

    2.9K31

    一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)

    1.3 累积快照事实 用来描述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点;当过程随着生命周期不断变化时,记录也会随着过程的变化而被修改; 个人理解:要看整个生命周期的多个业务过程...每个维度和事实必须与所定义的粒度保持一致; 设计事实表时,粒度定义越细越好,一般从最低级别的原子粒度开始; 因为原子粒度提供了最大限度的灵活性,可以支持无法预期的各种细节层次的用户需求; 原则...粒度为票一级;(实际业务中,一个订单可以同时支付多张票) 票支付金额和票折扣金额,两个事实的粒度为 “票级”,与定义的粒度一致; 订单支付金额和订单票数,两个事实的粒度为 “订单级”,属于上一层订单级数据...3 个事实,应该采用统一的计量单位,统一为元或者分,以方便使用; 原则 7:对事实的 null 值要处理 原因:在数据库中,null 值对常用数字型字段的 SQL 过滤条件都不生效;如,大于、小于、...,选择与维度建模有关的业务过程; 如,是选择 “买家付款” 这个业务过程,还是选择 “创建订单” 和 “买家付款” 这两个业务过程,具体根据业务情况来定; 根据所选的业务过程确定事实表类型

    6.7K21

    一步一步教你制作销售业绩分析报告

    2.2CALENDAR函数   CALENDAR函数用于手动指定日期范围,大家可以根据需要进行填写起始日期和结束日期生成。...具体步骤如下:新建空白表,使用CALENDAR函数输入开始日期和结束日期即可生成相应范围的日期表。 ?   ...在可视化面板中拖放日期表中年,月字段和销售明细表中的本期销售业绩和去年同期的销售业绩,来展现效果查看验证度量值是否取数准确。 ? 计算好本期销售业绩和去年同期销售业绩后,开始新建同比度量值。...,在共享轴中设置年月,列值中放置本期销售业绩,行值设置同比和环比 ?...所以这里需要设置聚合类型为区去最后的值。设置完成后再根据年月进行排序。 ? 4、制作销售业绩完成率图表 PowerBI对表格的操作非常灵活,这里我们就已同比环比为例,首先拖放相应字段到表格 ?

    5.4K21

    Oracle的静态游标与动态游标

    代码演示 使用背景 我们在存储过程中输入开始和结束日期,用于查询开始到结束日期这一段时间内的销售。 解决思路 这个查询我们就可以用到静态游标和动态游标的结合使用。...通过静态游标设置开始和结果日期获取到所涉及到的当前年月。 根据获取到的当前年月生成要查询对应的月份分割表的动态SQL语句。 用动态游标遍历,然后进行数据的处理。 代码 ?...上面是定义和静态游标和动态游标,下面的静态游标的写法,是根据输入的开始和结束日期获取对应的当前年月 即如果输入了2018-06-01----2018-08-30 游标显示结果为 201806 201807...根据输入的日期通过静态游标生成对应的动态SQL语句。...vs_sSql是我们的动态字符串,把主表查询先加进来,然后根据输入的开始和结束日期找到对应的月份分割表,然后判断表是否存在,如果存在的话就用union all把分割表加入到动态SQL语句里 ---- ?

    3K30

    Kylin使用心得:从入门到进阶的探索之旅

    Cube可以理解为一个多维数据集,其中包含了用户定义的一组维度和度量。Kylin通过预先计算所有维度组合下的度量值,将查询结果存储为高度压缩的Cuboid(立方体的子集),从而实现查询时的亚秒级响应。...首先,Kylin会根据用户定义的维度和度量,生成一系列Cuboid;接着,通过MapReduce或Spark作业,对原始数据进行聚合计算,生成Cube;最后,将计算结果存储在HBase中,以便快速查询。...维度分桶(Bucketing)通过对维度进行分桶,可以减少Cuboid的数量,提高构建速度和查询性能。例如,对日期维度进行天级别的分桶。"...聚合组(Aggregation Group)通过聚合组,可以将相关的度量分组在一起,减少计算量。"...解决:优化Cube设计,如增加维度分桶、索引;检查网络和硬件资源,确保性能瓶颈得到解决;调整查询SQL,减少数据扫描量。3. 系统稳定性问题:Kylin服务异常,如启动失败、频繁重启。

    29210

    数据仓库

    SQL 给一张城市和交易额表,一张城市对应省份表, 取出 省份 总 交易额大于 500 的 省份 的名字 select max(tmp.province_name) from (select bt.city_num...:雪花模式的维度表可以拥有其他的维度表,这种表不易维护,一般不推荐使用 星座模型: 基于多张事实表,而且共享维度信息,即事实表之间可以共享某些维度表 维度建模步骤: 事实表种类: 事物事实表: 表中的一行对应空间或时间上某点的度量事件...周期快照事实表: 单个周期内数据, 每行都带有时间值字段,代表周期 累计快照事实表: 由多个周期数据组成,每行汇总了过程开始到结束之间的度量 无事实的事实表: 有少量的没有数字化的值但是还很有价值的字段...因为有时维度除了主键没有其他内容,虽然也是合法维度键,但是一般都会退回到事实表中,减少关联次数,提高查询性能 多层次维度 多数维度包含不止一个自然层次,如日期维度可以从天的层次到周到月到年的层次...维度表空值属性 推荐采用描述性字符串代替空值 日历日期维度 在日期维度表中,主键的设置不要使用顺序生成的id来表示,可以使用更有意义的数据表示,比如将年月日合并起来表示,即YYYYMMDD,或者更加详细的精度

    21220

    有赞BI平台实现原理

    饼图是对分类数据的占比情况描述,根据分类数据的占比将圆分为多个区块,通过区块弧度的大小来表示占比的多少,所有区块加和为100%。...图2.6 demo 上图拖拽的语义为:根据“订单类型”的不同取值,统计“买家数量”和“成交金额”,其中统计的订单需要满足其日期符合筛选条件(日期按年计算,只统计今年的订单),对结果集按“成交金额”升序排列...中的group by部分,数值对应SQL中的聚合函数部分,筛选对应SQL中的where部分,排序对应SQL中的order by部分。...列维度中“度量名”虚拟字段代表的是数值与列维度的排序关系,会影响表头的顺序。 ? 图3.1 度量名位于下方的数据 ?...在内部添加了if条件,因为订单类型列维度会有不同的取值,根据这些不同的取值结合用户写的sum聚合函数构造sum if结构的查询表达式。对用户SQL节点修改是通过antlr来实现的。

    1.9K10

    多用度量值,少用新建列:一个度量值解决分月均摊

    第二个问题:结果的呈现带着“年月”这个维度,因此需要写一个日期表: Power BI创建日期表的几种方式概览 由于表中只需要一个年月维度,我们简化一下: 日期表 = GENERATE ( CALENDAR...思路: 根据起止日期列出期间的所有日期,并得到所在的月份A 由起始日期是否在当月15日之前(含)来确定均摊的月份B 通过筛选月份确定当月是否在以上B表中,如果在就返回分摊费用 统统这些,我们都可以直接在度量值中写出来...如果在就返回分摊费用 使用CONTAINSSTRING和CONCATENATEX来确定所筛选的月份是否在以上的B表中。...将两个维度和度量值拖到矩阵中: OK! 后记 解决该问题其实可以使用新建列,但步骤上其实都差不多。...因此对于一些问题,最近是不考虑使用新建列的方式,而只考虑采取新建度量值进行聚合运算来解决。

    88030

    大数据分析工具Power BI(六):DAX表达式简单运用

    DAX 包含一些在 Excel 公式中使用的函数,此外还包含其他设计用于处理关系数据和执行动态聚合的函数。...在Power BI中创建日期表常见的有两种函数:CALENDAR和ADDCOLUMNS。下面分别介绍。...1、通过CALENDAR函数创建日期表 创建日期表可以使用CALENDAR函数来实现,其用法如下: CALENDAR(StartDate,EndData) CALENDAR函数可以通过指定一个开始日期和结束日期生成一列顺序的日期数据表...'消费日期),LASTDATE('2022年点播订单表'消费日期)),FIRSTDATE指定开始日期,LASTDATE指定结束日期。...需求:根据导入到Power BI中的"2022年点播订单表"和"门店信息表"数据展示每个门店对应的点播订单信息。

    4.1K101

    Kettle构建Hadoop ETL实践(八-1):维度表技术

    对基本维度和子维度表来说,属性(如品牌和分类描述)是公共的,其标识和定义相同,两个表中的值相同,然而,基本维度和子维度表的主键是不同的。...我们期望在每个事实表中设置日期维度,因为总是希望按照时间来分析业务情况。在事务型事实表中,主要的日期列是事务日期,如订单日期。有时会发现其它日期也可能与每个事实关联,如订单事务的请求交付日期。...如示例数据仓库中的日期维度就有一个四级层次:年、季度、月和日。这些级别用date_dim表里的列表示。日期维度是一个单路径层次,因为除了年-季度-月-日这条路径外,它没有任何其它层次。...可以在固定深度层次上进行分组和钻取查询。 分组查询是把度量按照一个维度的一个或多个级别进行分组聚合。图8-9所示的Kettle转换是一个分组查询的例子。...但与分组查询不同的是,分组查询只返回分组后最低级别、即本例中月级别上的度量,而钻取查询返回分组后维度每一个级别的度量。

    3.5K31

    独家 | 手把手教数据可视化工具Tableau

    Tableau 根据 Excel 数据源中前 10,000 行和 CSV 数据源中前 1,024 行的数据类型来确定如何将混合值列映射为数据类型。...维度和度量 当您连接到数据源时,Tableau 会将数据源中的每个字段分配为扮演两个可能的数据角色之一:维度或度量。 当您开始在 Tableau 中处理数据时,这些分配有什么效果?...在 Tableau 查询中,视图中的维度的 SQL 表示形式为“Group By”子句。...但是存在以下例外: 如果解聚整个视图,则不会根据定义来聚合视图中的字段。如果您使用的是多维数据源,则会在数据源中聚合字段,但视图中的字段不显示该聚合。...对于“数据”窗格中的度量,右键单击字段并选择“转换为离散”或“转换为连续”,那么字段的颜色将相应发生变化。 转换日期字段 您可以在离散和连续之间转换日期字段。

    18.9K71

    数仓建设中最常用模型--Kimball维度建模详解

    ,并且要确保维度表中不能出现重复数据,应使维度主键唯一 4、确认事实 事实表是用来度量的,基本上都以数量值表示,事实表中的每行对应一个度量,每行中的数据是一个特定级别的细节数据,称为粒度。...就是一行数据中必须有度量字段,什么是度量,就是指标,比如说销售金额,销售数量等这些可加的或者半可加就是度量值。另一点就是事务事实表都包含一个与维度表关联的外键。并且度量值必须和事务粒度保持一致。...累计快照事实表 周期快照事实表是单个周期内数据,而累计快照事实表是由多个周期数据组成,每行汇总了过程开始到结束之间的度量。...因为有时维度除了主键没有其他内容,虽然也是合法维度键,但是一般都会退回到事实表中,减少关联次数,提高查询性能 多层次维度 多数维度包含不止一个自然层次,如日期维度可以从天的层次到周到月到年的层次。...日历日期维度 在日期维度表中,主键的设置不要使用顺序生成的id来表示,可以使用更有意义的数据表示,比如将年月日合并起来表示,即YYYYMMDD,或者更加详细的精度。 ?

    75520

    数仓建设中最常用模型--Kimball维度建模详解

    ,并且要确保维度表中不能出现重复数据,应使维度主键唯一 4、确认事实 事实表是用来度量的,基本上都以数量值表示,事实表中的每行对应一个度量,每行中的数据是一个特定级别的细节数据,称为粒度。...就是一行数据中必须有度量字段,什么是度量,就是指标,比如说销售金额,销售数量等这些可加的或者半可加就是度量值。另一点就是事务事实表都包含一个与维度表关联的外键。并且度量值必须和事务粒度保持一致。...累计快照事实表 周期快照事实表是单个周期内数据,而累计快照事实表是由多个周期数据组成,每行汇总了过程开始到结束之间的度量。...因为有时维度除了主键没有其他内容,虽然也是合法维度键,但是一般都会退回到事实表中,减少关联次数,提高查询性能 多层次维度 多数维度包含不止一个自然层次,如日期维度可以从天的层次到周到月到年的层次。...日历日期维度 在日期维度表中,主键的设置不要使用顺序生成的id来表示,可以使用更有意义的数据表示,比如将年月日合并起来表示,即YYYYMMDD,或者更加详细的精度。

    4.2K00

    快速学习ES6-聚合aggregations

    4.1 基本概念 Elasticsearch中的聚合,包含多种类型,最常用的两种,一个叫桶,一个叫度量: 桶(bucket) 桶的作用,是按照某种方式对数据进行分组,每一组数据在ES中称为一个桶,...:根据数值阶梯分组,与日期类似 Terms Aggregation:根据词条内容分组,词条内容完全匹配的为一组 Range Aggregation:数值和日期的范围分组,指定开始和结束,然后按段分组 …...) 分组完成以后,我们一般会对组中的数据进行聚合运算,例如求平均值、最大、最小、求和等,这些在ES中称为度量 比较常用的一些度量聚合方式: Avg Aggregation:求平均值 Max Aggregation...可以看到每个桶中都有自己的avg_price字段,这是度量聚合的结果 4.4 桶内嵌套桶 刚刚的案例中,我们在桶内嵌套度量运算。事实上桶不仅可以嵌套运算, 还可以再嵌套其它桶。...:根据数值阶梯分组,与日期类似 Terms Aggregation:根据词条内容分组,词条内容完全匹配的为一组 Range Aggregation:数值和日期的范围分组,指定开始和结束,然后按段分组 刚刚的案例中

    1.6K10

    Java8新特性之日期、时间操作

    如何在java8中获取当前的年月日 LocalDate类中提供了一些很方便的方法可以用来提取年月日以及其他的日期属性,特别方便,只需要使用对应的getter方法就可以了,非常直观 /** * 2....如何在java8中获取当前的年月日 */ LocalDate today = LocalDate.now(); int year = today.getYear(); int month = today.getMonthValue...在这个方法里,需要的日期你填写什么就是什么,不想之前的API中月份必须从0开始 /** * 3....这个类由月日组合,不包含年信息,可以用来代表每年重复出现的一些日期或其他组合。他和新的日期库中的其他类一样也都是不可变且线程安全的,并且它还是一个值类(value class)。 /** * 5....%s %n", creditCardExpiry); // 这个月的年月 2020-02 有 29 天 // 你输入的年月是 2018-07 如何在java8中检查闰年 LocalDate类由一个isLeapYear

    6.6K10

    【致知篇57】DAX CALCULATE vs. Tableau LOD:从SUM+IF条件计算到SUMIF

    01—不同工具中的SUM+IF 在2022年写作《数据可视化分析2.0》的过程中,我补充了此前的一个关键知识盲区:指标分类、条件计算。 聚合是分析的本质过程,聚合度量的业务形态则是指标。...当然,除了Excel,SQL也有完全相同的逻辑,它是借助于WHERE把条件前置到GROUP BY和SUM聚合之前。...( [销售额] ) FROM table WHERE YEAR([订单日期])=2022 这个问题非常简单,没有分类字段、指标单一,如果是如下的复杂的问题,SQL中还要实现上述的SUMIF效果,就需要一个全新的功能...CALCULATE(聚合表达式, FILTER条件) 通过在每一个度量中单独指定filter计算条件,DAX可以在引擎中将其优先级提前,从而避免了SUM+IF的低下性能。...因此,LOD解决了不同详细级别的问题合并的问题,CALCULATE解决了不同范围的指标(度量值)的计算优化问题。

    11800

    数据仓库:详解维度建模之事实表

    在同一个事实表中不能有多种不同粒度的事实; 事实的单位要保持一致; 对事实的 null 值要处理;在数据库中null值对常用的大于或小于等SQL不生效,建议使用零值填充 使用退化维度提高事实表的易用性...半可加性 在快照事实表中收集到的状态度量都是半可加的。与事务事实表的可加性事实不同,半可加性事实不能根据时间维度获得有意义的汇总结果。...(3)循环流程的处理 主要解决问题是一个业务过程有多个日期。使用业务过程的第一次发生日期还是最近发生日期,根据用户决定。 多源过程 针对多源业务建模,主要考虑事实表的粒度问题。...如阿里巴巴数据仓库中,最常见的是日志类事实表。 第二种是条件、范围或资格类的,记录维度与维度多对多之 间的关系。 如客户和销售人员的分配情况、产品的促销范围等。...常见聚集型事实表 数据仓库中,按照日期范围的不同,通常包括以下类别的聚集事实表 公共维度层-通用汇总 应对大部分可预期的、常规的数据需求,通常针对模式相对稳定的分析、BI指标计算、特征提取等场景,封装部分业务处理

    2.8K10

    大数据分析工具Power BI(七):DAX使用场景及常用函数

    TOTALYTD: 计算从本年开始到当前的累计。 TOTALQTD: 计算从本季度开始到当前的累计。 TOTALMTD: 计算从本月开始到当前的累计。 这几个函数的用法一致,只不过计算的时间维度不同。...('度量值表'[总营收金额],'动态日期表'[Date]) 和 TOTALMTD('度量值表'[总营收金额],'动态日期表'[Date]) ,并绘制"矩阵"图,如下: 七、同比与环比统计 在数据分析中我们也经常遇到同比和环比的分析场景...度量值表'[当月工资],SAMEPERIODLASTYEAR('2021~2022年工资表'[年月])) 在"度量值表"中创建新的度量值"工资同比增长率" 度量值DAX公式为:工资同比增长率 = DIVIDE..."中年月列的格式为非层次结构。...在"度量值表"中创建新的度量值"上月工资" 度量值DAX公式为:上月工资 = CALCULATE('度量值表'[当月工资],DATEADD('2021~2022年工资表'[年月],-1,MONTH))

    10.2K42
    领券