почему SQL-код работает и Scala-код, как SQL не работает?(используйте левое соединение и несколько дат) - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть SQL-код, который отлично работает:

val sql ="""
        select a.*,
                b.fOOS,
                b.prevD
        from dataFrame as a
        left join dataNoPromoFOOS as b on 
        a.shopId = b.shopId and a.skuId = b.skuId and
        a.Date > b.date and a.date <= b.prevD


    """

результат:

+------+------+----------+-----+-----+------------------+---+----------+------------------+----------+
|shopId| skuId|      date|stock|sales|          salesRub| st|totalPromo|              fOOS|     prevD|
+------+------+----------+-----+-----+------------------+---+----------+------------------+----------+
|   200|154057|2017-03-31|101.0| 49.0|            629.66|  1|         0|58.618803952304724|2017-03-31|
|   200|154057|2017-09-11|116.0| 76.0|            970.67|  1|         0|  63.3344597217295|2017-09-11|
|   200|154057|2017-11-10| 72.0| 94.0| 982.4599999999999|  1|         0|59.019226118850405|2017-11-10|
|   200|154057|2018-10-08|126.0| 34.0|            414.44|  1|         0| 55.16878756270067|2018-10-08|
|   200|154057|2016-08-03|210.0| 27.0|            307.43|  1|         0|23.530049844711286|2016-08-03|
|   200|154057|2016-09-03| 47.0| 20.0|            246.23|  1|         0|24.656378380329674|2016-09-03|
|   200|154057|2016-12-31| 66.0| 30.0|             386.5|  1|         1|  26.0423103074891|2017-01-09|
|   200|154057|2017-02-28| 22.0| 61.0| 743.2899999999998|  1|         0| 54.86808157636879|2017-02-28|
|   200|154057|2017-03-16| 79.0| 41.0|505.40999999999997|  1|         0| 49.79449369431623|2017-03-16|

когда я использую scala, этот код не работает

dataFrame.join(dataNoPromoFOOS,
               dataFrame("shopId") === dataNoPromoFOOS("shopId") && 
               dataFrame("skuId") === dataNoPromoFOOS("skuId") && 

            (dataFrame("date").lt(dataNoPromoFOOS("date"))) &&  
                                      (dataFrame("date").geq(dataNoPromoFOOS("prevD"))) ,
                                  "left"
                             ).select(dataFrame("*"),dataNoPromoFOOS("fOOS"),dataNoPromoFOOS("prevD"))

результат:

+------+------+----------+-----+-----+------------------+---+----------+----+-----+
|shopId| skuId|      date|stock|sales|          salesRub| st|totalPromo|fOOS|prevD|
+------+------+----------+-----+-----+------------------+---+----------+----+-----+
|   200|154057|2016-09-24|288.0| 34.0|            398.66|  1|         0|null| null|
|   200|154057|2017-06-11| 40.0| 38.0|            455.32|  1|         1|null| null|
|   200|154057|2017-08-18| 83.0| 20.0|226.92000000000002|  1|         1|null| null|
|   200|154057|2018-07-19|849.0| 58.0|            713.12|  1|         0|null| null|
|   200|154057|2018-08-11|203.0| 52.0|            625.74|  1|         0|null| null|
|   200|154057|2016-09-01|120.0| 24.0|             300.0|  1|         1|null| null|
|   200|154057|2016-12-22| 62.0| 30.0|            378.54|  1|         0|null| null|
|   200|154057|2017-05-11|105.0| 49.0|            597.12|  1|         0|null| null|
|   200|154057|2016-12-28|  3.0| 36.0|            433.11|  1|         1|null| null|

кто-то знает, почему SQL-код работает и Scala-код не присоединяется к левой таблице.я думаю, что это столбец даты, но я не понимаю, как я могу найти свою ошибку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...