J'ai une image. J'ai besoin du dernier enregistrement de table sur les bases de updateTableTimestamp pour chaque ID. df.show()
Comment sélectionner un enregistrement distinct d'une donnée avec le dernier horodatage
+--------------------+-----+-----+--------------------+
| Description| Name| id |updateTableTimestamp|
+--------------------+-----+-----+--------------------+
| | 042F|64185| 1507306990753|
| | 042F|64185| 1507306990759|
|Testing |042MF| 941| 1507306990753|
| | 058F| 8770| 1507306990753|
|Testing 3 |083MF|31663| 1507306990759|
|Testing 2 |083MF|31663| 1507306990753|
+--------------------+-----+-----+--------------------+
besoin de la sortie
+--------------------+-----+-----+--------------------+
| Description| Name| id |updateTableTimestamp|
+--------------------+-----+-----+--------------------+
| | 042F|64185| 1507306990759|
|Testing |042MF| 941| 1507306990753|
| | 058F| 8770| 1507306990753|
|Testing 3 |083MF|31663| 1507306990759|
+--------------------+-----+-----+--------------------+
J'ai essayé
sqlContext.sql("SELECT * FROM (SELECT *, row_number() OVER (PARTITION BY Id ORDER BY updateTableTimestamp DESC) rank from temptable) tmp where rank = 1")
lui donne erreur sur la partition. Exception dans le thread "principal" java.lang.RuntimeException: [1.29] failure: ``union'' expected but
(» found`I me sers étincelle 1.6.2
"il donne une erreur" - quelle est l'erreur? – FuzzyTree
Essayez 'où tmp.rank = 1' ou essayez d'utiliser un alias différent de' rank', puisqu'il s'agit d'un mot réservé. – Simon
PARTITION non prise en charge – lucy