为另一列的每个值添加具有固定值的列 Redshift

     2023-03-31     184

关键词:

【中文标题】为另一列的每个值添加具有固定值的列 Redshift【英文标题】:add column with fixed values for each value of another column Redshift 【发布时间】:2020-06-19 09:58:33 【问题描述】:

我有下表

]1

想为每个用户添加日期范围

如何实现:

    如果这可以通过 Redshift 中的查询来实现,那么这很有用

    如果没有,在 python pandas 中创建这个作为数据的有效方法是有 8lk 记录

【问题讨论】:

这是一个笛卡尔积,在 python 和 sql 中都很简单。 【参考方案1】:

鉴于此数据框df

   userid username
0       1        a
1       2        b
2       3        c

你可以使用 numpy repeattile:

dr = pd.date_range('2020-01-01','2020-01-03')
df = pd.DataFrame(np.repeat(df.to_numpy(), len(dr), 0), columns=df.columns).assign(date=np.tile(dr.to_numpy(), len(df)))

结果:

  userid username       date
0      1        a 2020-01-01
1      1        a 2020-01-02
2      1        a 2020-01-03
3      2        b 2020-01-01
4      2        b 2020-01-02
5      2        b 2020-01-03
6      3        c 2020-01-01
7      3        c 2020-01-02
8      3        c 2020-01-03

【讨论】:

尝试使用合并从 dr 创建一个数据框并分配一个虚拟列 pd.merge(df.assign(key='var1'),dr.assign(key='var1'),on='key').drop('key',1) @Datanovice:这也是一个很好的解决方案,但即使对于玩具数据merge,如果比 numpy 解决方案慢 5 倍(OP 要求 高效方式) @Stef numpy 是最好的,执行超过 8lk 记录需要几秒钟。谢谢。Datanovice 您的解决方案也有效,但由于合并而花费了太多时间。谢谢【参考方案2】:

在 Sql 中,这也很简单 - 只需将要添加到每一行的日期列表交叉连接(复制行)。您可以在示例中看到 3 行和 3 个日期导致 9 行。 (未经测试的解释代码:)

select userid, username, "date" from <table> cross join (select values ('2020-01-01'::date), ('2020-02-01'::date), ('2020-03-01'::date));

现在使用简单方法的问题是,如果您正在处理大表和长日期列表,那么乘法会杀死您。 100 亿行乘以 5,000 个日期是 15 万亿行 - 这将需要很长时间,并且存储它会占用大量磁盘空间。对于小表格和简短的日期列表,这很好用。

如果您站在“大”的一边,您可能需要重新考虑您想要做什么。由于您使用的是 Redshift,因此您可能需要这样做。

【讨论】:

为另一列的每个值选择一列的顶部 1

】为另一列的每个值选择一列的顶部1【英文标题】:Selectingthetop1ofonecolumn,foreachvalueofanothercolumn【发布时间】:2021-03-1816:17:16【问题描述】:我们有针对中学生的报告周期。我正在尝试编写一个查询,该查询将创建一个简洁的小... 查看详情

如何计算另一列中特定值的列的平均值?

】如何计算另一列中特定值的列的平均值?【英文标题】:Howtocalculateaverageofvaluesofacolumnforaparticularvalueinanothercolumn?【发布时间】:2020-08-0205:02:31【问题描述】:我有一个看起来像这样的数据框。如何将每个窗口的平均文档/持续... 查看详情

具有固定增量的列的 R 回归

...Rdf中有一个数据框,其中每一行X是一个主题(N=100),每一列S是两年内每个月完成一项任务的每个主题的分数。因此,我有一个由1个月间隔均匀分布的100个受试者和24个观察值的数据框(忽略月/日差异)。问题1:如何为每个主... 查看详情

点击屋。如何创建一个保留另一列的最后一个值的列?

】点击屋。如何创建一个保留另一列的最后一个值的列?【英文标题】:Clickhouse.Howtocreateacolumnwhichpreservesthelastvaluefromanothercolumn?【发布时间】:2021-05-2014:34:07【问题描述】:我试图弄清楚如何在Clickhouse中创建一个名为“我想要... 查看详情

具有 1 个不同的列和来自另一列的总和值 [关闭]

】具有1个不同的列和来自另一列的总和值[关闭]【英文标题】:Having1distinctcolumnandasumvaluefromanothercolumn[closed]【发布时间】:2013-07-3011:35:43【问题描述】:我想解决这个问题:我这里有一个数据表,如下图cidamount15110223537311现在我... 查看详情

对于每个类别,如何找到与另一列的最小值对应的列的值?

