[英]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.