繁体   English   中英

Google Data Studio 如何计算不同值的总和

[英]Google Data Studio how to calculate sum of only distinct values

我有包含工作时间和与这些工作时间相关的发票的数据集。 某些工作时间尚未与任何发票相关。 多个工作时间可能与一张发票相关。 数据示例:

日期 项目 小时 小时价格 发票 发票总额 发票时间 开发票别人
2021-05-06 项目一 7.5 500 invoice_id_1 1500 1200 300
2021-05-07 项目一 7.5 500 invoice_id_1 1500 1200 300
2021-05-08 项目一 7.5 600 invoice_id_2 600 600 0
2021-05-09 项目一 2个 100 invoice_id_1 1500 1200 300
2021-05-10 项目一 7.5 550 null null null null

我想创建 3 个记分卡,显示发票总金额、发票小时总金额和其他发票总金额。

但是,如果我只有 SUM(invoice_hours),在这种情况下总和将是 4200,但我希望它是 1800,因为三个条目在同一张发票中。 我可以改用小时价格来解决这个问题,但这对其他发票没有帮助。

所以我的问题是:是否可以计算一个字段的总和,计算另一个字段不唯一的行一次? 所以在这种情况下,只计算第一行和第三行(忽略第 2 行和第 4 行,因为 invoice_id_1 已经被计算在内)。

对于它的价值,我正在使用我创建的社区连接器,它从 API 获取数据,因此我可以在必要时修改数据格式/添加字段。

有必要删除重复项。 这无法在 Data Studio 中完成。 对于 BigQuery 来说,这将是一项简单的任务(从...中选择不同的 Invoice、Invoice_total)。

也许您也可以在社区连接器中执行此操作?

如果目前无法进一步过滤数据(即:无法混合已经混合的数据)并且几乎没有不同的发票ID,那么可能会有一个解决方法,尽管很乏味:

sum_invoiceHours

SUM( IF( invoice = "invoice_id_1", invoice_hours , null ) )
    / COUNT( IF( invoice = "invoice_id_1", invoice , null ) )
+ SUM( IF( invoice = "invoice_id_2", invoice_hours , null ) )
    / COUNT( IF( invoice = "invoice_id_2", invoice , null ) )

其解决为:

在此处输入图像描述

现在,为了防止异常行为,我建议在每个商中加入 IFNULL() :

IFNULL( SUM( IF( invoice = "invoice_id_1", invoice_hours , null ) )
    / COUNT( IF( invoice = "invoice_id_1", invoice , null ) ) ,0) 
+ IFNULL( SUM( IF( invoice = "invoice_id_2", invoice_hours, null ) ) 
    / COUNT( IF( invoice = "invoice_id_2", invoice , null ) ) ,0)
+ IFNULL( SUM( IF( invoice = "invoice_id_3", invoice_hours , null ) ) 
    / COUNT( IF( invoice = "invoice_id_3", invoice , null ) ) ,0)

...它不理想(也不漂亮),但它现在可以完成工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM