我需要根据日期查找full_national_number
的最新记录。有人可以建议解决方案吗?
我的数据是
+--------------------+-----------------------+----------+
|full_national_number|derived_sequence_number| ts|
+--------------------+-----------------------+----------+
| A00000001 | 0000|1111-11-11|
| A00000001 | 0001|1111-11-11|
| A00000001 | 0002|1111-11-11|
| A00000002 | 0000|1111-11-11|
| A00000002 | 0001|1111-11-11|
| A00000002 | 0002|1111-11-11|
| A00000003 | 0000|1111-11-11|
| A00000003 | 0001|1111-11-11|
| A00000004 | 0000|1111-11-11|
| A000000010 | 0000|1111-11-11|
| A000000011 | 0000|1111-11-11|
| A00000008 | 0000|2018-11-16|
| A00000008 | 0001|2018-11-16|
| A00000008 | 0002|2018-11-16|
| A00000002 | 0000|2018-11-16|
| A00000003 | 0000|2018-11-16|
| A00000004 | 0000|2018-11-16|
| A00000005 | 0000|2018-11-16|
+--------------------+-----------------------+----------+
我的预期输出应该是
+--------------------+-----------------------+----------+
|full_national_number|derived_sequence_number| ts|
+--------------------+-----------------------+----------+
| A00000001 | 0000|1111-11-11|
| A00000001 | 0001|1111-11-11|
| A00000001 | 0002|1111-11-11|
| A00000002 | 0000|2018-11-16|
| A00000003 | 0000|2018-11-16|
| A00000004 | 0000|2018-11-16|
| A00000005 | 0000|2018-11-16|
| A00000008 | 0000|2018-11-16|
| A00000008 | 0001|2018-11-16|
| A00000008 | 0002|2018-11-16|
| A000000010 | 0000|1111-11-11|
| A000000011 | 0000|1111-11-11|
+--------------------+-----------------------+----------+
我尝试了以下选项,但出现错误。
sqlContext.sql(“选择完整的国家编号,派生的序列号, 来自(select *,to_date('1111-11-11')的max(ts)作为t1联合的ts全部 从* 2中选择*,current_date)联合分组依据 full_national_number“)。show()
我得到的错误是
回溯(最近通话最近):
(模块)文件“ /opt/cloudera/parcels/CDH-5.14.4-1.cdh5.14.4.p0.3/lib/spark/python/pyspark/sql/context.py”中的文件“”,第1行, 第580行,在sql中 返回DataFrame(self._ssql_ctx.sql(sqlQuery),self)
文件“ /opt/cloudera/parcels/CDH-5.14.4-1.cdh5.14.4.p0.3/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py”,第1257行,在致电
文件“ /opt/cloudera/parcels/CDH-5.14.4-1.cdh5.14.4.p0.3/lib/spark/python/pyspark/sql/utils.py”, 第51行,在装饰中 引发AnalysisException(s.split(':',1)[1],stackTrace)pyspark.sql.utils.AnalysisException:u“表达式 “ derived_sequence_number”在分组依据中不存在,也不存在 它是一个聚合函数。添加到分组依据或包装在first()中(或 first_value)如果您不在乎获得哪个值。“”
请为我建议一个解决方案。
答案 0 :(得分:1)
我认为这将为您带来所需的结果。只需粘贴SQL查询:
Amazon EC2
Ubuntu 16.04
Nix, Postgresql installed
让我知道这是否有帮助。