Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 统计每月未结案件的数目_Python_Pyspark - Fatal编程技术网

Python 统计每月未结案件的数目

Python 统计每月未结案件的数目,python,pyspark,Python,Pyspark,我目前正在努力解决一个问题,即使用pyspark计算月末未完成任务的数量。我有一个带有两个时间戳的数据帧(一个用于问题的开始,一个用于问题的结束)。我想在月底统计未解决问题的数量 我的dataframe df1是两个时间戳表(任务开始和结束的时间戳)的合并。让我们假设它如下所示: TaskNumber Start Date StartTimestamp EndDate EndTimestamp EndOfTheMonth 1 2/15/2

我目前正在努力解决一个问题,即使用pyspark计算月末未完成任务的数量。我有一个带有两个时间戳的数据帧(一个用于问题的开始,一个用于问题的结束)。我想在月底统计未解决问题的数量

我的dataframe df1是两个时间戳表(任务开始和结束的时间戳)的合并。让我们假设它如下所示:

TaskNumber  Start Date   StartTimestamp    EndDate     EndTimestamp  EndOfTheMonth        
1           2/15/2019    Start             4/18/2019   End           2/28/2019                            
2           2/16/2019    Start             2/23/2019   End           2/28/2019                             
3           2/17/2019    Start             3/4/2019    End           2/28/2019                             
4           3/1/2019     Start             Null        Null          3/31/2019                            

from pyspark.sql.functions import col, when, sum as _sum
from pyspark.sql import functions as F

    df2 = df1.withColumn("EndOfTheMonth", last_day("Start Date"))

    df3 = (df2.withColumn("OpenTaskAtMonthEnd", when((col("Start Date") <= col("EndOfTheMonth")) & ((col("End Date") >= col("EndOfTheMonth")) | 
(col("EndTask").isNull())),1).otherwise(0))

             .withColumn("TaskStillOpened", when((col("EndTimestamp").isNull()),1).otherwise(0))
             .withColumn("DateofToday", F.current_date())
          )

    df4 = df3.filter(col("OpenTaskAtMonthEnd") == 1)
             .withColumn("Pending Days", when(col("TaskStillOpened") == 1, F.datediff(F.to_date(df3.DateofToday), F.to_date(df3.Start Date))).otherwise(F.datediff(F.to_date(df3.End Date), F.to_date(df3.Start Date))))


    dfOpen = (df4.groupBy("EndOfTheMonth")
             .agg(_sum(col("OpenTaskAtMonthEnd").alias("NrTotalOpenTasksAtMonthEnd"), _sum(col(TasksStillOpened)).alias("TotalWorkinProgress"))
             )


TaskNumber        Start Date    End Date     EndOfTheMonth    OpenTaskatMonthEnd    TaskStillOpen
1                 2/15/2019     4/18/2019    2/28/2019        1                     0
2                 2/16/2019     2/23/2019    2/28/2019        0                     0
3                 2/17/2019     3/4/2019     2/28/2019        1                     0
4                 3/1/2019      Null         3/31/2019        1                     1
TaskNumber开始日期StartTimestamp结束日期EndTimestamp结束时间戳EndOfTheMonth
1 2019年2月15日开始2019年4月18日结束2019年2月28日
2019年2月16日开始2019年2月23日结束2019年2月28日
3 2019年2月17日开始2019年3月4日结束2019年2月28日
4 2019年3月1日开始无效2019年3月31日无效
从pyspark.sql.functions导入col、when、sum作为_sum
从pyspark.sql导入函数为F
df2=df1。带列(“结束时间”,最后一天(“开始日期”))
df3=(df2.withColumn(“OpenTaskAtMonthEnd”),when((col(“开始日期”)=col(“EndOfTheMonth”))|
(col(“EndTask”).isNull()),1)。否则(0)
.withColumn(“TaskStillOpened”,当((col(“EndTimestamp”).isNull())为1时)。否则(0)
.withColumn(“DateofToday”,F.current_date())
)
df4=df3.filter(col(“OpenTaskAtMonthEnd”)==1)
。使用列(“待定日期”,当(列(“任务仍然打开”)==1,F.datediff(F.to_日期(df3.DateofToday),F.to_日期(df3.Start date))。否则(F.datediff(F.to_日期(df3.End date date),F.to_日期(df3.Start date)))
dfOpen=(df4.groupBy(“EndOfTheMonth”)
.agg(_sum(col(“OpenTaskAtMonthEnd”).别名(“NrTotalOpenTasksAtMonthEnd”),_sum(col(taskstillopened)).别名(“TotalWorkinProgress”))
)
任务编号开始日期结束日期结束月开放任务月开放任务仍开放
1                 2/15/2019     4/18/2019    2/28/2019        1                     0
2                 2/16/2019     2/23/2019    2/28/2019        0                     0
3                 2/17/2019     3/4/2019     2/28/2019        1                     0
4 2019年3月1日空2019年3月31日1 1
当某个任务在n-1月开始,但仅在n+1月结束时,我无法在n月的打开任务中找到该任务的实际代码

预期的输出实际上是获得每个月以及理想情况下每周的开放任务数


非常感谢您的支持;)

请分享您尝试过的代码片段。您还可以解释一下您希望得到什么样的输出吗?一个数据框架,其中包含每月和每年的开放任务?我已经实现了上一篇文章。我希望它更清楚一点。谢谢