Кросс-таблица по дате и часу в искре - PullRequest
0 голосов
/ 21 сентября 2018

Образец DF:

var someDF = Seq(
(1, "2017-12-02 03:04:00"),
(1, "2017-12-02 03:45:00"),
(1, "2017-12-02 04:04:00"),
(2, "2017-12-02 04:14:00"),
(2, "2017-12-02 04:54:00"),
(3, "2017-10-01 11:45:20"),
(4, "2017-10-01 02:45:20")
).toDF("number", "date")

OP:

+------+-------------------+
|number|               date|
+------+-------------------+
|     1|2017-12-02 03:04:00|
|     1|2017-12-02 03:45:00|
|     1|2017-12-02 04:04:00|
|     2|2017-12-02 04:14:00|
|     2|2017-12-02 04:54:00|
|     3|2017-10-01 11:45:20|
|     4|2017-10-01 02:45:20|
+------+-------------------+

Когда я пытаюсь использовать кросс-таблицу:

var temp = someDF.stat.crosstab("date","number")
temp.show()

OP:

+-------------------+---+---+---+---+
|        date_number|  1|  2|  3|  4|
+-------------------+---+---+---+---+
|2017-10-01 11:45:20|  0|  0|  1|  0|
|2017-12-02 03:04:00|  1|  0|  0|  0|
|2017-12-02 04:54:00|  0|  1|  0|  0|
|2017-12-02 04:14:00|  0|  1|  0|  0|
|2017-12-02 03:45:00|  1|  0|  0|  0|
|2017-12-02 04:04:00|  1|  0|  0|  0|
|2017-10-01 02:45:20|  0|  0|  0|  1|
+-------------------+---+---+---+---+

Я хотел бы применить ту же кросс-таблицу, но только с date_and_hour, например: 2017-12-02 03:

Ожидаемый OP:

+-------------------+---+---+---+---+
|   date_Hour_number|  1|  2|  3|  4|
+-------------------+---+---+---+---+
|2017-10-01 11      |  0|  0|  1|  0|
|2017-12-02 03 .    |  1|  0|  0|  0|
|2017-12-02 04 .    |  0|  2|  0|  0|

Любое предложение будет полезным

1 Ответ

0 голосов
/ 21 сентября 2018

Поскольку ваш столбец date имеет строковый тип, вы можете просто использовать substring, чтобы обрезать date до hour перед применением crosstab:

someDF.
  withColumn("datehour", substring($"date", 0, 13)).
  stat.crosstab("datehour", "number").
  show
// +---------------+---+---+---+---+
// |datehour_number|  1|  2|  3|  4|
// +---------------+---+---+---+---+
// |  2017-10-01 02|  0|  0|  0|  1|
// |  2017-10-01 11|  0|  0|  1|  0|
// |  2017-12-02 04|  1|  2|  0|  0|
// |  2017-12-02 03|  2|  0|  0|  0|
// +---------------+---+---+---+---+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...