は、私はあなたがすでにdataframe
は、私はあなたに
+----------+------+------+----------+----------+
|date_key |amount|types |condition1|condition2|
+----------+------+------+----------+----------+
|2015-01-01|332 |types |condition1|condition1|
|2015-01-01|332 |types |condition1|condition1|
|2015-01-01|332 |types |condition1|condition2|
|2015-01-01|332 |types2|condition1|condition1|
|2015-01-01|332 |types2|condition1|condition1|
|2015-01-01|332 |types2|condition1|condition1|
|2015-01-01|332 |types2|condition1|condition2|
+----------+------+------+----------+----------+
を与えるべきテスト
dataframe
import sqlContext.implicits._
val df = Seq(
testclass("2015-01-01", 332, "types", "condition1", "condition1"),
testclass("2015-01-01", 332, "types", "condition1", "condition1"),
testclass("2015-01-01", 332, "types", "condition1", "condition2"),
testclass("2015-01-01", 332, "types2", "condition1", "condition1"),
testclass("2015-01-01", 332, "types2", "condition1", "condition1"),
testclass("2015-01-01", 332, "types2", "condition1", "condition1"),
testclass("2015-01-01", 332, "types2", "condition1", "condition2")
).toDF
を作成したテスト目的のためにcase class
case class testclass(date_key: String , amount: Int, types: String, condition1: String, condition2: String)
を使用して持っていると仮定しています
NあなたがgroupBy
types
の列にsum
amount
の場合は、condition1 = condtion2
としたいと思います。 condition1=condition2
とやるgroupBy
とsum
のaggregation
としては
df.filter($"condition1" === $"condition2")
.groupBy("types")
.agg(sum("amount").as("sum"))
.show(false)
を次filter
行のみが、あなたがしたい場合は
+------+---+
|types |sum|
+------+---+
|types |664|
|types2|996|
+------+---+
が
を更新し、望ましい結果を持っている必要があり、そのためにあなたがすることができますdataframe
の代わりにdataSet
を使用すると、.toDS
insteを使用できますあなたはステップのそのdataset
代わりdataframe
の残りの部分は上記のように説明されていることがわかります.toDF
scala> import sqlContext.implicits._
import sqlContext.implicits._
scala> case class testclass(date_key: String , amount: Int, types: String, condition1: String, condition2: String)
defined class testclass
scala> val ds = Seq(
| testclass("2015-01-01", 332, "types", "condition1", "condition1"),
| testclass("2015-01-01", 332, "types", "condition1", "condition1"),
| testclass("2015-01-01", 332, "types", "condition1", "condition2"),
| testclass("2015-01-01", 332, "types2", "condition1", "condition1"),
| testclass("2015-01-01", 332, "types2", "condition1", "condition2")
| ).toDS
ds: org.apache.spark.sql.Dataset[testclass] = [date_key: string, amount: int ... 3 more fields]
としての広告。
'condition1 == condition2'が成立したときに' groupBy' ** **のみを実行しようとしていますか?条件が成立していないときとそうでないときに、入力データセットと出力を表示できますか?それは大変感謝しています。 –