@@ -428,8 +428,8 @@ def when(when: Expr, then: Expr) -> CaseBuilder:
428
428
def window (
429
429
name : str ,
430
430
args : list [Expr ],
431
- partition_by : list [Expr ] | None = None ,
432
- order_by : list [Expr | SortExpr ] | None = None ,
431
+ partition_by : list [Expr ] | Expr | None = None ,
432
+ order_by : list [Expr | SortExpr ] | Expr | SortExpr | None = None ,
433
433
window_frame : WindowFrame | None = None ,
434
434
ctx : SessionContext | None = None ,
435
435
) -> Expr :
@@ -442,11 +442,11 @@ def window(
442
442
df.select(functions.lag(col("a")).partition_by(col("b")).build())
443
443
"""
444
444
args = [a .expr for a in args ]
445
- partition_by = expr_list_to_raw_expr_list (partition_by )
445
+ partition_by_raw = expr_list_to_raw_expr_list (partition_by )
446
446
order_by_raw = sort_list_to_raw_sort_list (order_by )
447
447
window_frame = window_frame .window_frame if window_frame is not None else None
448
448
ctx = ctx .ctx if ctx is not None else None
449
- return Expr (f .window (name , args , partition_by , order_by_raw , window_frame , ctx ))
449
+ return Expr (f .window (name , args , partition_by_raw , order_by_raw , window_frame , ctx ))
450
450
451
451
452
452
# scalar functions
@@ -1723,7 +1723,7 @@ def array_agg(
1723
1723
expression : Expr ,
1724
1724
distinct : bool = False ,
1725
1725
filter : Optional [Expr ] = None ,
1726
- order_by : Optional [list [Expr | SortExpr ]] = None ,
1726
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
1727
1727
) -> Expr :
1728
1728
"""Aggregate values into an array.
1729
1729
@@ -2222,7 +2222,7 @@ def regr_syy(
2222
2222
def first_value (
2223
2223
expression : Expr ,
2224
2224
filter : Optional [Expr ] = None ,
2225
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2225
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2226
2226
null_treatment : NullTreatment = NullTreatment .RESPECT_NULLS ,
2227
2227
) -> Expr :
2228
2228
"""Returns the first value in a group of values.
@@ -2254,7 +2254,7 @@ def first_value(
2254
2254
def last_value (
2255
2255
expression : Expr ,
2256
2256
filter : Optional [Expr ] = None ,
2257
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2257
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2258
2258
null_treatment : NullTreatment = NullTreatment .RESPECT_NULLS ,
2259
2259
) -> Expr :
2260
2260
"""Returns the last value in a group of values.
@@ -2287,7 +2287,7 @@ def nth_value(
2287
2287
expression : Expr ,
2288
2288
n : int ,
2289
2289
filter : Optional [Expr ] = None ,
2290
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2290
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2291
2291
null_treatment : NullTreatment = NullTreatment .RESPECT_NULLS ,
2292
2292
) -> Expr :
2293
2293
"""Returns the n-th value in a group of values.
@@ -2407,8 +2407,8 @@ def lead(
2407
2407
arg : Expr ,
2408
2408
shift_offset : int = 1 ,
2409
2409
default_value : Optional [Any ] = None ,
2410
- partition_by : Optional [list [Expr ]] = None ,
2411
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2410
+ partition_by : Optional [list [Expr ] | Expr ] = None ,
2411
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2412
2412
) -> Expr :
2413
2413
"""Create a lead window function.
2414
2414
@@ -2442,17 +2442,15 @@ def lead(
2442
2442
if not isinstance (default_value , pa .Scalar ) and default_value is not None :
2443
2443
default_value = pa .scalar (default_value )
2444
2444
2445
- partition_cols = (
2446
- [col .expr for col in partition_by ] if partition_by is not None else None
2447
- )
2445
+ partition_by_raw = expr_list_to_raw_expr_list (partition_by )
2448
2446
order_by_raw = sort_list_to_raw_sort_list (order_by )
2449
2447
2450
2448
return Expr (
2451
2449
f .lead (
2452
2450
arg .expr ,
2453
2451
shift_offset ,
2454
2452
default_value ,
2455
- partition_by = partition_cols ,
2453
+ partition_by = partition_by_raw ,
2456
2454
order_by = order_by_raw ,
2457
2455
)
2458
2456
)
@@ -2462,8 +2460,8 @@ def lag(
2462
2460
arg : Expr ,
2463
2461
shift_offset : int = 1 ,
2464
2462
default_value : Optional [Any ] = None ,
2465
- partition_by : Optional [list [Expr ]] = None ,
2466
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2463
+ partition_by : Optional [list [Expr ] | Expr ] = None ,
2464
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2467
2465
) -> Expr :
2468
2466
"""Create a lag window function.
2469
2467
@@ -2494,25 +2492,23 @@ def lag(
2494
2492
if not isinstance (default_value , pa .Scalar ):
2495
2493
default_value = pa .scalar (default_value )
2496
2494
2497
- partition_cols = (
2498
- [col .expr for col in partition_by ] if partition_by is not None else None
2499
- )
2495
+ partition_by_raw = expr_list_to_raw_expr_list (partition_by )
2500
2496
order_by_raw = sort_list_to_raw_sort_list (order_by )
2501
2497
2502
2498
return Expr (
2503
2499
f .lag (
2504
2500
arg .expr ,
2505
2501
shift_offset ,
2506
2502
default_value ,
2507
- partition_by = partition_cols ,
2503
+ partition_by = partition_by_raw ,
2508
2504
order_by = order_by_raw ,
2509
2505
)
2510
2506
)
2511
2507
2512
2508
2513
2509
def row_number (
2514
- partition_by : Optional [list [Expr ]] = None ,
2515
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2510
+ partition_by : Optional [list [Expr ] | Expr ] = None ,
2511
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2516
2512
) -> Expr :
2517
2513
"""Create a row number window function.
2518
2514
@@ -2533,22 +2529,20 @@ def row_number(
2533
2529
partition_by: Expressions to partition the window frame on.
2534
2530
order_by: Set ordering within the window frame.
2535
2531
"""
2536
- partition_cols = (
2537
- [col .expr for col in partition_by ] if partition_by is not None else None
2538
- )
2532
+ partition_by_raw = expr_list_to_raw_expr_list (partition_by )
2539
2533
order_by_raw = sort_list_to_raw_sort_list (order_by )
2540
2534
2541
2535
return Expr (
2542
2536
f .row_number (
2543
- partition_by = partition_cols ,
2537
+ partition_by = partition_by_raw ,
2544
2538
order_by = order_by_raw ,
2545
2539
)
2546
2540
)
2547
2541
2548
2542
2549
2543
def rank (
2550
- partition_by : Optional [list [Expr ]] = None ,
2551
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2544
+ partition_by : Optional [list [Expr ] | Expr ] = None ,
2545
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2552
2546
) -> Expr :
2553
2547
"""Create a rank window function.
2554
2548
@@ -2574,22 +2568,20 @@ def rank(
2574
2568
partition_by: Expressions to partition the window frame on.
2575
2569
order_by: Set ordering within the window frame.
2576
2570
"""
2577
- partition_cols = (
2578
- [col .expr for col in partition_by ] if partition_by is not None else None
2579
- )
2571
+ partition_by_raw = expr_list_to_raw_expr_list (partition_by )
2580
2572
order_by_raw = sort_list_to_raw_sort_list (order_by )
2581
2573
2582
2574
return Expr (
2583
2575
f .rank (
2584
- partition_by = partition_cols ,
2576
+ partition_by = partition_by_raw ,
2585
2577
order_by = order_by_raw ,
2586
2578
)
2587
2579
)
2588
2580
2589
2581
2590
2582
def dense_rank (
2591
- partition_by : Optional [list [Expr ]] = None ,
2592
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2583
+ partition_by : Optional [list [Expr ] | Expr ] = None ,
2584
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2593
2585
) -> Expr :
2594
2586
"""Create a dense_rank window function.
2595
2587
@@ -2610,22 +2602,20 @@ def dense_rank(
2610
2602
partition_by: Expressions to partition the window frame on.
2611
2603
order_by: Set ordering within the window frame.
2612
2604
"""
2613
- partition_cols = (
2614
- [col .expr for col in partition_by ] if partition_by is not None else None
2615
- )
2605
+ partition_by_raw = expr_list_to_raw_expr_list (partition_by )
2616
2606
order_by_raw = sort_list_to_raw_sort_list (order_by )
2617
2607
2618
2608
return Expr (
2619
2609
f .dense_rank (
2620
- partition_by = partition_cols ,
2610
+ partition_by = partition_by_raw ,
2621
2611
order_by = order_by_raw ,
2622
2612
)
2623
2613
)
2624
2614
2625
2615
2626
2616
def percent_rank (
2627
- partition_by : Optional [list [Expr ]] = None ,
2628
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2617
+ partition_by : Optional [list [Expr ] | Expr ] = None ,
2618
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2629
2619
) -> Expr :
2630
2620
"""Create a percent_rank window function.
2631
2621
@@ -2647,22 +2637,20 @@ def percent_rank(
2647
2637
partition_by: Expressions to partition the window frame on.
2648
2638
order_by: Set ordering within the window frame.
2649
2639
"""
2650
- partition_cols = (
2651
- [col .expr for col in partition_by ] if partition_by is not None else None
2652
- )
2640
+ partition_by_raw = expr_list_to_raw_expr_list (partition_by )
2653
2641
order_by_raw = sort_list_to_raw_sort_list (order_by )
2654
2642
2655
2643
return Expr (
2656
2644
f .percent_rank (
2657
- partition_by = partition_cols ,
2645
+ partition_by = partition_by_raw ,
2658
2646
order_by = order_by_raw ,
2659
2647
)
2660
2648
)
2661
2649
2662
2650
2663
2651
def cume_dist (
2664
- partition_by : Optional [list [Expr ]] = None ,
2665
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2652
+ partition_by : Optional [list [Expr ] | Expr ] = None ,
2653
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2666
2654
) -> Expr :
2667
2655
"""Create a cumulative distribution window function.
2668
2656
@@ -2684,23 +2672,21 @@ def cume_dist(
2684
2672
partition_by: Expressions to partition the window frame on.
2685
2673
order_by: Set ordering within the window frame.
2686
2674
"""
2687
- partition_cols = (
2688
- [col .expr for col in partition_by ] if partition_by is not None else None
2689
- )
2675
+ partition_by_raw = expr_list_to_raw_expr_list (partition_by )
2690
2676
order_by_raw = sort_list_to_raw_sort_list (order_by )
2691
2677
2692
2678
return Expr (
2693
2679
f .cume_dist (
2694
- partition_by = partition_cols ,
2680
+ partition_by = partition_by_raw ,
2695
2681
order_by = order_by_raw ,
2696
2682
)
2697
2683
)
2698
2684
2699
2685
2700
2686
def ntile (
2701
2687
groups : int ,
2702
- partition_by : Optional [list [Expr ]] = None ,
2703
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2688
+ partition_by : Optional [list [Expr ] | Expr ] = None ,
2689
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2704
2690
) -> Expr :
2705
2691
"""Create a n-tile window function.
2706
2692
@@ -2725,15 +2711,13 @@ def ntile(
2725
2711
partition_by: Expressions to partition the window frame on.
2726
2712
order_by: Set ordering within the window frame.
2727
2713
"""
2728
- partition_cols = (
2729
- [col .expr for col in partition_by ] if partition_by is not None else None
2730
- )
2714
+ partition_by_raw = expr_list_to_raw_expr_list (partition_by )
2731
2715
order_by_raw = sort_list_to_raw_sort_list (order_by )
2732
2716
2733
2717
return Expr (
2734
2718
f .ntile (
2735
2719
Expr .literal (groups ).expr ,
2736
- partition_by = partition_cols ,
2720
+ partition_by = partition_by_raw ,
2737
2721
order_by = order_by_raw ,
2738
2722
)
2739
2723
)
@@ -2743,7 +2727,7 @@ def string_agg(
2743
2727
expression : Expr ,
2744
2728
delimiter : str ,
2745
2729
filter : Optional [Expr ] = None ,
2746
- order_by : Optional [list [Expr | SortExpr ]] = None ,
2730
+ order_by : Optional [list [Expr | SortExpr ] | Expr | SortExpr ] = None ,
2747
2731
) -> Expr :
2748
2732
"""Concatenates the input strings.
2749
2733
0 commit comments