sql - 如何在 Data Studio BigQuery 社区连接器的 SQL 查询中包含日期范围
问题描述
我正在尝试使用 Google Data Studio 中的高级服务创建一个社区连接器,以连接到我的 BigQuery 数据表。连接器已全部设置好,我的 getData 函数返回如下查询:
var sqlString = "SELECT * FROM `PROJECT.DATASET.TABLE` WHERE " +
"DATE(timestamp) >= @startDate AND DATE(timestamp) <= @endDate;"
其中 PROJECT、DATASET 和 TABLE 填写了它们各自的 ID。“时间戳”字段是我的 TIMESTAMP 类型数据表中的 BigQuery 字段。
在我的 getConfig 函数中,我正在设置配置以将 daterange 对象添加到传递给 getData 的请求中:
function getConfig() {
...
config.setDateRangeRequired(true);
...
}
然后,我在 getData 函数中返回社区连接器对象(在下面的代码中定义为“cc”变量),设置 sql 字符串、startDate 和 endDate 的查询参数以及其他一些必要信息:
function getData(request) {
...
return cc
.newBigQueryConfig()
.setAccessToken(accessToken) // defined earlier
.setBillingProjectId(billingProjectId) // defined earlier
.setUseStandardSql(true)
.setQuery(sqlString)
.addQueryParameter('startDate', bqTypes.STRING,
request.dateRange.startDate)
.addQueryParameter('endDate', bqTypes.STRING,
request.dateRange.endDate)
}
当我在报表中运行此连接器时,它会连接到 BigQuery 甚至查询表,但它不会返回任何数据。当我用格式为“yyyy-mm-dd”的字符串文字替换@startDate 和@endDate 时,它按预期工作,所以我唯一的问题似乎是我无法弄清楚如何在查询(我假设我应该这样做以允许数据工作室报告中的日期范围控制)。如何配置此日期范围对象,以便人们可以控制数据工作室报告中的日期范围标签?
编辑:为澄清起见,我知道如何在报告中添加日期范围控件。问题是,即使传入了日期范围查询参数,查询也不会返回任何数据。
解决方案
我最终修复了我的 SQL 查询。我将 WHERE 条件设为
WHERE DATE(requestTimestamp) BETWEEN @startDate AND @endDate
它实际上正确地返回了数据。我没有提到我在查询中使用的另一个参数,因为我认为它无关紧要,但是我在另一个条件参数周围加上了引号,这可能搞砸了查询。之前的情况更像是:
WHERE id = '@id' AND DATE(requestTimestamp) BETWEEN @startDate AND @endDate
我认为在@id 周围加上引号是问题所在,因为将查询更改为:
WHERE id = @id AND DATE(requestTimestamp) BETWEEN @startDate AND @endDate
完美地工作
推荐阅读
- java - 通过带有参数表的注释选择 CDI bean
- javascript - 绑定数组的对象数组
- android - CardViews 未显示在 RecyclerView 中
- sql - 列被随机删除Postgres?
- c# - 检测 .NET Framework 功能和 WCF 服务
- r - 不同目录中的同时 R 会话
- javascript - Angular 6如何在表单内制作所有输入的不可编辑元素
- java - 是否可以创建一个哈希映射,其中每个值都是对对象有不同作用的方法
- windows-7 - 是否可以使用 Windows cmd 在 Notepad++ 中输入 SecurePad 插件的密码?[编辑]
- eclipse - 从 Github 父/子 pom 在 Eclipse 中创建新项目?