![](/img/trans.png)
[英]Slot Filling -- Only prompting page parameter fulfillment when parameter is empty
[英]Array parameter, select all when the parameter is empty
我正在使用 Google BigQuery 和 Django 來制作將從數據庫返回數據的參數化端點。
我正在使用數組作為參數,使用ArrayQueryParameter()
根據多個職位過濾數據。
目前我正在過濾這樣的數據:
# Query
...
WHERE jobtitle in UNNEST(@jobtitle_param)
# param and building the query
jobtitle_param = self.request.query_params.get('jobs').split(',') if self.request.query_params.get('jobs') else ["%"]
...
job_config = bigquery.QueryJobConfig(
query_parameters=[
bigquery.ArrayQueryParameter("jobtitle_param", "STRING", jobtitle_param),
]
)
當職位參數未傳遞到端點時,我想返回所有職位的數據,如%
所做的那樣:
WHERE something LIKE "%"
未傳遞參數jobs
時返回所有職位數據的最佳方法是什么?
所以我通過更改查詢來解決這個問題:
...
WHERE jobtitle in UNNEST(@jobtitle_param)
至:
WHERE EXISTS (
SELECT 1
FROM UNNEST(@jobtitle_param) AS jobs
WHERE jobtitle LIKE jobs
並將參數的默認值設置為通配符%
,如下所示:
jobtitle_param = self.request.query_params.get('jobs').split(',') if self.request.query_params.get('jobs') else "%".split(' ')
演出晚了,但我解決這個問題的方法是創建一個條件,如果參數列表為空,特別是ARRAY_LENGTH(@my_array) = 0
,則評估為True
。 在您的情況下,結果將是
...
WHERE (jobtitle in UNNEST(@jobtitle_param) OR ARRAY_LENGTH(@jobtitle_param) = 0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.