@@ -15,37 +15,24 @@ def q(project_id: str, dataset_id: str, session: bigframes.Session):
1515 )
1616
1717 country_codes = ["13" , "31" , "23" , "29" , "30" , "18" , "17" ]
18-
1918 customer ["CNTRYCODE" ] = customer ["C_PHONE" ].str .slice (0 , 2 )
19+ customer = customer [customer ["CNTRYCODE" ].isin (country_codes )]
2020
2121 avg_acctbal = (
22- customer [
23- (customer ["CNTRYCODE" ].isin (country_codes )) & (customer ["C_ACCTBAL" ] > 0 )
24- ][["C_ACCTBAL" ]]
22+ customer [customer ["C_ACCTBAL" ] > 0.0 ][["C_ACCTBAL" ]]
2523 .mean ()
2624 .rename ("AVG_ACCTBAL" )
2725 )
28-
29- orders_unique = orders ["O_CUSTKEY" ].unique (keep_order = False ).to_frame ()
30-
31- matched_customers = customer .merge (
32- orders_unique , left_on = "C_CUSTKEY" , right_on = "O_CUSTKEY"
33- )
34- matched_customers ["IS_IN_ORDERS" ] = True
35-
36- customer = customer .merge (
37- matched_customers [["C_CUSTKEY" , "IS_IN_ORDERS" ]], on = "C_CUSTKEY" , how = "left"
38- )
39- customer ["IS_IN_ORDERS" ] = customer ["IS_IN_ORDERS" ].fillna (False )
4026 customer = customer .merge (avg_acctbal , how = "cross" )
4127
42- filtered_customers = customer [
43- (customer ["CNTRYCODE" ].isin (country_codes ))
44- & (customer ["C_ACCTBAL" ] > customer ["AVG_ACCTBAL" ])
45- & (~ customer ["IS_IN_ORDERS" ])
46- ]
28+ filtered_customer = customer [customer ["C_ACCTBAL" ] > customer ["AVG_ACCTBAL" ]]
4729
48- result = filtered_customers .groupby ("CNTRYCODE" , as_index = False ).agg (
30+ orders_unique = orders ["O_CUSTKEY" ].unique (keep_order = False ).to_frame ()
31+ filtered_customer = filtered_customer .merge (
32+ orders_unique , left_on = "C_CUSTKEY" , right_on = "O_CUSTKEY" , how = "left"
33+ )
34+ filtered_customer = filtered_customer [filtered_customer ["O_CUSTKEY" ].isnull ()]
35+ result = filtered_customer .groupby ("CNTRYCODE" , as_index = False ).agg (
4936 NUMCUST = bpd .NamedAgg (column = "C_CUSTKEY" , aggfunc = "count" ),
5037 TOTACCTBAL = bpd .NamedAgg (column = "C_ACCTBAL" , aggfunc = "sum" ),
5138 )
0 commit comments