Вставка данных в / создание таблицы с подстановочными знаками / подстановочных знаков в BigQuery - PullRequest
0 голосов
/ 09 апреля 2020

Существует много документации по gcp о запросах таблиц с подстановочными знаками / подстановочных знаков [1] [2], но я не могу понять, как создавать или вставлять данные, такие как таблица.

Вот простой и в основном бессмысленный пример:

-- STANDARD SQL

CREATE TABLE IF NOT EXISTS  `mydataset.mytable_CA` AS
SELECT "CA" as COUNTRY_CODE

CREATE TABLE IF NOT EXISTS  `mydataset.mytable_US` AS
SELECT "US" as COUNTRY_CODE

SELECT * FROM `mydataset.mytable_*` WHERE _TABLE_SUFFIX = "CA"

Подстановочные знаки в CREATE-staments

Как использовать подстановочные знаки в операторе создания?

-- STANDARD SQL
-- DOES NOT WORK
CREATE TABLE IF NOT EXISTS  `mydataset.mytable_*` AS
SELECT "US" as COUNTRY_CODE WHERE _TABLE_SUFFIX = "US"

Подстановочные знаки в операторах INSERT

Точно так же, как я делаю вставки?

Можно ли сделать что-то вроде следующего:

-- STANDARD SQL
-- DOES NOT WORK
INSERT INTO `mydataset.mytable_*` WHERE _TABLE_SUFFIX = COUNTRY_CODE
SELECT * FROM UNNEST(["US", "US", "CA"]) as COUNTRY_CODE

Я знаю, что рекомендуется использовать разбиение и кластеризацию, но я спрашиваю конкретно о подстановочных знаках, поэтому, пожалуйста, побалуйте меня:)

Возможно ли это с использованием стандартного SQL? Если нет, то как насчет наследства SQL?

1 Ответ

1 голос
/ 09 апреля 2020

Как вы можете видеть здесь , DML имеет некоторые ограничения в BigQuery, и одно из них:

Запросы, содержащие операторы языка манипулирования данными (DML) не может использовать таблицу подстановочных знаков в качестве цели запроса. Например, таблица подстановочных знаков может использоваться в предложении FROM запроса UPDATE, но таблица подстановочных знаков не может использоваться в качестве цели операции UPDATE.

Другими словами, вы не можете использовать подстановочный знак для указания таблицы, которую нужно создать, обновить или вставить новые записи. Несмотря на это, вы можете использовать его для указания источника вашей даты.

Давайте рассмотрим некоторые примеры использования подстановочных знаков с DML и DDL.

INSERTING

Если вы вставляете данные в таблицу подстановочных знаков, вам нужно вставить свои данные в финальную таблицу. Другими словами, вам нужно указать путь coplete, включая суффикс.

INSERT INTO `mydataset.mytable_US` <your query or your values>

Если вы используете таблицу подстановочных знаков в качестве источника данных для вставки данных в обычную таблицу, вы можете использовать подстановочные знаки в WHERE предложение:

INSERT INTO `mydataset.mynormaltable` 
SELECT <fields> 
FROM `mydataset.mytable_*` 
WHERE _TABLE_SUFFIX = "US"


CREATING

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

CREATE TABLE IF NOT EXISTS  `mydataset.normal_table` 
AS SELECT <fields> 
FROM `mydataset.mytable_*` 
WHERE _TABLE_SUFFIX = "US"

Если вы хотите создать новую таблицу подстановочных знаков с тем же префиксом, вы можете сделать:

CREATE TABLE IF NOT EXISTS  `mydataset.mytable_GB` 
AS SELECT <fields> 
FROM `mydataset.table`

В этом примере вы создали новый суффикс с именем GB , После этого вы сможете запрашивать вашу таблицу с нормальным суффиксом ГБ.

Наконец, я хотел бы приложить здесь ссылку на DML и DDL для BigQuery.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...