首页 > 解决方案 > 如何在 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 时,它​​按预期工作,所以我唯一的问题似乎是我无法弄清楚如何在查询(我假设我应该这样做以允许数据工作室报告中的日期范围控制)。如何配置此日期范围对象,以便人们可以控制数据工作室报告中的日期范围标签?

编辑:为澄清起见,我知道如何在报告中添加日期范围控件。问题是,即使传入了日期范围查询参数,查询也不会返回任何数据。

标签: sqlgoogle-apps-scriptgoogle-bigquerygoogle-data-studio

解决方案


我最终修复了我的 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

完美地工作


推荐阅读