Your company is using WILDCARD tables to query data across multiple tables with similar names. The SQL statement is currently failing with the following error:
Which table name will make the SQL statement work correctly?
let's forget the fact that in BQ is used ` instead than ' which retrieves an error in any case. ` is called backquote, backtick, or left quote while ' is simply an apostrophe. Let's consider ' to be ` in every answer, since moderators could have not been aware of such when they had received the question.
Who used BQ knows that the backquote is necessary only for the project name, while it can be used for the whole string, and necessary only when the project name contains special (special in this specific context) characters.
- is a special character. so
`bigquery-public-data`.noaa_gsod.gsod1940
would have worked too.
The question now turns out to be
`bigquery-public-data`.noaa_gsod.gsod*
still works or due to the * presence we need to write
`bigquery-public-data.noaa_gsod.gsod*`
?
I personally do not remember, and I do not have a BQ at my disposal at the moment.
But I know for sure that
`bigquery-public-data.noaa_gsod.gsod*`
works while
`bigquery-public-data`.noaa_gsod.gsod*
is not in the options.
Option D (assuming to have backticks)
Refer: https://cloud.google.com/bigquery/docs/querying-wildcard-tables
The following query is NOT valid because it isn't properly quoted with backticks:
```
#standardSQL
/* Syntax error: Expected end of statement but got "-" at [4:11] */
SELECT
max
FROM
# missing backticks
bigquery-public-data.noaa_gsod.gsod*
WHERE
max != 9999.9 # code for missing data
AND _TABLE_SUFFIX = '1929'
ORDER BY
max DESC
```
Reference: https://cloud.google.com/bigquery/docs/querying-wildcard-tables
The wildcard table name contains the special character (*), which means that you must enclose the wildcard table name in backtick (`) characters. For example, the following query is valid because it uses backticks:
#standardSQL
/* Valid SQL query */
SELECT
max
FROM
`bigquery-public-data.noaa_gsod.gsod*`
WHERE
max != 9999.9 # code for missing data
AND _TABLE_SUFFIX = '1929'
ORDER BY
max DESC
Few might go with the Option B which will be a blunder because of the below reason.
While querying the tables or views with the name, it is optional to surround with the backticks. But while querying the list of tables with Wild card character, it is must to surround with the backticks.
We can get the Syntax error: Expected end of input but got "*" with the below query
SELECT * FROM bigquery-public-data.noaa_gsod.gsod*
WHERE _TABLE_SUFFIX = "2024"
So, option D might be the correct one, provided if there is a typo.
Answer is 'D'
Reference : https://cloud.google.com/bigquery/docs/wildcard-table-reference
Enclose table names with wildcards in backticks
The wildcard table name contains the special character (*), which means that you must enclose the wildcard table name in backtick (`) characters.
A voting comment increases the vote count for the chosen answer by one.
Upvoting a comment with a selected answer will also increase the vote count towards that answer by one.
So if you see a comment that you already agree with, you can upvote it instead of posting a new comment.
Ender_H
Highly Voted 2 years, 2 months agoDavijde13
1 year, 10 months agojitvimol
11 months agovaga1
Most Recent 2 months agovaga1
1 year, 6 months agortcpost
2 months agoRT_G
2 months agoABKR1300
2 months agoChintu_573
5 months agodsyouness
6 months, 1 week agoRT_G
1 year agoaxantroff
1 year agoPavaan
1 year, 6 months agoMelampos
1 year, 7 months agohkhnhan
1 year, 8 months agohkhnhan
1 year, 8 months agoZosby
1 year, 9 months agopriluft
2 years, 2 months agoAWSandeep
2 years, 2 months ago