首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在大型查询中传递动态日期变量

在大型查询中传递动态日期变量
EN

Stack Overflow用户
提问于 2022-07-28 11:26:05
回答 2查看 365关注 0票数 0

我试图在python中运行这个bigQuery

代码语言:javascript
复制
  start_date= "2022-03-08"
  end_date = "2022-05-03"
  query = f"""
    SELECT SUM(CostInBillingCurrency) as cost,EXTRACT(MONTH from date) as MONTH, SubscriptionId, SubscriptionName
    FROM `table_name`
    WHERE
    Date BETWEEN TIMESTAMP({start_date})
    AND TIMESTAMP({end_date})
    GROUP BY
    SubscriptionId, SubscriptionName,MONTH """

这是我正在犯的错误:

代码语言:javascript
复制
google.api_core.exceptions.BadRequest: 400 No matching signature for function TIMESTAMP for argument types: INT64. Supported signatures: TIMESTAMP(STRING, [STRING]); TIMESTAMP(DATE, [STRING]); TIMESTAMP(DATETIME, [STRING]); TIMESTAMP(TIMESTAMP) at [5:18]

如果我将日期硬编码为:

代码语言:javascript
复制
  Date BETWEEN TIMESTAMP("2022-06-01")
  AND TIMESTAMP("2022-06-30")

效果很好。所以这个查询是对的。

请帮助弄清楚如何动态传递日期。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-28 11:30:58

你得加引号。如果您执行result = f'TIMESTAMP({start_date})',它将呈现给TIMESTAMP(2022-06-01)。因此,将其更改为result = f'TIMESTAMP("{start_date}")result = f"TIMESTAMP('{start_date}')",您应该会很好。

票数 1
EN

Stack Overflow用户

发布于 2022-07-28 11:34:54

该变量似乎只是在查询中放置值,但查询需要字符串,您可以按如下方式更新查询

代码语言:javascript
复制
query = f"""
SELECT SUM(CostInBillingCurrency) as cost,EXTRACT(MONTH from date) as MONTH, SubscriptionId, SubscriptionName
FROM `table_name`
WHERE
Date BETWEEN TIMESTAMP("{start_date}")
AND TIMESTAMP("{end_date}")
GROUP BY
SubscriptionId, SubscriptionName,MONTH """
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73152096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档