】对于每个类别,如何找到与另一列的最小值对应的列的值?【英文标题】:Foreachcategory,howtofindthevalueofacolumncorrespondingtotheminimumofanothercolumn?【发布时间】:2021-02-0523:27:46【问题描述】:我有一张像这样的桌子;它是交叉表的堆... 查看详情

具有另一列的两个值的最大版本

】具有另一列的两个值的最大版本【英文标题】:MaxversionwithbothvaluesofanotherColumn【发布时间】:2016-08-2415:13:53【问题描述】:我想展示一个表格的最后一个版本,其中两个值都显示在另一个表格上。Version|Value12|ORANGE11|ORANGE11|BANAN... 查看详情

熊猫数据框:在固定其他列的列中提取具有特定标准/条件最小值的数据[重复]

】熊猫数据框:在固定其他列的列中提取具有特定标准/条件最小值的数据[重复]【英文标题】:pandasdataframe:extractdatawithspecificcrtieria/conditionsminimuminacolumnfixingothercolumns[duplicate]【发布时间】:2022-01-2220:57:40【问题描述】:首先非... 查看详情

根据另一列的字段值选择具有相同列值的行

】根据另一列的字段值选择具有相同列值的行【英文标题】:Selectrowsthathavethesamecolumnvaluebasedonanothercolumn\'sfieldvalues【发布时间】:2017-08-2515:41:25【问题描述】:在我的表中,我有3列带有SubmissionId,FieldName,FieldValue。我有一个问题... 查看详情

获取 SQL 中另一列的每个值的最常见值

】获取SQL中另一列的每个值的最常见值【英文标题】:GetmostcommonvalueforeachvalueofanothercolumninSQL【发布时间】:2010-09-2513:43:19【问题描述】:我有一张这样的桌子:Column|Type|Modifiers---------+------+-----------country|text|food_id|int|eaten|date|对... 查看详情

如何使用 mySQL 返回另一列中每个值的最常见列值?

...2918:44:45【问题描述】:我正在寻找一个棘手的MySQL查询来为另一列中的每个值返回最常见的列值。我可以使用PHP来处理每个结果,但是用一个查询来做会更酷:)例如,如果有一个这样的表,称为 查看详情

在另一列上复制在某些条件下具有空值的列

】在另一列上复制在某些条件下具有空值的列【英文标题】:Replicatetheacolumnwhichhasnullvaluesoncertainconditionsonanothercolumn【发布时间】:2020-05-2602:45:48【问题描述】:使用的数据库是SQLServer。我的表中有以下值:IDSESSION_IDUIDCREATED_DATEM... 查看详情

DB2 根据另一列中的不同值更新具有递增数字的列

】DB2根据另一列中的不同值更新具有递增数字的列【英文标题】:DB2updatecolumnwithincrementingnumberbasedondistinctvaluesinanothercolumn【发布时间】:2016-02-1809:32:35【问题描述】:对于每个不同的ref_no值,我想使用从1开始的递增值的运行序... 查看详情

查找一列中具有相同值而另一列中具有其他值的行?

】查找一列中具有相同值而另一列中具有其他值的行?【英文标题】:Findrowsthathavesamevalueinonecolumnandothervaluesinanothercolumn?【发布时间】:2015-01-0401:41:24【问题描述】:我有一个PostgreSQL数据库,它将用户存储在users表中,并将他们... 查看详情

具有唯一值的列的 SQL 总和量

...一个没有按预期工作。原始问题我正在使用SQL查询对其中一列中不同值的总收入求 查看详情

查询以返回在所有行中对于一列的每个不同值具有相同值的行值

】查询以返回在所有行中对于一列的每个不同值具有相同值的行值【英文标题】:Querytoreturnrowvalueswhichhassamevaluesinalltherowsforeachdifferentvalueofonecolumn【发布时间】:2020-03-1308:15:56【问题描述】:例如,我有以下数据:我只想显示第... 查看详情

计算具有相同 id 的列的值的存储过程

...想要,“Day”中具有相同值的列具有相同的ID。我想计算一列中的数字,并显示与之相关的ID。我的桌子|id|day|desc||:----|:------:|-----||1|mo 查看详情

如何将一列的列值组合到 MySQL 中的另一列中?

】如何将一列的列值组合到MySQL中的另一列中?【英文标题】:HowtocombinecolumnvaluesofonecolumnintoanothercolumninMySQL?【发布时间】:2021-08-2010:34:32【问题描述】:我需要帮助将一列的列合并到另一列中,特别是只需将列值插入另一列下... 查看详情