【问题标题】:How to include date range in SQL query for Data Studio BigQuery community connector如何在 Data Studio BigQuery 社区连接器的 SQL 查询中包含日期范围
【发布时间】:2020-12-17 13:25:06
【问题描述】:

我正在尝试使用 Google 数据洞察中的高级服务创建一个社区连接器,以连接到我的 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 google-apps-script google-bigquery google-data-studio


    【解决方案1】:

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

    完美运行

    【讨论】:

    • 正确。在@id 周围加上引号是个问题。
    【解决方案2】:

    您可以使用日期范围控件并为其配置时间戳字段。它应该会自动选择时间戳类型字段。

    转到Insert 并选择Date range control 将其添加到您的报告中。

    您可以在查看模式下选择日期范围。

    这样,

    【讨论】:

    • 我不确定我是否理解您的回复。我在问如何在连接器的 getData 函数中配置日期范围控件。如您所见,我已经在 getConfig 中配置了日期范围控制。 “为其配置时间戳字段”是什么意思?我需要在我的 SQL 查询中包含日期范围吗?
    • 如果对您有帮助,我添加了一些屏幕截图。但是您也应该能够从源本身过滤数据。我可以对 CloudSQL 进行过滤查询。
    • 我知道数据工作室报表前端的日期范围控制是如何工作的。我的问题是我的查询没有返回任何数据,即使我在报告上设置了日期范围控制。例如,如果我在查询中手动添加诸如“2020-08-23”之类的常量日期而不是 startDate 和 endDate,那么它可以完美运行。但是当我传入日期参数​​时,它不起作用......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多