我有一个电子表格,当前包含以下列:
event_date 是日期类型,event_id 是整数,studio_1 和 studio_2 都是 TRUE/FALSE(表格中的复选框)示例架构:
活动日期 | 事件_id | 工作室_1 | 工作室_2 |
---|---|---|---|
2024-03-15 | 1234 | 正确 | 错误 |
2024-03-16 | 5678 | 正确 | 正确 |
我想转置这些值,将 studio_1 和 studio_2 列堆叠在一起,而不是 TRUE,而是调出在名为 studio_booked 的新列中预订的工作室的名称。我想要它的外观:
活动日期 | 事件_id | 工作室_预订 |
---|---|---|
2024-03-15 | 1234 | 工作室1 |
2024-03-16 | 5678 | 工作室1 |
2024-03-16 | 5678 | 工作室2 |
基本上,我想生成一个列,注明预订的工作室有重复的日期和 event_id 列,这样我就可以计算每个工作室每个日期/event_id 的预订总数,同时还能够在单列中过滤空间名称而不需要在每个工作室的列上进行调整,其中 TRUE。
此数据旨在通过 SQL 脚本加载到仪表板中,其中当前数据库架构与上述架构匹配。是否有任何函数/公式的组合可用于在上传之前转换表格中的数据?还希望获得关于编写 SQL 语句来处理 BigQuery 中的转换的指导。
可能有一个更短的解决方案,但这里有一个 GoogleSQL 脚本可以完成这项工作。与
UNION
。您可以连接行(垂直):
SELECT event_date, event_id, 'Studio 1' AS studio_booked
FROM spreadsheet
WHERE studio_1 IS TRUE
UNION ALL
SELECT event_date, event_id, 'Studio 2' AS studio_booked
FROM spreadsheet
WHERE studio_2 IS TRUE