首页
学习
活动
专区
圈层
工具
发布

数仓基础(一):数据仓库中常见的名词解释

在数仓建设中,我们说这是用户粒度的事实表,那么表中每行数据都是一个用户,无重复用户;例如还有销售粒度的表,那么表中每行都是一条销售记录。...比如订单表中的订单量、订单总金额都算原子指标。 业务方更关心的指标,是有实际业务含义,可以直接取数据的指标。比如店铺近1天订单支付金额就是一个派生指标,会被直接在产品上展示给商家看。...需要有一个桥梁连接数仓中间层和业务方的指标需求,于是便有了派生指标 派生指标:维度+修饰词+原子指标。店铺近1天订单支付金额中店铺是维度,近1天是一个时间类型的修饰词,支付金额是一个原子指标。...维度:观察各项指标的角度; 修饰词:维度的一个或某些值,比如维度性别下,男和女就是2种修饰词。 衍生指标:经过特定计算或处理从原始数据或原子指标中得出的新指标。...代理键有许多其他的称呼:无意义键、整数键、非自然键、人工键、合成键等。代理键就是简单的以按照顺序序列生产的整数表示。产品行的第1行代理键为1,则下一行的代理键为2,如此进行。

59223

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

粒度每行代表实体的一个事务 每行代表某时间周期的一个实体 每行代表一个实体的生命周期 事实 事务事实累积事实相关业务过程事实和时间间隔事实 事实表加载 插入 插入 插入与更新 事实表更新 不更新 不更新...,即使存在冗余,由于事实通常是数字型,存储开销不会太大; 原则 2:只选择与业务过程相关的事实 如,订单的下单这个业务过程,事实表中不应该存在支付金额这个表示支付业务过程的事实; 原则 3:分解不可加性事实为可加的组件...如,订单的优惠率,应分解为订单原价金额与订单优惠金额两个事实存储在事实表中; 原则 4:在选择维度和事实之前必须先声明粒度 粒度用于确定事实表中一行所表示业务的细节层次,决定了维度模型的扩展性;...粒度为票一级;(实际业务中,一个订单可以同时支付多张票) 票支付金额和票折扣金额,两个事实的粒度为 “票级”,与定义的粒度一致; 订单支付金额和订单票数,两个事实的粒度为 “订单级”,属于上一层订单级数据...,与 “票级” 事实表的粒度不一致,且不能进行汇总; 如果,以订单金额和订单票数这两个维度汇总总金额和总票数,会造成大量的重复计算; 原则 6:事实的单位要保持一致 如,订单金额、订单优惠金额、订单运费这

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

    《iOS Human Interface Guidelines》——Apple Pay

    或者,你可以将表头从“Shipping”改成“Pickup”来让用户指定一个物体的位置,比如一个快递服务的收货快递员。 为重复支付和要添加到购买总费用的费用使用行元素。...使用行元素来: 使用像“每月捐献$19.99”的行元素表明一个用户在授权一个重复支付 提醒用户额外的花费,比如“礼物包装5.00”或“税4.53” 显示可以减少花费的赠券或者折扣,例如“周五折扣 -$2.00...在这种情况下,在支付表格中提供一个非常清晰的说明是必要的。如果你使用了一个行元素来更新最终花费,金额就会自动显示为“金额待定”。...对于购物车中的多件商品要以同样的方式送往同样的地址这种情况,支持一个快速的支付流程让用户在准备好支付时尽快地显示支付表格。 在显示支付表格前收集返现或推广代码。...因为没有方式去在Apple Pay支付表格中输入代码,确保在显示表格前收集代码。 如果人们可以在一个购物车内配送独立的商品去不同的地方或者以不同的速度配送。在显示支付表格前获取这个信息。

    1.5K30

    订单视角看支付

    【信息流】步骤 2 第三方支付将请求转发至网联。【信息流】步骤 3 网联将支付扣款请求转发到发卡行。【资金流】步骤 4 发卡行从用户银行卡扣款,用户银行卡金额减少,返回支付成功给网联。...从上图看,步骤 1 到步骤 6 体现了付款方付一笔钱的流程,表示了三方支付一笔收单业务的信息流和资金流,其中步骤 4 中付款方的银行卡余额会被实时扣减,发卡行侧记应付未付。...重试最大努力通知是支付领域常见的流程容错手段,分布式环境下,网络抖动、服务暂时不可用等都会造成业务流程处理异常,常见的策略为将请求放入 MQ 进行异步重试,重试间隔逐次拉长,重试如果成功,则回调交易,如果失败或者处理中...如果在下单阶段仅锁定库存、营销等资源,需要在支付回调流程真正扣减资源的话,这里需要对超时等场景进行重试(调用下游需要做好幂等),如资源扣减失败则关单退款重试指定次数如业务单据仍未到达终态,则将订单信息持久到数据库中...常见有以下四种方式:一般正确性校验:例如某些支付业务只能用于特定的商品类型,则可以通过自定义SQL校验规则来进行校验。总分校验:各个子金额汇总应当等于总金额。

    81122

    springboot第52集:微服务分布式架构,统一验证,oauth,订单,地区管理周刊

    它们用于存放在 Eden 区中经过一次垃圾收集后仍然存活的对象。 老年代(Old Generation): 如果对象在年轻代经历了一定次数的垃圾收集仍然存活,它将被晋升到老年代。...type="selection" 用于显示表格的选择列,允许用户选择表格中的行。...:reserve-selection: 该属性接受一个布尔值,表示是否保留用户之前所选的内容。如果设置为 true,则在切换分页时保留之前所选的项。在你的代码中,这个属性被设置为 true。...这两个属性的使用可以帮助你在表格中实现选择行的功能。在用户选择行时,可以通过监听 selection-change 事件,获取用户选择的数据,并进行相关的处理。...比如,如果支付方式是微信支付,就是财付通的交易单号。 订单项 OrderItem 每个订单都会有多个商品,每个商品就是一个订单项。

    26910

    SAP FI-应付业务处理方案

    应付业务处理中中可能涉及的凭证类型有: 允许的账户类型 说明 号码段 AKMS 供应商凭证 17 AKMS 供应商贷项凭单 17 AKMS 供应商发票 19 KS 供应商支付 15 AKMS 发票 -...说明: 系统清帐时,根据采购部门提交的付款明细按单清帐(付款明细中要列明采购订单号及发票凭证号) 清帐方法有剩余清帐法和部分清帐法,当一笔应付未清款项完全支付时,两者没有差别,当一笔应付未清款项仅支付部分时...,两种方法产生的结果不同,差异在于: 剩余清帐法下,尚未支付的部分讲作为新的未清项出现,而原应付行被核销,新的未清项将继承原应付行的付款条件及付款基准日期,需要注意的是,如果不针对每行进行清帐,新的未清项无法准确继承付款条件及基准日...; 部分清帐法下,支付的部分将作为一条新的贷项未清项出现,于原应付行一起作为供应商未清项,两者相加为尚未支付的款项,新未清项继承原付款条件及付款基准日。...说明: 费用凭证的录入,对于成本流的责任对象主要有: 1、 成本中心-当费用仅需要归集到具体部门时,则在成本中心中输入相应的部门编号; 2、 员工内部订单-需要进行费用控制管理的员工,创建相应的员工内部订单

    1.9K22

    数仓中指标-标签,维度-度量,自然键-代理键等常见的概念术语解析

    在数仓建设中,我们说这是用户粒度的事实表,那么表中每行数据都是一个用户,无重复用户;例如还有销售粒度的表,那么表中每行都是一条销售记录。...,微信支付的订单退款率,支付宝支付的订单退款率 。...比如订单表中的订单量、订单总金额都算原子指标; 业务方更关心的指标,是有实际业务含义,可以直接取数据的指标。比如店铺近1天订单支付金额就是一个派生指标,会被直接在产品上展示给商家看。...店铺近1天订单支付金额中店铺是维度,近1天是一个时间类型的修饰词,支付金额是一个原子指标; 维度:观察各项指标的角度; 修饰词:维度的一个或某些值,比如维度性别下,男和女就是2种修饰词。...代理键有许多其他的称呼:无意义键、整数键、非自然键、人工键、合成键等。 代理键就是简单的以按照顺序序列生产的整数表示。产品行的第1行代理键为1,则下一行的代理键为2,如此进行。

    2.3K22

    10.Linux文件管理命令---uniq忽略文件中的重复行

    uniq忽略文件中的重复行作用:文件经过处理后,在它的输出文件中可能会出现重复的行。例如,使用 cat 命令将两个文件合并后,再使用 sort 命令进行排序,就可能出现重复行。...这时可以使用 uniq 命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。用法:uniq 选项...[输入输出] 主要选项如下。长选项必须使用的参数对于短选项也是必须使用的。...(2)显示文件 happy 中不重复的行,从第二个字段的第二个字符开始进行比较。#uniq -u -1 +1 happy(3)用-c 选项从 uniq 中获取一些统计信息。...(4)删除文件中重复的行并输出到一个新文件。#sort happy|uniq-uniqhappy(5)高级应用。就算 uniq 对完整的行进行比较,它仍然会很有用,但是那并非该命令的全部功能。...注意:请不要使用 uniq 或任何其他工具从包含财务或其他重要数据的文件中除去重复行。在这种情况下,重复行几乎总是表示同一金额的另一个交易,将它除去会给会计部造成许多困难。

    70210

    数仓基础(三):维度建模理论之事实表

    1、事实表特点事实表通常比较“细长”,即列较少,但行较多,且行的增速快。...即精确定义每张事务型事实表的每行数据表示什么,应该尽可能选择最细粒度,以此来应各种细节程度的需求。典型的粒度声明如下:订单事实表中一行数据表示的是一个订单中的一个商品项。...四、累积型快照事实表1、概述累计快照事实表是基于一个业务流程中的多个关键业务过程联合处理而构建的事实表,如交易流程中的下单、支付、发货、确认收货业务过程。...订单id用户id下单日期支付日期发货日期确认收货日期订单金额支付金额100112342024-08-082024-08-092024-08-162024-08-1718931893累积型快照事实表主要用于分析业务过程...1)选择业务过程选择一个业务流程中需要关联分析的多个关键业务过程,多个业务过程对应一张累积型快照事实表。2)声明粒度精确定义每行数据表示的是什么,尽量选择最小粒度。

    81011

    JavaScript笔记(3)

    01 循环 目的: 在实际问题中,有许多具有规律性的重复操作,因此在程序中要完成这类操作就需要重复执行某些语句....在JS中,主要有三种类型的循环语句: for循环 while循环 do...while循环 在程序中,一组被重复执行的语句被称为循环体,能否继续重复执行,取决于循环的终止条件.由循环体及循环的终止条件组成的语句...('你好'); } 02 断点调试 断点调试是指自己在程序的某一行设置一个断点,调试时,程序运行在这一行就会停住,然后你可以一步一步往下调试,调试过程中中可以看各个变量当前的值,出错的话...F11:程序单步执行,让程序一行一行的执行,这个时候,观察watch中变量的值的变化....(不过我发现JS如果写出了无限循环的bug就会完全卡住...啥也看不到,F12都点不开) 03 双重for循环 很多情况下,单层for循环并不能满足我们的需求,比如我们要打印一个5行5列的图形,打印一个倒直角三角形等

    52320

    幂等方案的设计问题

    在上述案例中,孔乙己的预期是:自己同一笔交易,即在同一家酒行购买的同一碗酒,孔乙己只能付款成功一次。孔乙己是个健忘的人,在他尝试重新付款的时候,酒店的店员应当提醒孔乙己,你已经付过款了。...现在拿支付业务举例,由于支付要素中的金额、时间、商品都无法唯一的标识出一笔交易,所以在支付场景里一般要求请求方请求支付的时候必传唯一单号对交易进行标记,以保证交易过程中的幂等性。...而在非支付场景,如果其交互要素中的信息已经能够唯一标识出一次交互,那就不一定要传唯一单号对交互进行标识。...上图示例中的DB是收单系统内部的库表,某个字段或者某些字段的组合是唯一索引,用于保证幂等。...但是原资源乐观锁的方法无法解决ABA问题。假设1号线程中存在bug流程(重复扣款),金额被误修改后无法被感知。

    23311

    184个支付名词

    归集:公司将众多的账户里的资金全部转到一个账户进行统一管理。  4)支付类型(按通道类型) 支付按通道可以分为如下类型:快捷支付:直接绑定银行卡进行支付,后续再次支付无需重复绑卡。...7)支付产品 支付产品是支付机构按照行业特点或者商户特点所推出的支付服务产品,满足特定的支付场景;常见的支付产品如下:快捷支付:首次绑卡以后,后续不再需要重复绑卡就能支付的银行卡支付产品。...24)支付状态 支付过程中支付单的状态,用以管理支付的进程,常见的支付状态设置包括待支付、支付成功、支付失败、支付异常等。 1.3清结算类名词25)清算 对交易数据的收集和整理及清分的过程。...另外我们可以总结下二者的异同,在一笔跨境支付交易过程中,如果某银行C同时与收款行A和付款行B都建立了代理关系,那么C就可以作为支付转账的中间行。...也就是说如果两家银行通过一家中间行完成交易,则中间行必定和两家银行都有代理关系。如果没有这样的中间行,则收款和付款银行需要分别找自己的代理行,交易中可能就存在两家中间行的角色存在。

    27600

    基于 TiDB + Flink 实现的滑动窗口实时累计指标算法

    如果是在统计周期内用户有新增数据,则在缓存值基础上累加,如果在统计周期内有用户的数据过期了,则在缓存值的基础上减去。总之,总是维护好用户的实时累计值。...如果是在统计周期内用户有新增数据,则在基量值上累加,如果在统计周期内有用户的数据过期了,则在基量值上减去,一直基于实时的变化量来维护最新的累计值。...这种处理技术常用于实时数据分析和流媒体处理中。它可以帮助我们对数据流中的信息进行实时监听并分析,能够快速响应数据流的变化。...上游业务可以保证相同用户在同一时刻不会出现支付多笔的情况,为了防止极端情况的出现,Flink 使用串行 Sink 的方式写入基础数据,经过对几十亿行历史日志数据的重放入库验证,每一行数据都有严格的递增入库时间...如果 CT 小于等于 low_water_mark 说明已经执行过减操作,不需要重复操作。

    1.1K31

    Python数据分析实战基础 | 清洗常用4板斧

    要把重复数据删掉,一行代码就搞定: drop_duplicates方法去重默认会删掉完全重复的行(每个值都一样的行),如果我们要删除指定列重复的数据,可以通过指定subset参数来实现,假如我们有个奇葩想法...,要基于“流量级别”这列进行去重,则可以: 我们会发现,流量有三个级别,通过指定subset参数,我们删除了这个字段重复的行,保留了各自不重复的第一行。...继续展开讲,在源数据中,流量渠道为“一级”的有7行数据,每行数据其他字段都不相同,这里我们删除了后6行,只保留了第一行,但如果我们想在去重的过程中删除前面6行,保留最后一行数据怎么操作?...4.1分组 在案例数据中,总的流量级别有三级,每一级下又有多个投放地区,如果我们想汇总看每个级别流量所对应的总访客数和支付金额,就需要用到分组了。...此处我们只想要各级别流量下的访客数和支付金额,需要指明参数: 流量级别作为汇总的依据列,默认转化为索引列,如果我们不希望它变成索引,向groupby内传入参数as_index = False即可:

    2.4K21

    SRC逻辑漏洞挖掘详解以及思路和技巧

    常见的逻辑漏洞有交易支付、密码修改、密码找回、越权修改、越权查询、突破限制等,下图是简单的逻辑漏洞总结,在挖掘的过程中更多的时候需要脑洞大开: ?...替换订单ID,创建订单时在支付界面,在此创建订单替换订单ID(高价替换低价) 无限新用户优惠订单,重复创建优惠订单 替换优惠卷ID(未达到条件使用) 个别情况订单数量为1.99时,客户端只支付1元,实际上服务器认为支付了...替换订单,创建订单号如果订单状态可修改,先进到支付界面,然后将订单修改成更大的金额,然后支付提前进入的支付界面 数量修改 0X06:社交 强行举报(读取本地消息上传那种) 强行加好友(一般尝试重发通过好友这条协议...业务逻辑漏洞需要对业务熟悉,有很强的逻辑思维能力,所以下面主要描述一下ZZCMS8.1中注册、登录和密码找回出现的漏洞逻辑,再尽量多和全的收集整理相关场景。..."不存在"; if判断的作用是“判断函数名是否存在”,代码的逻辑是“如果函数名不存在,则在PHP页面输出函数名”,这一做法会造成反射型XSS漏洞。

    6.2K11

    Pandas tricks 之 transform的用法

    如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例。...由于有三个order,因此最终会产生三条记录表示三个总金额。 ? 2.数据关联合并 ? 为了使每行都出现相应order的总金额,需要使用“左关联”。...我们使用源数据在左,聚合后的总金额数据在右(反过来也可)。不指定连接key,则会自动查找相应的关联字段。由于是多行对一行的关联,关联上的就会将总金额重复显示多次,刚好符合我们后面计算的需要。...1.单独使用 此时,在某些情况下可以实现和apply函数类似的结果。 ? ?...如果不采用groupby,直接调用,也会有问题,参见下面的第二种调用方式。 ? 第三种调用调用方式修改了函数,transform依然不能执行。

    2.4K30

    中国现代化支付系统CNAPS介绍

    大小额系统之间有蛮多的区别: 首先,大小额的开放时间不同 大额系统是工作日的 8:30 ~ 17:00,所以在节假日经常会收到银行通知说某些业务暂停了经常就是因为央行在节假日对大额系统做维护。...业务处理上不同 大额是每笔交易都实时发送,实时清算的,所以基本上能实时到账,跨行资金零在途。 小额系统是在收集若干笔交易后打一个包统一处理,定时清算。...金额不同 大额系统没有金额限制,小额系统支持的单笔金额上限是5万元。 从用途上讲,大额系统侧重于资金转移的时效性,主要用于资本市场、货币市场交易和大额贸易资金结算。...所以如果你在晚上10点想跨行转账10万元,建议你分成两个5万并且用加急方式来转账。 4.2 POS机刷卡 POS机刷卡的参与方比较多。...,将报文给你的发卡行(工行)(信息流) 工行从你的卡中实时扣费,完成实时结算,并回复报文给银联(资金流) 银联更新交易数据,回复报文给建行ATM(信息流) 银联在其清算系统完成清分(信息流) 银联通过大额支付系统

    8.2K11

    2.8 PowerBI数据建模-理解上下文(计值环境)

    可以理解,度量值的运算是先按照某些指定条件去筛选模型抽取数据,在此基础上进行运算返回结果,这些指定条件就是筛选上下文。...新建列金额可以输入:金额 = [数量]*[价格]计算列是可见的物理表便于理解,在度量值中,具备迭代功能的函数同样需要行上下文,比如SUMX、MINX、RANKX、ADDCOLUMNS、FILTER等函数...,它们的本质是在其运算过程中,对一个不可见的过程表逐行运算(包括判断)生成每行的结果,再进行迭代聚合运算(FILTER比较特别,它只按条件判断筛选返回一个表,不执行聚合),所以它们的参数表达式也可以直接引用列...如果没有行上下文的设置,仅靠度量值的筛选上下文,是没办法在表内进行每行运算的。比如把度量值写成金额 = '订单表' [数量]* '订单表' [价格]),就会报错。...因为度量值是在列上做聚合运算,不存在当前行的概念,没有行上下文,所以度量值的表达式不能直接引用列,必须在列的外面套上聚合函数才行。如果度量值直接引用列,会有提示报错信息。

    38200

    coder,你会设计交易系统吗(概念篇)?

    总结下,将支付单独抽离成服务后,带来好处如下: 避免重复开发,数据隔离的现象出现; 支付系统周边功能演进更容易,整个系统更完善丰满。...,上面8个接口是肯定需要提供的(这里忽略某些支付中的转账、绑卡等接口)。...{ "errno":0, "msg":"ok", "data":{ } } 我们把所有的变化封装在 data 结构中。举个例子,如果返回的一个url。...这个逻辑非常简单,但是有几点需要大家注意: 我方的数据需要正常支付数据+重复支付数据的总和; 对账检查不成功主要包括:金额不对、第三方没有找到对应的交易数据、我方不存在对应的交易数据。...结算系统是 强依赖 对账系统的。如果对账发现异常,那么结算金额肯定会出现异常。

    79920

    APP支付模块设计分析

    用户​角度​ 1)用户想要查看产品中某些指定内容或想要使用产品中某些特色功能,但这些内容功能只有收费才能获得使用权限,此时用户会产生一定的支付需求。...(某些产品在企业的战略定位上为获得流量、打造爆款或者打造品牌等,这类产品中的交易属性不是衡量其是否成功的关键要素,所以这类产品的支付模块可暂时省略) 2)产品发展到一定阶段,大量可变现的点出现,可尝试进行变现...其实大多数产品是完全不需要充值流程的,因为现在用户进行消费时可以走第三方支付直接支付掉,不需要先往产品中充值。 但是由于某些产品的商品属性、运营、商业等要求,会使得产品增加充值流程。...从产品进程角度来看,如果需要充值+支付,则在功能流程上就要增加钱包、充值入口、提现等多个功能流程,会在一定程度上增加产品的开发成本和时长;而如果只需要支付,则只需在产品内跑通第三方支付流程即可,相对来说更加简单和快速...如果你的产品处在从0到1的阶段,且时间、开发资源等都很有限的情况下,优先选择微信支付。

    35410
    领券