如何处理 where 语句中 DATE 类型列中的 NULL 值

how to handle NULL values in DATE type column on where statement

我 运行 下面 Python 到 Google BigQuery 中的 SQL 但是我得到了错误 BadRequest: 400 Could not cast literal "" to type DATE 我想检查 cv_date 列中与 luid 同一行的数据是否存在,如果存在,则 return 为真。 cv_date 列是 DATE 类型。我试过使用 cv_date IS NOT NULL 但没有用。任何人有想法??或者我需要改变这个 SQL ??

的逻辑
from flask import Flask, request
from google.cloud import bigquery


app = Flask(__name__)


@app.route('/')
def get_request():
    request_luid = request.args.get('luid') or ''
    client = bigquery.Client()
    query = """SELECT EXISTS(
                    SELECT 1
                    FROM `test-266778.conversion_log.conversion_log_2020*` as p
                    WHERE p.luid = '{}' 
                    AND p.cv_date != '' limit 1000)""".format(request_luid)

    
    job_config = bigquery.QueryJobConfig(
        query_parameters=[
            bigquery.ScalarQueryParameter("request_luid", "STRING", request_luid)
        ]
    )
    
    query_job = client.query(query)
    query_res = query_job.result()
     
     for row in query_res:
        return str(row[0])
       
        


if __name__ == "__main__":
    app.run()


如果我没记错的话,您想检查具有特定 luid 的每一行的 Date 列是否存在。

继续我的 public bigquery 数据示例,我相信您想要类似于以下内容的内容:

SELECT load_id,report_date IS NOT NULL as date
FROM `bigquery-public-data.austin_waste.waste_and_diversion` as p
limit 1000

对于特定的流体,在您的情况下类似于

"""SELECT luid,cv_date IS NOT NULL as date
FROM `<project-id>.conversion_log.conversion_log_2020*` as p
where p.luid = '{}' 
limit 1000""".format(request_luid)