使用队列分析来确定客户终身消费

队列分析使您能够轻松地比较不同群体或人群(即客户)随时间的行为。它使您能够了解不同组的生命周期模式,以便您可以深入了解客户保留趋势和业务流程随时间的健康状况等内容。

例如,你可以将去年获得的客户与几年前获得的客户进行比较,或者将假日季节加入的用户与夏季加入的用户进行比较,看看这些假日购物者是否会留下来。

什么是队列?

在进入队列分析的细节之前,让我们花点时间来定义“队列”这个术语。队列是指在特定时期内具有共同特征的一群人。例如,2011年毕业的一群大学学生是一个队列。这组学生都是同一年毕业的,这是他们的共同点。

队列分析是关注特定队列活动的研究。如果你计算这些学生毕业后五年内的平均收入,你将进行队列分析。它可以让你识别一个群体的特征和这个群体的行为之间的关系。

图1:你可以看到这个毕业班的平均收入逐年增长的趋势

以应届毕业生为例,你可以考察另一个应届毕业生,比如2012届毕业生,并将他们的五年平均收入与2011届毕业生的五年平均收入进行比较。将毕业后五年的平均收入与2012届学生在相同相对时间内的收入进行比较,你会得到这两组学生之间独特的同类比较。在这种情况下,学生的毕业年份和他们的收入之间似乎存在某种关系。

图2:在这里,我们可以看到两个毕业班的平均收入每年都在增加。然而,到了第三年,2012届毕业生的平均收入高于2011届毕业生(差距越来越大)。

这只是队列分析的众多用例之一。通过分析数据中的不同群组,您还可以:

  • 检查现金流从何而来,了解企业的健康状况
  • 很容易看出月度或季度收益有多少是由新老用户带来的
  • 研究客户保留模式,看看他们是变好了还是变坏了(例如,由于客户服务的改变)。
  • 比较来自不同细分市场的用户群,找出最有价值和最没有价值的细分市场

在这篇博客中,我们将关注这样一个用例,并讨论如何在Dundas BI中实现它。

使用Dundas BI进行队列分析

假设你想更好地集中营销活动。要做到这一点,您需要分析哪些客户为您提供了最多的回头客业务,以及他们在一年(一个月)的时间成为客户的时间。分析它的一种方法是用逐期分析能力.然而,这只能给出与前一年相比的全年总收入。如果你想知道哪些特定的客户群体贡献了收益,你就需要将他们分组。

根据你的客户第一次从你这里购买的月份,你可以形成一个群组。

要执行队列分析,典型的数据集应该包括每个客户购买的一条记录。每条记录包含客户的ID、购买的日期和时间、购买的金额以及客户的“队列日期”(在本例中是客户第一次购买的日期(月))。

图3:执行队列分析的典型数据集

这里的棘手部分是获取队列日期,这可以作为数据检索的一部分(即使用复杂的SQL查询)来完成,也可以使用内置的数据准备层(“数据立方体”)在Dundas BI中计算队列日期,如下面的步骤所示。

准备数据

对于本例,我们将使用一个样本数据集来跟踪每个客户的零售交易,并根据他们的第一次购买日期对客户进行细分,以跟踪每个队列的累计支出。

图4:零售事务数据集

第一步:计算队列日期

为了计算队列日期,我们需要确定每个客户的首次购买日期。最简单的方法是获取最小交易日期并按客户分组(然后可以将交易日期重命名为队列日期)。然后,我们将使用customerid将该数据集与相同的事务表连接起来。为此,在数据多维数据集画布上删除事务表两次,并配置其中一个SQL Select节点,通过编辑下面所示的两个列,对事务日期和按customerid分组应用MIN函数。

图5:配置SQL节点来计算队列日期

图6:选择customerid和transactiondate列

图7:将MIN函数应用于transactiondate列

图8:按customerid列分组

接下来,使用join转换连接customerid列中的两个SQL节点。

图9:添加Join转换以连接两个SQL节点

图10:连接在customerid列上

结果看起来像这样:

图11:连接的结果

步骤2:创建队列标识符

现在我们已经计算了队列日期,我们可以根据客户首次购买的月份将他们划分为队列。为此,我们首先需要将每个队列日期值转换为代表该队列的有意义的名称—在本例中,是他们第一次购买的年份和月份。为了获得这些队列名称,我们将使用一个computed Element转换从队列日期列中提取年和月,并将它们合并到一个列中,如下所示。

图12:添加一个计算元素转换来获得队列和队列周期

