2017-03-14 96 views
0

我在Google Big Query中有几个大型表格。每个表格都包含相同的列。表格按月分开。例如。 all_relevant_data_anuary,all_relevant_data_february等Google Big Query和Tableau

我想将所有数据都放到Tableau中以显示在仪表板中,但每次只能使用过滤器或参数调用1个月。这是这样,那个月的数据才会被返回。

我可以在tableau中使用参数仅调用我需要的表创建自定义sql连接。例如。

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

还是我更好地转储这一切在1个表中,然后使用一个参数*?例如

选择 All_relevant_data_all_months *如果monthyear = [月参数]

如果我要做到这一点,将其加载所有的数据到画面还是会只调用我在仪表板中选择哪个月?

我一直在tableau的tabledaterange奋斗,不知道如何做到这一点,如果这是一个选项。

任何帮助很好地收到。

感谢。

回答

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_*`; 
+0

谢谢艾略特。那么我将如何选择我需要的月份?这是通过使用过滤器还是参数来减少进入的数据量 –

+0

我添加了几个可能适用于您的示例。我对Tableau不是很熟悉,但我假设您可以使用其中的一个,并在'date'或'month_number'上添加一个筛选器,具体取决于您使用哪一个筛选器。 –

+0

谢谢。我将在稍后尝试这种方式 –