What is the best way to modify this function to allow for multiple 'filters'? the 'filter_column' parameter can be one or more values. Each value would need to be passed into the request.filters
argument.
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]
This function works fine if I define a single filter_column
and a list of filter_values
create_data_policy(dataset_id=123, filter_column='employee_name', filter_value='Jane', user_id='1243')
What if I want to create multiple filters? The request.filters accepts a list of potential filters.
request.filters = [filter1, filter2, filter3]
Edit - here is the solution I implemented using kwargs. Does it make sense how I looped through the key, value and appended them to a list?
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'])