如何计算非静态数据透视表上的最大/最小日期之间的差异?

时间:2019-06-27 08:48:24

标签: excel excel-formula pivot-table

我有一个这样的数据透视表

//source rdd looks like this
val seq1=Seq((1,2,3),(4,5,6),(7,8,9),.....)
val rdd1=sc.parallelize(seq1)

//Single compute thread
class MyException extends Exception
class CalThread(lastResult:Boolean) extends Callable[Boolean]{
  override def call(): Boolean = {
    try{
      val rdd2=rdd1.map{x=>(x._1,(x._2,x._3))}
      val rdd3=rdd2.reduceByKey{
        (a,b)=>{
          if(a._1!=b._1)
           throw new MyException
          else
           a
        }
      }
      println(rdd3.count)
      false
    }catch{
      case e:Exception=>{
        true
      }
    }

  }
}

//how to submit task
val exec =new ThreadPoolExecutor(1,1,0
      ,TimeUnit.SECONDS,new LinkedBlockingQueue[Runnable]())
var f:Future[Boolean]=null
var firstCal=true
while (flag){
  if(firstCal){
    f = exec.submit(new CalThread(false))
    firstCal=false
  }
  else{
    f = exec.submit(new CalThread(f.get()))
  }
}

我想创建一个数据透视表来显示月份差异,所以可以这样:

A | 01/01/2001 | 01/02/2001
A | 01/01/2001 | 01/02/2008
B | 01/01/1994 | 01/11/2015
B | 01/01/2006 | 01/02/2014
B | 11/01/2016 | 19/07/2018
C | 01/03/2006 | 21/02/2014
C | 01/06/2016 | 01/05/2017
...

或仅仅几个月:

A | 01/01/2001 | 01/02/2001 | 1
A | 01/01/2001 | 01/02/2008 | 85
etc...

当然我可以只使用A | 1 A | 85 etc... ,但是我也想添加一个切片器,以便可以过滤=DATEDIF(date1,date2,"M"),这意味着行数不是固定的,所以我不能仅仅添加公式。

有没有很好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以在数据透视表本身内部计算字段,然后就可以使用切片器

导航:

数据透视表工具>>分析>>字段项和集合>>计算字段

然后粘贴您的datedif公式

{
  [...]
  onClickFunction: function (event){
    [...]
    gon.watch("nodes", {}, function(){})
  }
},

希望有帮助!