Tyl*_*hon 2 sql google-apps-script google-bigquery looker-studio
我正在尝试使用 Google Data Studio 的高级服务创建一个社区连接器来连接到我的 BigQuery 数据表。连接器已全部设置完毕,我的 getData 函数返回一个查询,如下所示:
var sqlString = "SELECT * FROM `PROJECT.DATASET.TABLE` WHERE " +
"DATE(timestamp) >= @startDate AND DATE(timestamp) <= @endDate;"
Run Code Online (Sandbox Code Playgroud)
其中 PROJECT、DATASET 和 TABLE 填写各自的 ID。“时间戳”字段是我的 TIMESTAMP 类型数据表中的 BigQuery 字段。
在我的 getConfig 函数中,我设置配置以将日期范围对象添加到传递到 getData 的请求中:
function getConfig() {
...
config.setDateRangeRequired(true);
...
}
Run Code Online (Sandbox Code Playgroud)
然后,我在 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)
}
Run Code Online (Sandbox Code Playgroud)
当我在报表中运行此连接器时,它会连接到 BigQuery 甚至查询表,但它不会返回任何数据。当我将 @startDate 和 @endDate 替换为格式为“yyyy-mm-dd”的字符串文字时,它按预期工作,所以看来我唯一的问题是我无法弄清楚如何在查询(我认为我应该这样做以允许数据工作室报告中的日期范围控制)。如何配置此日期范围对象,以便人们可以控制数据工作室报告中的日期范围标签?
编辑:为了澄清,我知道如何在报告上添加日期范围控件。问题在于,即使传入日期范围查询参数,查询也不会返回任何数据。
我最终修复了我的 SQL 查询。我将 WHERE 条件设为
WHERE DATE(requestTimestamp) BETWEEN @startDate AND @endDate
Run Code Online (Sandbox Code Playgroud)
它实际上正确返回了数据。我没有提到我在查询中使用的另一个参数,因为我认为它不相关,但我在另一个条件参数周围有引号,这可能会搞砸查询。之前的情况更像是:
WHERE id = '@id' AND DATE(requestTimestamp) BETWEEN @startDate AND @endDate
Run Code Online (Sandbox Code Playgroud)
我认为在 @id 周围加引号是问题所在,因为将查询更改为:
WHERE id = @id AND DATE(requestTimestamp) BETWEEN @startDate AND @endDate
Run Code Online (Sandbox Code Playgroud)
工作完美
| 归档时间: |
|
| 查看次数: |
2835 次 |
| 最近记录: |