google-bigquery - 使用 BigQuery 和 Data Studio 计算和显示客户生命周期价值直方图
问题描述
考虑 Google BigQuery 中的一个表,其中包含客户的购买记录。为了简单起见,让我们关注以下属性:
customer_id, product_id, amount
我想根据上述数据集创建一个 Google Data Studio 报告,显示客户生命周期价值直方图。客户生命周期价值是amount
任何给定客户的总和。直方图将显示有多少客户按其总数落入某个存储桶中——我将定义诸如 0-10、10-20、20-30 等值范围之类的存储桶。
最后,我还想按product_id 过滤直方图。当过滤器处于活动状态时,直方图将显示至少一次购买给定产品的客户的总数。
截至目前,我认为这在 Datastudio 中是不可能实现的,但我希望我错了。
到目前为止我尝试过的事情:
通过 Datastudio 中的计算字段显示整个数据集的平均客户生命周期价值很容易
SUM(amount) / COUNT(customer_id)
对于创建直方图,我在 Data Studio 中看不到任何方法(基于上述数据集)。我想我需要创建一个原始表的视图,其中包含每个客户的单行和总金额。可以在 Big Query 或 Data Studio 中使用
CASE ... WHEN
.
然而,对于最后一步,即创建一个产品过滤器,为购买给定产品的客户过滤直方图,我不知道如何处理这个问题。
有什么想法吗?
解决方案
我能够进行与您描述的类似的复制,但这并不简单,因此我将尝试详细说明所有内容。主要思想是从同一个表中获得两个数据源:一个包含customer_id
并且product_id
我们可以过滤它,而另一个包含customer_id
和已经计算的amount_bucket
字段。这样我们就可以加入它(混合数据)customer_id
并根据product_id
它进行过滤,不会改变amount_bucket
计算。
我使用以下脚本在 BigQuery 中创建了一些数据:
CREATE OR REPLACE TABLE data_studio.histogram
(
customer_id STRING,
product_id STRING,
amount INT64
);
INSERT INTO data_studio.histogram (customer_id, product_id, amount)
VALUES ('John', 'Game', 60),
('John', 'TV', 800),
('John', 'Console', 300),
('Paul', 'Sofa', 1200),
('George', 'TV', 750),
('Ringo', 'Movie', 20),
('Ringo', 'Console', 250)
;
然后我直接连接到 BigQuery 表并获取以下字段。数据源称为histogram
:
我们BigQuery
使用自定义查询添加第二个数据源 ( ):
SELECT
customer_id,
CASE
WHEN SUM(amount) < 500 THEN '0-500'
WHEN SUM(amount) < 1000 THEN '500-1000'
WHEN SUM(amount) < 1500 THEN '1000-1500'
ELSE '1500+'
END
AS amount_bucket
FROM
data_studio.histogram
GROUP BY
customer_id
只有后者,我们已经可以使用以下配置制作基本直方图:
维度是amount_bucket
,度量是Record count
。我创建了一个bucket_order
自定义字段来对其进行排序,因为字典上的“1000-1500”在“500-1000”之前:
CASE
WHEN amount_bucket = '0-500' THEN 0
WHEN amount_bucket = '500-1000' THEN 1
WHEN amount_bucket = '1000-1500' THEN 2
ELSE 3
END
现在我们product_id
在顶部添加过滤器和一个具有以下配置的新图表:
请注意,metric 是 CTD(Count Distinct),customer_id
数据Blended data
源实现为:
TV
我仅按 so过滤George
并John
出现但其他产品仍计入总金额计算的示例:
我希望这个对你有用。
推荐阅读
- c# - 使用 Active Directory 中的电子邮件地址查找域名
- javascript - 除非您在 HTML(或 XHTML)中单击它,否则如何隐藏一个段落
- mapbox-gl-js - 如何保持 mapbox-gl-draw 功能与透视对齐?
- python - 如何从“bs4.element.Tag”中获取特定项目
- python - 无法选择 Kendo UI + Angular JS 下拉列表 python selenium
- autodesk-forge - 如何创建停靠面板(在较新版本的 Autodesk forge 查看器中)
- excel - 如何获取excel VBA中下拉列表引用的范围名称
- tensorflow - 可以导入 tensorflow_addons
- authentication - 如何检查 /authentication 路由是否被使用?
- java - 如何在android中设置pojo类的值,,,..在下面的代码中如何设置sportMembership和ExtraField Class对象的值