snowflake.snowpark.functions.trunc¶
- snowflake.snowpark.functions.trunc(e: ColumnOrName, scale: ColumnOrName | int | float = 0) Column [source]¶
Rounds the input expression down to the nearest (or equal) integer closer to zero, or to the nearest equal or smaller value with the specified number of places after the decimal point.
Example:
>>> df = session.createDataFrame([-1.0, -0.9, -.5, -.2, 0.0, 0.2, 0.5, 0.9, 1.1, 3.14159], schema=["a"]) >>> df.select(trunc(col("a"))).collect() [Row(TRUNC("A", 0)=-1.0), Row(TRUNC("A", 0)=0.0), Row(TRUNC("A", 0)=0.0), Row(TRUNC("A", 0)=0.0), Row(TRUNC("A", 0)=0.0), Row(TRUNC("A", 0)=0.0), Row(TRUNC("A", 0)=0.0), Row(TRUNC("A", 0)=0.0), Row(TRUNC("A", 0)=1.0), Row(TRUNC("A", 0)=3.0)] >>> df = session.createDataFrame([-1.323, 4.567, 0.0123], schema=["a"]) >>> df.select(trunc(col("a"), lit(0))).collect() [Row(TRUNC("A", 0)=-1.0), Row(TRUNC("A", 0)=4.0), Row(TRUNC("A", 0)=0.0)] >>> df.select(trunc(col("a"), lit(1))).collect() [Row(TRUNC("A", 1)=-1.3), Row(TRUNC("A", 1)=4.5), Row(TRUNC("A", 1)=0.0)] >>> df.select(trunc(col("a"), lit(2))).collect() [Row(TRUNC("A", 2)=-1.32), Row(TRUNC("A", 2)=4.56), Row(TRUNC("A", 2)=0.01)]
Note that the function
trunc
is overloaded withdate_trunc
for datetime types. It allows to round datetime objects.Example:
>>> import datetime >>> df = session.createDataFrame([datetime.date(2022, 12, 25), datetime.date(2022, 1, 10), datetime.date(2022, 7, 7)], schema=["a"]) >>> df.select(trunc(col("a"), lit("QUARTER"))).collect() [Row(TRUNC("A", 'QUARTER')=datetime.date(2022, 10, 1)), Row(TRUNC("A", 'QUARTER')=datetime.date(2022, 1, 1)), Row(TRUNC("A", 'QUARTER')=datetime.date(2022, 7, 1))] >>> df = session.createDataFrame([datetime.datetime(2022, 12, 25, 13, 59, 38, 467)], schema=["a"]) >>> df.collect() [Row(A=datetime.datetime(2022, 12, 25, 13, 59, 38, 467))] >>> df.select(trunc(col("a"), lit("MINUTE"))).collect() [Row(TRUNC("A", 'MINUTE')=datetime.datetime(2022, 12, 25, 13, 59))]