SAC Planning 高级计算公式-2

计算规则

基于事实表数据集

如果你不做其他的限定,下面的这个公式就是计算A产品的revenue,用Price*Quantity。但是你这里都没管时间。

复制代码
MEMBERSET [d/Product] ="A"
DATA([d/Account] ="Revenue")=RESULTLOOKUP([d/Account]="Price") * RESULTLOOKUP([d/Account]="Quantity")

如果我要计算下面这个公司2018年四季度的所有收入。那用高级公式可以这么弄。

Account Product Entity Date Value
Price Sparkling Water * Oct.2018 500
Price Sparkling Water * Nov.2018 600
Price Sparkling Water * Dec.2018 700
Quantity Sparkling Water Germany Oct.2018 50
Quantity Sparkling Water Germany Nov.2018 70
Quantity Sparkling Water Germany Dec.2018 90
Quantity Sparkling Water France Oct.2018 30
Quantity Sparkling Water France Nov.2018 50
Quantity Sparkling Water France Dec.2018 80
复制代码
MEMBERSET [d/Date]=("201810","201811","201812")

DATA([d/Account] ="Revenue")=RESULTLOOKUP([d/Account] ="Price",[d/Entity]="*") * RESULTLOOKUP([d/Account]="Quantity")

这里面的第一个RESULTLOOKUP去找它的范围了:

Account Product Entity Date Value
Price Sparkling Water * Oct.2018 500
Price Sparkling Water * Nov.2018 600
Price Sparkling Water * Dec.2018 700

第二个RESULTLOOKUP也去找它的范围了:

Account Product Entity Date Value
Quantity Sparkling Water Germany Oct.2018 50
Quantity Sparkling Water Germany Nov.2018 70
Quantity Sparkling Water Germany Dec.2018 90
Quantity Sparkling Water France Oct.2018 30
Quantity Sparkling Water France Nov.2018 50
Quantity Sparkling Water France Dec.2018 80

然后去做乘法,是怎么样的呢?

Account Account Product Entity Date Value (Price) Value (Quantity) Result
Price Quantity Sparkling Water Germany Oct.2018 500 50 25000
Price Quantity Sparkling Water Germany Nov.2018 600 70 42000
Price Quantity Sparkling Water Germany Dec.2018 700 90 63000
Price Quantity Sparkling Water France Oct.2018 500 30 15000
Price Quantity Sparkling Water France Nov.2018 600 50 30000
Price Quantity Sparkling Water France Dec.2018 700 80 56000

在最后的DATA()里返回值就会是这样的计算值。

Account Product Entity Date Value
Revenue Sparkling Water Germany Oct.2018 25000
Revenue Sparkling Water Germany Nov.2018 42000
Revenue Sparkling Water Germany Dec.2018 63000
Revenue Sparkling Water France Oct.2018 15000
Revenue Sparkling Water France Nov.2018 30000
Revenue Sparkling Water France Dec.2018 56000

新建数据

复制代码
MEMBERSET [d/Date]=BASEMEMBER([d/Date]. [h/YQM],"2018")

DATA([d/Audit]="LogicCalc")=RESULTLOOKUP([d/Audit]="Input",[d/Date]=PREVIOUS(12))

当我想新生成数据,比如上面把Audit = Input的从2017年1-12月的数据重新复制到Audit = LogicCalc的所有维度下,复制到2018年。

如果2017年只有半年有数据,那2018年的7-12月份也不会被填充,这时候就要去把CONFIG.GENERATE_UNBOOKED_DATA 设置成ON

符号反转

SAC计划中有四种财务账户类型:AST资产LEQ负债INC收入EXP费用

每一种账户类型都有一个预定义的符号。

不过高级公式默认是用绝对值计算的。

复制代码
DATA([d/Account] ="Revenue")=RESULTLOOKUP([d/Account]="Income") + RESULTLOOKUP([d/Account]="Expense")

比如INCOME是100,EXPENSE是50,结果会显示150.

如果你想用S4里设置好的EXP类型是负号。那你就把CONFIG.FLIPPING_SIGN_ACCORDING_ACCTYPE 设置成ON 。

复制代码
CONFIG.FLIPPING_SIGN_ACCORDING_ACCTYPE=ON

DATA([d/Account] ="Revenue")=RESULTLOOKUP([d/Account]="Income") + RESULTLOOKUP([d/Account]="Expense")

使用维度的属性值限定维度值

在MEMEBERSET里直接限定维度的值。

复制代码
MEMBERSET [d/Entity].[p/Region]="Europe"

这个比较简单,是限定所有属性里有Europe的Entity是哪些。

维度属性值定义计算

这个下面的就比较有意思了。

可以用维度的属性来定义计算范围。

举例,你有一个特定的维度,它带了一个计算属性还有一个上级分组属性。

Entity Calculation SisterMember
Sales Europe Y Sales Total
Sales Asia Y Sales Total
Sales Allowance Y Sales Cost Total
Sales Rebate Y Sales Cost Total
Sales Total
Sales Cost Total

代码是这么写:

复制代码
MEMBERSET [d/Entity].[p/Calculation] ="Y"

DATA() = RESULTLOOKUP([d/Sales] = [d/Sales].[p/SisterMember] )

MEMBERSET的返回值是"Sales Europe", "Sales Asia", "Sales Allowance", "Sales Rebate",先把4个calculation是Y的成员选出来。

下一行是为前面MEMBERSET选中的成员,设置他们的DATA值等于他们各自的sistermember的DATA值。RESULTLOOKUP来找对应的sistermember的结果。所以最后会是"Sales Europe", "Sales Asia"的值被填充成Sales Total的值, "Sales Allowance", "Sales Rebate"的值被填充成Sales Cost Total的值。

最终结果显示为:

相关推荐
市场部需要一个软件开发岗位2 天前
数据仓库相关内容分享
数据库·数据仓库·oracle
Gain_chance2 天前
32-学习笔记尚硅谷数仓搭建-DWD层首日数据装载脚本及每日数据装载脚本
大数据·数据仓库·hive·笔记·学习
Gain_chance2 天前
29-学习笔记尚硅谷数仓搭建-DWD层交易域下单事务事实表和交易域支付成功事务事实表
数据仓库·hive·笔记·学习·datagrip
Zilliz Planet2 天前
<span class=“js_title_inner“>Spark做ETL,与Ray/Daft做特征工程的区别在哪里,如何选型?</span>
大数据·数据仓库·分布式·spark·etl
TTBIGDATA2 天前
【Ranger】Ambari开启Kerberos 后 ,Ranger 中 Hive 策略里,Resource lookup fail 线程池超时优化
大数据·数据仓库·hive·hadoop·ambari·hdp·ranger
沃达德软件3 天前
智慧警务技战法
大数据·数据仓库·hadoop·深度学习·机器学习·数据挖掘
bigdata-rookie4 天前
Starrocks 简介
大数据·数据库·数据仓库
普通网友4 天前
Hive ACID 事务表实战:插入 / 更新 / 删除操作的配置与使用限制
数据仓库·hive·hadoop
独自归家的兔4 天前
windows Hive使用全攻略:从入门到实战,轻松搞定大数据处理 - Hadoop windows安装
数据仓库·hive·hadoop
走过冬季4 天前
02 | Hive SMB Join 原理
数据仓库·hive·hadoop