timsaucer opened a new issue, #753:
URL: https://github.com/apache/datafusion-python/issues/753

   **Is your feature request related to a problem or challenge? Please describe 
what you are trying to do.**
   To make a more user friendly interface, `Expr.cast()` should accept a python 
type and attempt to convert it to the appropriate pyarrow data type. This is 
predicated upon pull request 
https://github.com/apache/datafusion-python/pull/750 being merged.
   
   **Describe the solution you'd like**
   See the below example from @datapythonista
   
   **Describe alternatives you've considered**
   Alternative is to leave as is, which is operable.
   
   **Additional context**
   This example of enhancement requests include the desired use case:
   
   ```
   import datafusion
   from datafusion import col, lit, functions as f
   import pyarrow
   
   
   # something like this would be implemented internally, so users can call 
`datafusion.read_*`
   def _read_parquet(*args, **kwargs):
       ctx = datafusion.SessionContext()
       return ctx.read_parquet(*args, **kwargs)
   datafusion.read_parquet = _read_parquet  # creating an alias of `read_*` 
functions so users don't need to know about `SessionContext` when the defaults 
are fine
   
   
   df = (datafusion.read_parquet("buildings.parquet")
                   .filter(  # `.filter()` accepting multiple conditions (which 
will be an AND) instead of having to use `&` with its operator precedence 
problems
                       col("is_offplan") == False,
                       col("rooms") >= 2,  # `.lit(2)` not being required, and 
Python literals working with operators
                   )
                   .aggregate(
                       [col("area_name_en")],
                       [f.mean(col("has_parking").cast(float))],  # `.cast()` 
accepting Python types, which would be internally converted to the PyArrow 
equivalent
                   )
                   .select(
                       col("area_name_en").alias("Area"),
                       col("AVG(has_parking)").alias("Percentage of buildings 
with parking"),  # removing the default `?table?` in column names, the column 
name was "AVG(?table?.has_parking)"
                   )
        )
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to