配置计算元素转换并添加一个名为“Cohort”的字符串数据类型的计算列,并使用下面的脚本返回队列。

图13:添加一个列来计算队列

$.Month.ToString();

$.Year.ToString();

字符串MonthName;

If (month == "1")

MonthName = "Jan";

否则if(month == "2")

MonthName = "二月";

否则if(month == "3")

MonthName = "Mar";

否则if(month == "4")

MonthName = "四月";

否则if(month == "5")

月名=“五月”;

否则if(month == "6")

MonthName = "Jun";

否则if(month == "7")

MonthName = "七月";

否则if(month == "8")

MonthName = "Aug";

否则if(month == "9")

MonthName = "Sep";

否则if(month == "10")

MonthName = "Oct";

否则if(month == "11")

MonthName = "十一月";

否则if(month == "12")

MonthName = "Dec";

返回字符串。Concat(MonthName, " ", year);

这一列将是“队列”,我们将使用它来分割数据。

图14:队列计算结果

步骤3:计算生命周期阶段

一旦确定了群体,下一步是确定“生命周期阶段”,该阶段显示客户在第一次购买日期之后的每个事件(在本例中是每个事务)发生的时间。

例如,如果客户在2016年1月10日进行了第一次购买,在2016年3月15日进行了第二次购买,那么他们就属于“2016年1月”群组。他们的第一次购买将发生在“第1个月”的生命周期阶段(当然总是这样),他们的第二次购买将发生在“第3个月”的生命周期阶段,因为它发生在他们成为客户后的第3个月。

要计算特定事务的生命周期阶段,我们需要确定客户第一次购买和所讨论的购买之间的时间量。这可以使用与计算队列相同的计算元素转换来完成。添加另一个名为“队列周期”的字符串数据类型的计算列,并使用以下脚本以月为单位计算队列日期和交易日期之间的差异:

图15:添加一个列来计算队列周期

Int period = (($datetime$);月-$CohortDate$.Month) + 12 * ($datetime$. Month)年份- $CohortDate$.Year)))+1;

返回字符串。Concat(“月”,period.ToString ());

重命名列以使名称更友好,最终结果如下所示:

图16:队列期计算结果

可视化数据以供分析

一旦数据准备好了,就可以用可视化的形式对其进行分析。创建一个度量集,并从创建的数据多维数据集中,将交易金额添加为度量,将队列期间添加为行,将队列添加为列(系列)。

图17:度量集上的数据分析面板

要得到累积总数,请加上aCMLTOTAL公式在交易金额列上。

图18:计算累计总数

图19:在Data Analysis Panel上作为度量添加了Cumulative Total列

将其重新可视化为折线图或曲线图以查看趋势(您可以在图表属性中隐藏交易金额系列,只关注累积总额)。

图20:每个群组在6个月内的累计支出

结论

创建的图表是一个队列分析,将每个队列的支出视为一段时间内的累积值。这让你能够观察到每一群用户在整个生命周期中的消费增长情况。

例如,根据这一趋势,你可以推断出在2016年4月首次购买的客户在接下来的6个月里的消费往往要少得多,而在2016年3月首次购买的客户在接下来的6个月里的消费往往最多。更具体地说,您可以确定在年初(1月至3月)进行的营销活动(如活动和促销活动)有助于增加重复业务活动。你还可以发现,4月份发生了一些变化,导致这些客户返回更多业务的可能性大幅下降。如果你是一名市场营销人员,那么你就可以从这些数据中了解到用户的购买行为,并根据用户群体的表现来规划有针对性的活动和用户体验。

以上就是队列分析的一个例子。你也可以通过在数据集中包含额外的属性来进一步细分,比如客户的推荐来源、他们购买的第一件产品、地理和人口统计信息等。数据也可以通过队列的大小进行标准化。要做到这一点,一个队列的每个数据点必须除以该队列中的成员数量。这样,您就可以并排查看每个队列成员的平均值,而不会受到队列规模的影响。

从这个博客中收集到的重要信息是,队列分析可以让你有效地比较不同群体随时间的行为趋势。它允许您提出非常具体的问题(例如我们上面所做的,以及与保留趋势和业务流程健康相关的其他问题,等等),只分析与该问题相关的数据,并根据您发现的见解采取行动。更重要的是,这种高级分析功能可以在Dundas BI中轻松执行。

今天就试试Dundas BI,你会发现队列分析和其他强大的高级分析是多么容易和富有洞察力。

下面是一些我们认为你会感兴趣的博客:

打印