この機能を変更して複数の「フィルタ」を可能にする最良の方法は何ですか? 'filter_column'パラメータは1つ以上の値にすることができます。各値はrequest.filters
引数に渡す必要があります。私は複数のフィルタを作成したい場合はどうfilter_column
シングルとfilter_values
関数内の任意の数のパラメータを許可していますか?
create_data_policy(dataset_id=123, filter_column='employee_name', filter_value='Jane', user_id='1243')
のリストを定義した場合
def create_data_policy(dataset_id, filter_column, filter_value, user_id):
filter = PolicyFilter()
filter.column = filter_column
filter.operator = FilterOperator.EQUALS
filter.values = [filter_value]
request = Policy()
request.filters = [filter]
request.name = f'Filter | {filter_value}'
request.type = PolicyType.USER
request.users = [user_id]
この機能が正常に動作しますか? request.filtersは、潜在的なフィルタのリストを受け入れます。
request.filters = [filter1, filter2, filter3]
編集 - ここではkwargsを使用して実装したソリューションです。どのようにキー、値をループしてリストに追加したのかはわかりますか?
def test_func(dataset_id, **kwargs):
final_pdp = []
for key, value in kwargs.items():
pdp_filter = f'{key}_filter'
pdp_filter = PolicyFilter()
pdp_filter.column = key
pdp_filter.operator = FilterOperator.EQUALS
pdp_filter.values = [f'{key}: {value}']
pdp_filter.values = value
final_pdp.append(pdp_filter)
pdp_request = Policy()
pdp_request.filters = final_pdp
pdp_request.type = PolicyType.USER
pdp = create_pdp(dataset_id, pdp_request)
print(f"Created a Personalized Data Policy (PDP): {pdp['id']}")
test_func(dataset_id='test', project=['Test'], location=['NY'])
私はargsとkwargsの周りに私の頭を包んだことはありませんでしたが、私はそれを試しました(確かに、私はちょうどそれが正しいと思われるまで何度も結果を何度も印刷し続けました)。私はあなたが見て気にしない場合は、私の最終的なソリューションを上に貼り付けた。 – trench
@trench完全な文脈を知らなくても、編集は大体私にとって大丈夫です。 'pdp_filter.values = [f '{key}:{value}'}'を設定してすぐに 'pdp_filter.values = value'に上書きします。 'pdp_filter = f '{key} _filter''と' pdp_filter = PolicyFilter() 'と同じです。 'PolicyFilter()'の場合、コンストラクタはカラム、演算子、および値を受け入れることができるので、4ではなく1つの文でオブジェクトを作成できますか? – earmouse
最終的には、kwargs.items()の 'final_pdb = [PolicyFilter(column = key、operator = FilterOperator.EQUALS、values = value) – earmouse