我正在尝试计算每个对id和id_2的字段“度量”在日期1和日期2之间具有值“ M”的次数
**日期1是采取措施的日期,日期2是采取措施的1-5天,因为5天是我们要计算采取措施数量的时期。
| date 1| date 2| id | id_2 | measure|
+---------- +---------- +---------------+----------------+-----------+
|2016-10-25 |2016-10-20 | 1| 1| M|
|2016-10-26 |2016-10-21 | 1| 5| |
|2016-10-22 |2016-10-17 | 1| 1| M|
|2016-10-30 |2016-10-25 | 1| 2| M|
|2016-10-22 |2016-10-17 | 2| 1| M|
|2016-10-26 |2016-10-21 | 2| 2| |
|2016-10-18 |2016-10-13 | 2| 5| M|
|2016-10-25 |2016-10-20 | 2| 1| |
+------------+------------+---------------+----------------+-----------+
所需的输出将是:
| date 1| date 2| id | id_2 | measure| count
+---------- +---------- +---------------+----------------+-----------+-----+
|2016-10-25 |2016-10-20 | 1| 1| M| 1|
|2016-10-26 |2016-10-21 | 1| 5| | 0|
|2016-10-22 |2016-10-17 | 1| 1| M| 0|
|2016-10-30 |2016-10-25 | 1| 2| M| 0|
|2016-10-22 |2016-10-17 | 2| 1| M| 0|
|2016-10-26 |2016-10-21 | 2| 2| | 0|
|2016-10-18 |2016-10-13 | 2| 5| M| 0|
|2016-10-25 |2016-10-20 | 2| 1| | 1|
+------------+------------+---------------+----------------+----------+-----+
我相信Windows可能会有所帮助,但是我不确定如何将其应用于此问题。以前,我已经通过子查询解决了此类问题,但在Pyspark中无法应用。
我以前使用的查询是:
SELECT a.date1,
a.date2,
a.id,
a.id_2,
a.measure,
(select count(data.[id]) as CountMeasure
from dataOrigin data
where data.id = a.id
and data.id_2 = a.id_2 and measure = 'M'
and datos.date1 > date2 and datos.date1 < a.date1) as count
FROM dataOrigin a
如果需要更多信息,请告诉我
谢谢大家!