BigQuery - лучший способ УДАЛИТЬ таблицы с датированными таблицами - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть несколько таблиц с датами, которые я хочу удалить, но у них уже есть более 100 шардов для каждой таблицы, и я не могу удалить их вручную.

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

DROP TABLE my_dataset.my_table_*;

но, похоже, не работает.

Я наконец-то использовал Python API:

for table_id in tables:
    table_ref = client.dataset(dataset_id).table(table_id)
    client.delete_table(table_ref)

И это работает, но мне нужно было создать массив таблиц с именами таблиц, которые я хотел удалить.

Есть ли способ удалить все сегменты даты таблицы с датами в BigQuery из пользовательского интерфейса?

Или используя команду SQL в пользовательском интерфейсе?

Или используя командную строку с подстановочным знаком?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

А что вместо того, чтобы создавать массив таблиц (с именами таблиц), который вы используете ...

from google.cloud import bigquery
client = bigquery.Client()
dataset_ref = client.dataset('my_dataset')

tables = list(client.list_tables(dataset_ref))  # API request(s), now you have the list of tables in this dataset
queried_tables=[]
for table in tables:
    print(table.table_id)
    if table.table_id.startswith("your_favourite_prefix"): #will perform the action only if the table has the desired prefix
        queried_tables.append(table.table_id)

print(queried_tables) #the list of the desired tables names, now you can use your script to delete them all
0 голосов
/ 03 сентября 2018

Не существует встроенного способа отбрасывать все таблицы с общим префиксом. Ваш подход использования библиотеки Python для их удаления - разумный вариант, или вы можете сделать то же самое из командной строки с помощью цикла, который вызывает bq rm dataset.table_name.

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