标准SQL查询在BigQuery中返回正确结果,但在DataStudio中不返回正确结果

标准SQL查询在BigQuery中返回正确结果,但在DataStudio中不返回正确结果,sql,google-bigquery,google-data-studio,Sql,Google Bigquery,Google Data Studio,我需要返回一个名称列表,其中的参数介于两个日期之间。作为数据验证的一部分,我硬编码了两个日期。我在BigQuery中的sql查询如下: declare DS_START_DATE FLOAT64; declare DS_END_DATE FLOAT64; SET DS_START_DATE = 1578390532050; SET DS_END_DATE = 1578391211289; SELECT DISTINCT Name AS block_names FROM my_dat

我需要返回一个名称列表,其中的参数介于两个日期之间。作为数据验证的一部分,我硬编码了两个日期。我在BigQuery中的sql查询如下:

declare DS_START_DATE FLOAT64;
declare DS_END_DATE FLOAT64;

SET DS_START_DATE = 1578390532050;
SET DS_END_DATE =  1578391211289;

SELECT DISTINCT
  Name AS block_names
FROM
  my_data_source
LEFT JOIN
  UNNEST (holes) AS n_holes
ON
  1=1
  WHERE
  (n_holes.LastModifiedHoleDate ) > CAST(DS_START_DATE as FLOAT64)
  AND n_holes.LastModifiedHoleDate < CAST(DS_END_DATE as FLOAT64)
声明DS\U开始日期浮点数64;
宣布日期为64;
设置DS_开始日期=1578390532050;
设置DS_结束日期=157839121289;
选择不同的
以块名称命名
从…起
我的数据源
左连接
UNNEST(孔)作为n_孔
在…上
1=1
哪里
(n_holes.lastModifiedHolidate)>铸造(开始日期为FLOAT64)
和n_孔。最后修改的OLEDATE<铸造(结束日期为浮动64)
注意:DS_开始日期和DS_结束日期均为UNIX时间

所以基本上,我查询的是1月7日修改的结果,它只返回一个结果

上面的查询只返回一个结果,这是正确的

我稍微更改了查询的格式,以便可以在从DataStudio连接到BigQuery中的表时使用它:

SELECT DISTINCT
  Name AS block_names,
n_holes.LastModifiedHoleDate as LM
FROM
  my_data_source
LEFT JOIN
  UNNEST (holes) AS n_holes
ON
  1=1
  WHERE
  (n_holes.LastModifiedHoleDate ) >= CAST(@DS_START_DATE as FLOAT64)
  AND n_holes.LastModifiedHoleDate <= CAST(@DS_END_DATE as FLOAT64)
选择DISTINCT
名称为块名称,
n_孔。最后修改为LM
从…起
我的数据源
左连接
UNNEST(孔)作为n_孔
在…上
1=1
哪里
(n_holes.lastModifiedHolidate)>=铸造(@DS_开始日期为FLOAT64)

和n_holes.LastModifiedHoleDate如果要将@DS_START_DATE和@DS_END_DATE与Unix时间戳进行比较,则需要将它们转换为Unix时间戳。对我来说,这确实起到了作用:

WHERE
n_holes.LastModifiedHoleDate >= UNIX_MILLIS(PARSE_TIMESTAMP('%Y%m%d', @DS_START_DATE))
AND n_holes.LastModifiedHoleDate <= UNIX_MILLIS(PARSE_TIMESTAMP('%Y%m%d', @DS_END_DATE))
在哪里
n_holes.LastModifiedHoleDate>=UNIX_毫秒(解析时间戳(“%Y%m%d”,@DS_开始日期))

我注意到在BQ查询中使用了>和<,但在DataStudio中使用了>=和Hey。谢谢你指出这一点。我更改了DataStudio查询以匹配BigQuery查询,但它仍然返回了不正确的结果。您应该在unix时代使用
int64