如何将各列日期信息合并成一个日期列?(目前每列的日期都不同)

问题描述 投票:0回答:1

我有这个COVID数据集,来自 约翰-霍普金斯大学 2我已经将其导入到Tableau中 3. 然而,它显示的每一列日期都是单独的措施。有没有办法把它合并成一列日期?

我试着用SQL将数据集拆分。

  1. 我用pgfutter将JHU网站上的.csv文件导入PostgreSQL中。
  2. 然后在PostgreSQL中显示为 4
  3. 我试着用这段代码解开前两天的数据。
select province_state, country_region, lat, long, date(generate_series('2020-01-22', '2020-01-23', '1 day'::interval)), new_cases
from time_series_covid19_confirmed_global
    cross join lateral (
        values ('2020-01-22',_1_22_20),('2020-01-23',_1_23_20)) as t(date,new_cases) 
group by date, country_region, province_state, lat, long, new_cases
order by date, country_region, province_state;
  1. 这是输出。 不知道为什么每条记录有双行?另外,有没有更简单的方法来代替每一天的交叉连接?

谢谢你!我有这个COVID数据集。

python sql postgresql tableau
1个回答
0
投票

你有这个在你的 select:

date(generate_series('2020-01-22', '2020-01-23', '1 day'::interval))

这就是造成重复的原因。 一般情况下,你只能通过使用 joinfrom 子句,但Postgres允许(一些)表返回函数在子句中。 然而,Postgres允许(一些)表返回函数在 select -- 而这些也是行数的倍数。 我总是把这些函数放在 from 子句来避免此类问题。

相反,你只想 t.dateselect.

我也猜测,你不需要这个 group by:

select province_state, country_region, lat, long, t.date, new_cases
from time_series_covid19_confirmed_global cross join lateral
     (values ('2020-01-22'::date, _1_22_20),('2020-01-23', _1_23_20)
     ) t(date, new_cases) 
order by date, country_region, province_state;

1
投票

你可以在Tableau本身中使用Pivot来实现这一点。我下载了你的数据,并在我的Tableau中进行了尝试。请按照屏幕截图进行操作----

  • 第一步选择所有你想透视的列,如图所示,右击并选择"添加数据到Pivot"Select all the columns you wish to pivot and right click as shown here

  • 第二步枢轴列可以在表的最后找到(通常),你可以很容易地重命名它,就像我在这个截图中做的那样。Pivoted column can be found towards the end of the table (usually) and you can easily rename it as I did in this screenshot

希望对您有所帮助.您也可以用类似的方式对其他列进行格式化。

© www.soinside.com 2019 - 2024. All rights reserved.