所望の出力:私は取得したいのScalaを使用することにより
。 ロジックを構築する際に私を案内してください。
ありがとう、 Syam。 Shaidoから正しいコメントで編集
所望の出力:私は取得したいのScalaを使用することにより
。 ロジックを構築する際に私を案内してください。
ありがとう、 Syam。 Shaidoから正しいコメントで編集
私はあなたの問題についてもう少し考えて、データフレームのWindow
機能を使って、より良い解決策を思いつきました。最初にすべてがCurrentdatedtime
で注文され、次に各行がチェックされてdtcode
が変更されているかどうかが確認されます。あなたの例のデータを使用して:
val spark = SparkSession.builder.getOrCreate()
import spark.implicits._
val df = Seq(("7-1-2016 0:00:17",0),("7-1-2016 0:01:17",0),
("7-1-2016 0:02:17",4),("7-1-2016 0:03:17",4),
("7-1-2016 0:04:17",0),("7-1-2016 0:05:17",0),
("7-1-2016 0:06:17",0),("7-1-2016 0:07:17",5)).toDF("Currentdatedtime", "dtcode")
val w = Window.orderBy("Currentdatedtime")
val df2 = df.withColumn("dtcode_change",
when(lag($"dtcode", 1).over(w) === $"dtcode", 0).
otherwise(1))
.filter($"dtcode_change" === 1)
.drop("dtcode_change")
はあなたを与える:
+----------------+------+
|Currentdatedtime|dtcode|
+----------------+------+
|7-1-2016 0:00:17| 0|
|7-1-2016 0:02:17| 4|
|7-1-2016 0:04:17| 0|
|7-1-2016 0:07:17| 5|
+----------------+------+
ありがとうございました... – user3631634
@ user3631634回答を受け入れることを検討してください(回答の横にあるチェックマークをクリックしてください)。 :) – Shaido
--- ---通常
、テーブル内の順序は無関係のであればGROUP BY
は、これを処理だろう、
SQLは、関連する大量のデータをグループ化すると良いです。ただし、分析はデータ入力の順序に依存し、変更はある列の変更によってトリガーされ、後で繰り返すことができ、集計することはできませんが、他の列は変更を続けることができます。
この場合、SQLにはこの種のものをグループ化する簡単な方法がないため、データをループして手動で変更を検出する必要があります。私は少し早く答え、これに気付かなかった。
これは、STORED PROCEDUREまたは表示言語で処理するのが最適です。あなたが望むなら、私はあなたにPHPでコードを与えることができます。
別のチートは毎回dtcode
を増加させGROUP BY(のはgroubycheat
それを呼びましょう)で使用される列を追加することになります
SELECT MIN(Currentdatedtime) as Currentdatedtime, dtcode
FROM <tablename>
GROUP BY groupbycheat;
を変更するこれはまだフィールドを追加するLOOPが必要ですが、もしあなたは何度も結果を得る必要がある、それはそれの価値がある。そうでなければ..no
'dtcode'はグループごとに一意ではないので、groupByはここでは動作しません。再び与えられた例を確認してください. – Shaido
返信ありがとうございました.. 私はPHPも知らない。 私はPHPを知らない。 このデータはHDFSからフェッチする必要があります。 – user3631634
を私はあなたがこの問題を解決することができます参照してください唯一の方法は、手動で全データフレームをループ自身とチェックすることです、下記のジャック・アマールに同意します'dtcode'が変更されたかどうか。それは単にプログラムそのものを行うだけですが、あまり効率的ではありません。それぞれのグループに一意な識別子を与えることができれば、 'groupBy()'は簡単な方法です。 – Shaido