如何将日期作为变量嵌入到 Google 广告查询语言中?

How to embed date as variable into Google Ads Query Language?

我正在使用 python 执行查询并从 Google 广告检索数据 我正在尝试将开始和结束日期设置为变量并在我的查询中使用它们。

查询如下所示:

GAquery = """
SELECT
    segments.date,
    segments.device,
    campaign.name,
    metrics.clicks,
    metrics.conversions,
    metrics.conversions_value,
    metrics.cost_micros,
    metrics.impressions
FROM
   campaign WHERE segments.date >= '2021-12-01' AND segments.date <= '2022-02-27'
ORDER BY
    metrics.clicks DESC"""

它由 Google 函数执行 Python

response = ga_service.search_stream(customer_id=customer_id, query=GAquery)

此函数没有元素参数,我可以在其中使用 %s 作为查询中的占位符,然后在参数中定期调用它 execute(sql,conn, params[Sdate,Edate] function in python.

所以我需要做的是以某种方式打破查询字符串,并在两者之间添加日期。像这样:

sdate = (dt.date.today() - dt.timedelta(days=60))
edate = dt.date.today()

GAquery = """
SELECT
    segments.date,
    segments.device,
    campaign.name,
    metrics.clicks,
    metrics.conversions,
    metrics.conversions_value,
    metrics.cost_micros,
    metrics.impressions
FROM
   campaign WHERE segments.date """ + """>= """+ str(sdate) +""" AND segments.date""" +  """<=""" +str(edate) + """
ORDER BY
    metrics.clicks DESC"""

所以基本上我试图通过将查询分开插入并将其拼接在一起来强制变量进入 GAquery。

它失败了,因为我没有正确地破坏它,也没有正确地将它重新组合在一起。

知道如何处理这个吗?

对我来说,您似乎缺少 GAQL 中日期文字所需的单引号。 为了参数化查询,您可以使用格式化的字符串文字(假设您使用的是 Python 3.6 或更新版本)并执行类似

的操作
GAquery = f"""
    SELECT
        ...
    FROM
        ...
    WHERE
        segments.date >= '{str(sdate)}' AND segments.date <= '{str(edate)}'
    ORDER BY
        ...
"""