Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Dataframe 当PYSPARK中每月的行数发生变化时,如何实现每月延迟?_Dataframe_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Dataframe 当PYSPARK中每月的行数发生变化时,如何实现每月延迟?

Dataframe 当PYSPARK中每月的行数发生变化时,如何实现每月延迟?,dataframe,apache-spark,pyspark,apache-spark-sql,Dataframe,Apache Spark,Pyspark,Apache Spark Sql,我想创建一个月延迟,以便计算月回报 这是我的数据帧: REG_DT_YYYYMM CD型 生产 202005 常设费用 412316860416 202005 LG 420906795008 202005 斯里兰卡 429496729600 202006 常设费用 438086664192 202006 LG 446676598784 202006 斯里兰卡 455266533376 202007 常设费用 463856467968 202007 LG 472446402560 202007 斯

我想创建一个月延迟,以便计算月回报

这是我的数据帧:

REG_DT_YYYYMM CD型 生产 202005 常设费用 412316860416 202005 LG 420906795008 202005 斯里兰卡 429496729600 202006 常设费用 438086664192 202006 LG 446676598784 202006 斯里兰卡 455266533376 202007 常设费用 463856467968 202007 LG 472446402560 202007 斯里兰卡 481036337152 202008 常设费用 489626271744 202008 LG 498216206336 202008 斯里兰卡 506806140928 202009 常设费用 515396075520 202009 LG 523986010112 202009 斯里兰卡 532575944704 202010 常设费用 541165879296 202010 LG 549755813888 202010 斯里兰卡 558345748480 202010 书信电报 566935683072 202011 常设费用 575525617664 202011 LG 584115552256 202011 斯里兰卡 592705486848 202011 书信电报 601295421440 202012 常设费用 609885356032 202012 LG 618475290624 202012 斯里兰卡 627065225216 202012 书信电报 635655159808 202101 常设费用 644245094400 202101 LG 652835028992 202101 斯里兰卡 661424963584 202101 书信电报 670014898176
通过在lag窗口中设置分区,可以获得每种类型的前一行:

from pyspark.sql import functions as F, Window

df2 = df.withColumn(
    'lag_production', 
    F.lag('production').over(
        Window.partitionBy('TYPE_CD')
              .orderBy('REG_DT_YYYYMM')
    )
)

您想比较哪些值?生产编号,抱歉没有指定。对于每种类型的\u cd?是的,这是正确的。关于
df.withColumn('lag\u production',F.lag('production')。over(Window.partitionBy('type\u cd')。orderBy('REG\u DT\u YYYYMM'))