Google Big Query和Tableau

时间:2017-03-14 08:27:28

标签: google-bigquery tableau

我在Google Big Query中有几个大表。每个表包含相同的列。这些表按月分开。例如。 all_relevant_data_January,all_relevant_data_february等。

我希望将所有这些数据导入Tableau以显示在仪表板中,但只能使用过滤器或参数一次调用1个月。这样就只返回该月份的数据。

我可以在tableau中创建一个自定义sql连接,它使用一个参数来只调用我需要的表。例如。

选择*来自 All_relevant_data_ * 其中monthyear = [月参数]

或者我最好将它全部转储到1个表中然后使用参数?例如

选择*来自 All_relevant_data_all_months 其中monthyear = [月参数]

如果我这样做,它会将所有数据加载到画面中,还是只调用我在仪表板中选择的月份?

我一直在使用tabledaterange在tableau中挣扎,如果这是一个选项,我不知道如何做到这一点。

任何帮助都很受欢迎。

感谢。

1 个答案:

答案 0 :(得分:0)

听起来你对wildcard tables感兴趣。大多数未利用partitioned tables的用户的表格都设置了后缀,例如201701012017020120170301等。如果是这种情况的话同样,您可以编写如下查询:

SELECT * FROM `All_relevant_data_*`
WHERE _TABLE_SUFFIX BETWEEN '20170101' AND '20170301';

如果您的表格确实有JanuaryFebruary等后缀,您仍然可以使此方法有效,例如通过从名称中提取月份数字:

SELECT * FROM `All_relevant_data_*`
WHERE EXTRACT(MONTH FROM PARSE_DATE('%B', _TABLE_SUFFIX)) BETWEEN
  1 AND 3;

如果您想要一个返回月份列的查询,以便单独过滤它,您可以使用以下修改后的表单之一:

-- Assumes that _TABLE_SUFFIX is e.g. 20170314
SELECT *, PARSE_DATE('%Y%m%d', _TABLE_SUFFIX) AS date
FROM `All_relevant_data_*`;

或者:

-- Assumes that _TABLE_SUFFIX is e.g. January
SELECT *, EXTRACT(MONTH FROM PARSE_DATE('%B', _TABLE_SUFFIX)) AS month_number
FROM `All_relevant_data_*`;