如何在Google Data Studio中制作一个简单的直方图(表示分布)?

24

你知道是否有可能制作一个简单的直方图,表示所有值按区间 (0-5、5-10、10-15、15-20 ...) 划分的频率吗?

示例:

enter image description here


1
年龄是计算指标还是直接从数据源获取的? - Minhaz Kazi
1
年龄在此示例中从源获取,但它也可以是计算指标。这会有真正的区别吗?即使是从数据源获取的简单数据,我也无法做到。感谢您的评论。 - Olivier
7个回答

26

随着时间的推移,这可能变得更加容易,但你不再需要手动定义每个条目。如果你可以编辑数据源,你可以在Data Studio中添加一个计算字段,公式如下:

FLOOR(age/5) * 5

如果将该字段命名为“age_bin”,则所有条目都将具有5的倍数值,带有标签(即age_bin的值),表示桶的最小值。例如:

  • “4天”年龄的条目将在bin 0中,因为FLOOR(4/5)=0
  • “36天”年龄的条目将在bin 35中,因为36/5=7.2,所以FLOOR(7.2)=7,且7 * 5= 35

然后,您可以使用“age_bin”作为维度,使用“Record Count”作为指标制作条形图。


3
除了没有数据的箱子不会出现在图中之外,这种方法效果很好,即x轴不会单调增长。有没有解决这个问题的提示? - jimijazz
刚刚发现一个气泡图可以做到这一点 @jimijazz(我在X轴上使用了平均值,Y轴上使用了计数)。虽然不完美,但它能显示出所有的间隙值。 - undefined

5
一种方法是在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

之后,您可以使用任何变量(例如这里的 年龄 )作为度量,并将新变量作为维度来对数据进行分组并选择计数作为表示形式,从而创建一个柱状图。


这对于一些桶来说是不错的。如果我想显示从1到500范围内大小为10的箱子,那么该怎么做呢?有什么高效的方法吗? - busheriff
谢谢,它在年龄上运行正常,因为在Google Analytics中它是一个维度,那么对于像收入这样的指标是否有解决方法?我一直收到错误消息,提示不能混合使用指标和维度,或者不支持重新聚合指标。 - Marek Čech

3

最简单的方法是将您的数据格式化为“bin”。您可以这样做:

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中选择可用的柱状图之一。

2
刚刚测试了一下,但在Google数据工作室上无法使用。它说我无法在我的字段上应用另一个统计聚合。 - Olivier

2
创建一个名为“bin value”的新字段 使用整数除法计算它,例如 CAST(Age/10 as INTEGER) 将其用作分组依据。

1

你可以创建一个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)"

但是,如果你注意到对于直方图组来说,水平轴的排序存在问题: 在这种情况下,(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;

让我们称之为直方图顺序。在带有条形的图表线上,您选择直方图组作为维度,并在指标中添加直方图顺序以及您的参数,但在样式中将您的参数设置为条形,将直方图顺序设置为宽度为零的线条,删除直方图顺序的轴,您可以创建一个矩形来覆盖直方图顺序的标题。

0

当你在 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

0

对于动态的箱子大小,您可以在SQL:2011(PostgreSQL、bigquery、MariaDB、SQL Server 2016等)中执行以下操作:

首先,您需要声明箱子的大小(以年为单位):

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 ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接