from_utc_timestamp

Převede časové razítko, které je nezávislé na časovém pásmu (interpretované jako časové razítko UTC) na časové razítko v daném časovém pásmu. Toto je běžná funkce pro databáze podporující TIMESTAMP WITHOUT TIMEZONE.

Časové razítko ve Sparku ale představuje počet mikrosekund z epochy Unixu, která není nezávislá na časovém pásmu. Takže ve Sparku tato funkce jednoduše posune hodnotu časového razítka z časového pásma UTC na dané časové pásmo.

Tato funkce může vrátit neočekávaný výsledek, pokud je vstup řetězcem s časovým pásmem, například 2018-03-13T06:18:23+00:00, protože Spark nejprve přetypuje řetězec na časové razítko podle časového pásma v řetězci a pak zobrazí výsledek převodem časového razítka na řetězec podle místního časového pásma relace.

Odpovídající funkci SQL Databricks vizte funkcefrom_utc_timestamp.

Syntaxe

from pyspark.sql import functions as dbf

dbf.from_utc_timestamp(timestamp=<timestamp>, tz=<tz>)

Parametry

Parameter Typ Description
timestamp pyspark.sql.Column nebo str sloupec obsahující časové razítko
tz pyspark.sql.Column nebo literal string Řetězec s podrobnostmi o ID časového pásma, na které má být vstup upraven. Měl by být ve formátu ID zón založených na oblasti nebo posunu zóny. ID oblastí musí mít tvar "area/city", například "America/Los_Angeles". Posuny zóny musí být ve formátu (+|-)HH:mm, například -08:00 nebo +01:00. Podporuje se také "UTC" a "Z" jako aliasy "+00:00". Jiné krátké názvy se nedoporučuje používat, protože mohou být nejednoznačné.

Návraty

pyspark.sql.Column: hodnota časového razítka reprezentovaná v daném časovém pásmu.

Examples

from pyspark.sql import functions as dbf
df = spark.createDataFrame([('1997-02-28 10:30:00', 'JST')], ['ts', 'tz'])
df.select('*', dbf.from_utc_timestamp('ts', 'PST')).show()
df.select('*', dbf.from_utc_timestamp(df.ts, df.tz)).show()