@Roger Bieri:
在磚,你可以使用UserDefinedFunction創建一個自定義函數(UDF)功能,將應用於DataFrame。您可以使用此功能將WHERE子句添加到DataFrame基於用戶上下文。這裏有一個例子如何使用UDF將WHERE子句應用到DataFrame基於用戶上下文:
從pyspark.sql。函數從pyspark.sql進口udf。類型進口StringType #定義定製函數添加WHERE子句DataFrame def add_where_clause (user_context):如果user_context = =“context_1”:返回“column_1 > 10”elif user_context = =“context_2”:返回“column_2 < 100”:返回“#從自定義函數創建一個UDF add_where_clause_udf = UDF (add_where_clause, StringType()) #應用UDF DataFrame添加WHERE子句df = df基於用戶上下文。選擇(“*”,add_where_clause_udf (current_user ()) .alias (“where_clause”)) df_filtered = df.filter (df。where_clause ! = " ")
在這個例子中,add_where_clause是一個自定義函數,將用戶上下文作為輸入,並返回一個WHERE子句根據上下文字符串。add_where_clause_udf函數創建一個UDF的自定義函數。然後修改應用df DataFrame where_clause UDF創建一個新的列。最後,df_filtered DataFrame是由過濾行where_clause不是一個空字符串。您可以修改add_where_clause函數以適合您的特定的用例,並應用的UDF DataFrame添加WHERE子句基於用戶上下文。