Почему запрос действителен для sample_commits, но не для коммитов в общедоступном наборе данных github_repos? - PullRequest
1 голос
/ 06 ноября 2019

Я столкнулся с каким-то странным поведением Google BigQuery. Набор данных bigquery-public-data.github_repos содержит таблицы commits и sample_commits. Схема таблиц должна быть одинаковой, разница только в размере таблицы, поэтому можно разрабатывать запросы, не тратя впустую ограниченные данные.

Когда я запускаю приведенный ниже запрос на примере данных, я получаюправильный результат 10 коммитов:

SELECT 
  commit AS commit, 
  repo_name AS repo_name,
  committer.date AS date
FROM 
  `bigquery-public-data.github_repos.sample_commits`
WHERE 
  repo_name = "torvalds/linux"
LIMIT 10

Странно то, что когда я запускаю запрос на большой таблице commits, я получаю сообщение об ошибке:

SELECT 
  commit AS commit, 
  repo_name AS repo_name,
  committer.date AS date
FROM 
  `bigquery-public-data.github_repos.commits`
WHERE 
  repo_name = "torvalds/linux"
LIMIT 10

Ошибкаполученное сообщение:

Нет соответствующей подписи для оператора = для типов аргументов: ARRAY, STRING. Поддерживаемые подписи: ЛЮБОЙ = ЛЮБОЙ в [8: 3]

Из таблицы схемы я также знаю, что repo_name имеет тип STRING, поэтому эта ошибка меня сильно смущает.

1 Ответ

2 голосов
/ 06 ноября 2019

Поле repo_name имеет тип данных STRING NULLABLE в bigquery-public-data.github_repos.sample_commits таблице

, тогда как то же поле в bigquery-public-data.github_repos.commits таблице имеет тип данных STRING REPEATD

Попробуйте вместо этого вместо

SELECT 
  commit AS commit, 
  repo_name AS repo_name,
  committer.date AS DATE
FROM 
  `bigquery-public-data.github_repos.commits`
WHERE 
  'torvalds/linux' IN UNNEST(repo_name)
LIMIT 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...