SparkSQL에서 시계열 가상 데이터 테이블을 만드는 함수
소개
제목대로 SparkSQL에서 시계열 가상 데이터 테이블을 만드는 함수입니다. 다음과 같은 분을 상정.
기능
이런 식으로 썼습니다. 시작일, 종료일, 초 단위의 간격, 테이블의 행명을 인수로 하고 있습니다.
def generate_series(day_start, day_end, sec_interval, col_name):
# day type: str
# day format: 'yyyy/MM/dd'
from pyspark.sql.functions import col
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
# day_start から day_end までのタイムスタンプ df 作成
start, stop = spark\
.createDataFrame([(day_start, day_end)], ("start", "stop"))\
.select([col(c).cast("timestamp").cast("long") for c in ("start", "stop")])\
.first()
# 指定したインターバルで select
calendar_table = spark\
.range(start, stop, sec_interval)\
.select(col("id").cast("timestamp")\
.alias(col_name))
return calendar_table
사용 예
초당
start_date = '2020/01/01'
end_date = '2020/01/31'
# #1秒毎のテーブル
cal = generate_series(start_date, end_date, 1, 'time_stamp')
display(cal)
1시간마다
start_date = '2020/01/01'
end_date = '2020/01/31'
# #1時間毎のテーブル
cal = generate_series(start_date, end_date, 60*60, 'time_stamp')
display(cal)
결론
우선은 작동하지만,
라는 분, 정보 주시면 매우 기쁩니다.
참고 링크
Spark Programming Guide
Reference
이 문제에 관하여(SparkSQL에서 시계열 가상 데이터 테이블을 만드는 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Catetin0310/items/6a2613c1ee2ea271be14텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)