BigQuery удаляет повторяющиеся имена столбцов при присоединении к FULL JOIN + USING - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть две таблицы BigQuery с одинаковыми именами столбцов, которые необходимо объединить, сохранив правильные имена для статистики. В моем реальном примере мои таблицы называются offensive и defensive, и они содержат статистику атакующих и оборонительных баскетбольных команд. Имена столбцов в обеих таблицах:

team, game, fga, fgm, ast, blk, stk

Я хочу объединить столбцы в столбцах team и game. Я нашел следующий пример , который идеально подходит для моего варианта использования, однако мне не нравится то, что этот пример не удаляет дублирующиеся объединенные столбцы (например, компания, поставщик, транзакция в примере)). После присоединения я не хочу, чтобы 2 из team и game в моей таблице. Я попытался:

SELECT offensive, defensive EXCEPT (team, game)
FROM offensive FULL JOIN defensive
USING (team, game)

... и получаю следующую ошибку Syntax error: Unexpected keyword EXCEPT at [40:39]. Любые мысли о том, как удалить дублирующиеся объединенные столбцы, будут полезны.

1 Ответ

1 голос
/ 08 ноября 2019

Ниже для BigQuery Standard SQL

#standardSQL
SELECT team, game, 
  (SELECT AS STRUCT offensive.*  EXCEPT (team, game)) AS offensive,
  (SELECT AS STRUCT defensive.*  EXCEPT (team, game)) AS defensive
FROM offensive FULL JOIN defensive
USING (team, game)

это приведет к схеме ниже

team game offensive.fga offensive.fgm offensive.ast offensive.blk offensive.stk defensive.fga defensive.fgm defensive.ast defensive.blk defensive.stk    

что-то вроде

[
  {
    "team": "1",
    "game": "1",
    "offensive": {
      "fga": "1",
      "fgm": "2",
      "ast": "3",
      "blk": "4",
      "stk": "5"
    },
    "defensive": {
      "fga": "21",
      "fgm": "22",
      "ast": "23",
      "blk": "24",
      "stk": "25"
    }
  }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...