我喜欢制作保存在嵌套 BigQuery 表中的一些数据的直方图。以简化的方式,可以通过以下方式创建表:
CREATE TEMP TABLE Sessions (
id int,
hits
ARRAY<
STRUCT<
pagename STRING>>
);
INSERT INTO Sessions (id, hits)
VALUES
( 1,[STRUCT('A'),STRUCT('A'),STRUCT('A')]),
( 2,[STRUCT('A')]),
( 3,[STRUCT('A'),STRUCT('A')]),
( 4,[STRUCT('A'),STRUCT('A')]),
( 5,[]),
( 6,[STRUCT('A')]),
( 7,[]),
( 8,[STRUCT('A')]),
( 9,[STRUCT('A')]),
(10,[STRUCT('A'),STRUCT('A')]);
看起来像
id | hits.pagename |
---|---|
1 | A |
A | |
A | |
2 | A |
3 | A |
A |
其他 ID 依此类推。我的目标是获得一个直方图,显示数据工作室中每个 id 的 A 出现次数分布。 MWE 的报告可以在这里看到:link
到目前为止,我创建了一个名为 pageviews 的计算字段,它通过
SUM(IF(hits.pagename="A",1,0))
评估每个会话的所需次数。查看显示 id 和 pageviews 的表格,我得到了预期的结果:
但是,计算字段的输出是一个metric,这可能会给后面带来麻烦。在下一步中,我想按照这篇文章中介绍的程序进行操作。因此,我创建了另一个字段 bin 以根据主页浏览量将我的会话分配到垃圾箱:
CASE
WHEN pageviews = 0 OR pageviews = 1 THEN "bin 1"
WHEN pageviews = 2 OR pageviews = 3 THEN "bin 2"
END
According to this bin-defintion I hope to obtain a histogram having 6 counts in bin 1 and 4 counts in bin 2.好吧,在这个特定的例子中,它实际上在bin 1中有4个计数,因为ids 5和7有“null”条目,但没关系。这不会发生在我的真实世界表中。
正如您在下一张图片中看到的那样,显示与上面相同的表格,但现在有一个 bin 列,此分配也有效 - 每个 id 都分配了正确的 bin,但现在输出字段是文本类型的度量。因此,条形图不允许我使用它(它需要它作为维度)。
我在某处阅读了创建自连接混合的解决方法,它将度量作为维度输出。这仅适用于名称:我的字段现在是一个维度,我可以将其用于条形图,但条形图不会加载并显示数据源的配置错误,可以在这张图片中看到:
在 Looker Studio 中使用此自定义查询作为我的数据源:
SELECT *
FROM
(
SELECT 1 AS id, ['A','A','A'] AS hits
UNION ALL
SELECT 2 AS id, ['A'] AS hits
UNION ALL
SELECT 3 AS id, ['A','A'] AS hits
UNION ALL
SELECT 4 AS id, ['A','A'] AS hits
UNION ALL
SELECT 5 AS id, [] AS hits
UNION ALL
SELECT 6 AS id, ['A'] AS hits
UNION ALL
SELECT 7 AS id, [] AS hits
UNION ALL
SELECT 8 AS id, ['A'] AS hits
UNION ALL
SELECT 9 AS id, ['A'] AS hits
UNION ALL
SELECT 10 AS id, ['A','A'] AS hits
)
从该数据源创建一个简单的数据混合,将 id 作为维度和页面浏览量度,使用与您使用的相同的公式。 (我认为在你发布这个问题的时候,像这样的简单混合是不可能的。我相信他们过去至少需要 2 个来源,这可能就是你提到自连接的原因)
pageviews
指标的公式:
SUM(IF(hits='A',1,0))
数据混合的输出如下所示:
| id | pageviews |
| -- | --------- |
| 1 | 3 |
| 2 | 1 |
| 3 | 2 |
| 4 | 2 |
| 5 | 0 |
| 6 | 1 |
| 7 | 0 |
| 8 | 1 |
| 9 | 1 |
| 10 | 2 |
现在,您可以使用此混合作为数据源将条形图添加到您的报告中。维度应该是具有以下公式(或它的某些变体)的计算字段:
CASE
WHEN pageviews <= 1 THEN 'Bin 1'
WHEN pageviews <= 3 THEN 'Bin 2'
END
对于 Metric,选择
id
并使用 Count Distinct 聚合。
最终的条形图如下所示: