小编Dom*_*nik的帖子

Pyspark:在 window() 上使用有条件的collect_list

我有以下测试数据:

import pandas as pd
import datetime

data = {'date': ['2014-01-01', '2014-01-02', '2014-01-03', '2014-01-04', '2014-01-05', '2014-01-06'],
     'customerid': [2, 2, 2, 3, 4, 3], 'names': ['Andrew', 'Pete', 'Sean', 'Steve', 'Ray', 'Stef'], 'PaymentType': ['OI', 'CC', 'CC', 'OI', 'OI', 'OI']}
data = pd.DataFrame(data)
data['date'] = pd.to_datetime(data['date'])
Run Code Online (Sandbox Code Playgroud)

以下代码为我提供了两天时间范围内具有匹配 customerid 的名称列表:

import pandas as pd
import datetime

from pyspark.sql.window import Window
from pyspark.sql import functions as F
from pyspark.sql import SparkSession


spark = SparkSession.builder \
    .master('local[*]') \
    .config("spark.driver.memory", "500g") \
    .appName('my-pandasToSparkDF-app') \
    .config("spark.ui.showConsoleProgress", "false")\
    .getOrCreate() …
Run Code Online (Sandbox Code Playgroud)

python pandas apache-spark pyspark

6
推荐指数
1
解决办法
9044
查看次数

PostgreSQL 中的时间窗口

我是 PostgreSQL 的新手(具体来说,我使用 Timescale db)并且有一个关于时间窗口的问题。

数据:

date      |customerid|names   
2014-01-01|1         |Andrew 
2014-01-02|2         |Pete   
2014-01-03|2         |Andrew 
2014-01-04|2         |Steve  
2014-01-05|2         |Stef   
2014-01-06|3         |Stef  
2014-01-07|1         |Jason 
2014-01-08|1         |Jason 
Run Code Online (Sandbox Code Playgroud)

问题是:回到 x 天(从每一行查看),有多少个不同的名称共享相同的 id?

对于 x=2 天,结果应如下所示:

date      |customerid|names  |count 
2014-01-01|1         |Andrew |1 
2014-01-02|2         |Pete   |1 
2014-01-03|2         |Andrew |2 
2014-01-04|2         |Steve  |3 
2014-01-05|2         |Stef   |3 
2014-01-06|3         |Stef   |1
2014-01-07|1         |Jason  |1
2014-01-08|1         |Jason  |1  
Run Code Online (Sandbox Code Playgroud)

在 PostgreSQL 中,这是否可能无需在每一行上使用循环?

附加信息:数据的时间间隔实际上并不是等距的。

非常感谢!

sql postgresql timescaledb

4
推荐指数
1
解决办法
1849
查看次数

标签 统计

apache-spark ×1

pandas ×1

postgresql ×1

pyspark ×1

python ×1

sql ×1

timescaledb ×1