Varun Bhandary created SPARK-59373:
--------------------------------------

             Summary:  Fix the documented return type of ceil and floor with a 
scale argument
                 Key: SPARK-59373
                 URL: https://issues.apache.org/jira/browse/SPARK-59373
             Project: Spark
          Issue Type: Documentation
          Components: Documentation
    Affects Versions: 5.0.0, 4.4.0
            Reporter: Varun Bhandary


The Returns block in pyspark.sql.functions.floor contradicts itself. It says
"nearest integer that is less than or equal to given value" and then, on the 
very
next line, "Returns a column that evaluates to a long or decimal".

The first line is a leftover from before SPARK-45131 and is wrong whenever scale
is passed. The docstring's own example disproves it: floor(2.1267, 2) returns
Decimal('2.12'), which is not an integer.

The second line is accurate but does not say which case gives which, and the 
rule
is not obvious, because passing scale returns a decimal for every input type,
integers included. Measured on 4.0.0:

  floor(double) is bigint, and floor(double, 1) is decimal(17,1)
  ceil(double) is bigint, and ceil(double, 1) is decimal(17,1)
  round(double, 1) is double
  floor(bigint, 1) is decimal(21,0)

So ceil and floor are the only scale taking math functions that do not return 
the
input's type, and nothing in the documentation says so. round, bround and
truncate all preserve it.

This is a documentation fix rather than a behaviour change. SPARK-38604 records
that these return types were chosen deliberately when SPARK-37475 added the
scale parameter.

The fix is to remove the wrong line, state the rule in the Python and Scala docs
for floor, ceil and ceiling, and add it to the ceil and floor SQL function
descriptions, which currently say nothing about the return type at all.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to