如何在 Data Studio BigQuery 社区连接器的 SQL 查询中包含日期范围

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”的字符串文字时,它按预期工作,所以看来我唯一的问题是我无法弄清楚如何在查询(我认为我应该这样做以允许数据工作室报告中的日期范围控制)。如何配置此日期范围对象,以便人们可以控制数据工作室报告中的日期范围标签?

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

Tyl*_*hon 5

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

工作完美