我有2个pysaprk数据帧。
我正在寻找将df1与df2连接的选项。左连接仅与df2的第一行连接。
DF1:
ID string
1 sfafsda
2 trwe
3 gfdgsd
大黑手
ID address state
1 Montreal Quebec
1 Quebec Quebec
2 Trichy TN
2 Madurai TN
3 Bangalore KN
3 Mysore KN
3 Hosur KN
联接的预期输出:
ID string address state
1 sfafsda Montreal Quebec
2 trwe Trichy TN
3 gfdgsd Bangalore KN
当我正在处理数据砖时,请让我知道仅使用第一行实现 pyspark 左连接是否更容易,或者 sql 连接是否可以实现预期的输出。谢谢。
是的,可以使用pyspark,但您需要向df2
添加索引列。请参阅下面的代码:
df2 = df2.withColumn('index', F.monotonically_increasing_id())
df1.join(df2, 'ID', 'left') \
.select('*', F.first(F.array('address', 'state')).over(Window.partitionBy('ID').orderBy('index')).alias('array')) \
.select('ID', 'string', F.col('array')[0].alias('address'), F.col('array')[1].alias('state')) \
.groupBy('ID', 'string') \
.agg(F.first('address'), F.first('state')) \
.orderBy('ID')
问题内容: 我读了许多关于仅获得左联接的第一行的主题,但是由于某种原因,这对我不起作用。 这是我的结构(当然是简化的) 提要 艺人 feeds_artists 现在,我想获取文章并仅加入第一位艺术家,我想到了这样的事情: 只是仅获取feeds_artists的第一行,但已经行不通了。 由于数据库原因,我无法使用,也无法按结果对结果进行分组(因为我需要按日期对它们进行排序(我通过这种方式对结果进行分
我读过很多关于只获得左联接的第一行的文章,但是,由于某些原因,这对我不起作用。 这里是我的结构(当然是简化的) 源 只获得feeds_artists的第一行,但这已经不起作用了。 由于数据库的原因,我不能使用并且我不能按对结果进行分组,因为我需要按日期对它们进行排序(我通过这样分组得到了结果,但结果不是最新的) 也尝试了一些外用的东西--也没有成功。老实说,我真的想象不出这些排是怎么回事--这可能
我正在使用Ingres 11.0 DB,不确定它是否在其他数据库引擎上具有相同的行为,但这里是它 它不会返回表1中的所有记录,但我使用的是左连接,它应该从T1返回aa记录,从t2只处理行,只返回1条记录 如果我将其中一个条件从where子句移动到join条件,它的开始将返回我所期望的结果 问题是为什么它不工作在哪里所有搜索条件在哪里子句,但工作时,我移动t2.id_number从哪里加入条件? 我
问题内容: 我有一个包含ID,WorkerID,IsActive标志(1或0)和LocalTime的表。每次工作人员处于活动状态或不活动状态时,都会使用WorkerID,1或0标志记录以及一个时间(LocalTime)创建一条记录。 我想插入一个新表中:从该表中,对于每个唯一的WorkerID,仅当该记录的IsActive标志为1时,才为该唯一的WorkerID选择具有最新LocalTime的记录
问题内容: 在多表查询中,每条记录只能获得一行? 我有这三个表: 苹果 疲劳风险管理系统 FARM_APPLES 使用此表,我需要以下结果: 非常感谢您的任何帮助,在此先感谢您。 编辑 感谢OMG Ponies和Bill,我将尽力尝试您的两种解决方案,这是最后一件事,它有可能获得以下结果: 问题答案: Firebird 2.0支持CASE表达式,因此您可以使用:
问题内容: 如标题所示,我想选择以分组的每组行的第一行和最后一行。 我在此表中包含以下数据: 我需要获取的是列开头的第一个值和列末尾的最后一个值,并按group by group列进行分组。 结果表应如下所示: 我使用和和进行了查询。它可以在SQL Server 2012中使用,但不能在SQL Server 2008中使用。我需要一个可以在SQL Server 2008中执行的查询。 问题答案: