【问题标题】:Selecting entire tables based on wildcard name values SQL - Tableau根据通配符名称值 SQL 选择整个表 - Tableau
【发布时间】:2021-08-30 05:23:54
【问题描述】:

我要做的是根据这些表的名称从 Google Big Query 数据集中提取表的子集,然后将这些表添加到 Tableau 数据源,而无需连接或联合任何表.

我想从下面的数据集中提取所有以 System_1 开头的表

  1. System_1_Start
  2. System_1_Middle
  3. System_1_End
  4. System_2_Start
  5. System_2_Middle
  6. System_2_End
  7. System_3_Start
  8. System_3_Middle
  9. System_3_End

我已经能够使用 Information_Schema.Tables 进行通配符搜索以获取以 System_1 开头的表的所有名称,但我无法找到一种方法来获取具有这些名称的所有表作为输出查询(下面的 SQL)

SELECT table_name
AS matchingTables
FROM dataset.INFORMATION_SCHEMA.TABLES
WHERE table_name LIKE 'System_1%'

如何提取这些表而不仅仅是这些表的名称?

~~~~~~~~~~~编辑~~~~~~~~~~~~~

这是我如何做到这一点的最佳近似值,但我得到了一个奇怪的数据集未找到错误

SELECT *
FROM dataset
WHERE (SELECT table_name FROM dataset.INFORMATION_SCHEMA.TABLES)
LIKE 'System_1%'

收到错误:

未找到:数据集数据集:在欧盟位置未找到数据集

【问题讨论】:

  • 据我所知,您需要将查询构造为字符串并执行查询——您不能使用简单的select 来做到这一点。基本问题是您将数据存储在多个应该都在一个表中的表中。

标签: sql google-bigquery tableau-api


【解决方案1】:

如果我理解正确,您需要数据集中以“System_1_”开头的表名列表。您可以通过以下方式获得:

SELECT CONCAT("System_1_", _TABLE_SUFFIX) AS table_name
FROM `dataset.System_1_*`

【讨论】:

  • 是的,不是的,我最初希望能够在不连接或合并表的情况下提取任何前缀为“System_1_”的表,因为它们中会有不同的列。现在,我决定从表中选择任何公共列,并在其中添加带有上述解决方案的列,以确定任何给定行来自哪个表。它不那么优雅,因为这意味着我不能像我希望的那样单独对待每张桌子,但它确实适用于一般情况。
猜你喜欢
  • 1970-01-01
  • 2020-03-23
  • 2018-12-04
  • 1970-01-01
  • 2018-06-04
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多