你知道是否可以制作一个简单的直方图来表示我所有值的频率除以范围 (0-5;5-10;10-15;15-20 ...) 吗?
示例:
随着时间的推移,这可能会变得更容易,但您不再需要手动定义每个 bin。如果您可以编辑数据源,则可以使用如下公式在 Data Studio中添加计算字段:
FLOOR(age/5) * 5
如果您将此字段称为“age_bin”,则所有条目的值都是 5 的倍数,标签(的值age_bin
)表示存储桶的最小值。例如:
0
,因为FLOOR(4/5)
=035
,因为36/5
=7.2,所以FLOOR(7.2)
=7,并且7 * 5
= 35然后,您可以制作一个以“age_bin”为维度、以“记录计数”为指标的条形图。
最简单的方法是将数据格式化为“bins”。你可以这样做:
count(CASE WHEN Age > 0 AND Age <= 5 Then 1) AS bin1
count(CASE WHEN Age > 5 AND Age <= 10 Then 1) AS bin2
count(CASE WHEN Age > 10 AND Age <= 15 Then 1) AS bin3
count(CASE WHEN Age > 15 AND Age <= 20 Then 1) AS bin4
这是将数据转换为直方图类型格式的最简单方法,然后选择 GDS 中可用的条形图之一。
一种方法是在 DataStudio 中使用如下公式创建一个新字段:
CASE
WHEN Age > 0 AND Age <= 5 THEN "bin1"
WHEN Age > 5 AND Age <= 10 THEN "bin2"
WHEN Age > 10 AND Age <= 15 THEN "bin3"
WHEN Age > 15 AND Age <= 20 THEN "bin4"
ELSE "bin5"
END
之后,您可以创建一个包含任何变量的条形图,就像Age
在本例中一样,作为度量,新变量作为维度来分组数据并选择计数作为表示
创建一个新字段,将其称为 bin 值,使用整数除法计算它,例如 CAST(Age/10 as INTEGER) 将其用作分组依据
你可以创建一个 switch case 的字段让我们称之为 histogram_group
WHEN Days_Since_First_Touch > 1 AND Days_Since_First_Touch <= 5 THEN "(1_5)"
WHEN Days_Since_First_Touch > 5 AND Days_Since_First_Touch <= 10 THEN (5_10)"
WHEN Days_Since_First_Touch > 10 AND Days_Since_First_Touch <= 20 THEN (10_20)"
但是,如果您发现使用 histogram_group 对水平轴进行排序存在问题:在这种情况下, (10_20) 将在 (5_10) 之前 :( 但我找到了一种很酷的方法来解决它 :) 您创建了另一个假字段,该字段返回价值
WHEN Days_Since_First_Touch > 1 AND Days_Since_First_Touch <= 5 THEN 0.0001;
WHEN Days_Since_First_Touch > 5 AND Days_Since_First_Touch <= 10 THEN 0.0002;
WHEN Days_Since_First_Touch > 10 AND Days_Since_First_Touch <= 20 THEN 0.0003;
让我们称之为 histogram_order 在带有条形的图表线上,您选择 histogram_group 作为维度,在指标上,您在参数旁边添加 histogram_order,但在样式上,将您的参数作为条形,将 histogram_order 作为宽度的线none,去掉 histogram_order 的 ax,就可以创建一个 reactangle 覆盖 histogram_order 头部。
对于动态 bin 大小,您可以在 SQL:2011(PostgreSQL、bigquery、MariaDB、SQL Server 2016 等)中执行此操作:
首先,您声明 bin 大小(以年为单位):
WITH params (binsize) AS (
SELECT 5
),
然后将其用作变量,如下所示:
SELECT
age,
CONCAT(FLOOR(age / (SELECT binsize FROM params)) * (SELECT binsize FROM params), '-', FLOOR(age / (SELECT binsize FROM params)) * (SELECT binsize FROM params) + (SELECT binsize FROM params)) AS age_bin
var1,
var2,
...
FROM ...
当您在 firebase、bigquery 和 data studio 之间链接时,您可以在 data studio 上编写以下查询;
CASE WHEN Days_Since_First_Touch <= 1 THEN "(0_1)"
WHEN Days_Since_First_Touch > 1 AND Days_Since_First_Touch <= 2 THEN "(1_2)"
WHEN Days_Since_First_Touch > 2 AND Days_Since_First_Touch <= 3 THEN "(2_3)"
WHEN Days_Since_First_Touch > 3 AND Days_Since_First_Touch <= 4 THEN "(3_4)"
WHEN Days_Since_First_Touch > 4 AND Days_Since_First_Touch <= 5 THEN "(4_5)"
WHEN Days_Since_First_Touch > 5 AND Days_Since_First_Touch <= 6 THEN "(5_6)"
WHEN Days_Since_First_Touch > 6 AND Days_Since_First_Touch <= 7 THEN "(6_7)"
WHEN Days_Since_First_Touch > 7 AND Days_Since_First_Touch <= 8 THEN "(7_8)"
WHEN Days_Since_First_Touch > 8 AND Days_Since_First_Touch <= 9 THEN "(8_9)"
WHEN Days_Since_First_Touch > 9 AND Days_Since_First_Touch <= 10 THEN "(9_10)"
WHEN Days_Since_First_Touch > 10 AND Days_Since_First_Touch <= 15 THEN "(10_15)"
WHEN Days_Since_First_Touch > 15 AND Days_Since_First_Touch <= 20 THEN "(15_20)"
WHEN Days_Since_First_Touch > 20 AND Days_Since_First_Touch <= 30 THEN " (20_30)"
WHEN Days Since First Touch > 30 THEN "N (30+)"
ELSE NULL END