Próbuję napisać scenariusz bigery, który mogę przechowywać jako procedurę, chciałbym, aby jeden z argumentów, które przekazuję, aby być używanym w nazwie tabeli, która jest zapisana przez skrypt, na przykład:

DECLARE id STRING;
SET id = '123';

CREATE OR REPLACE TABLE test.id AS(
SELECT * FROM dataset.table
)

Jednak w tym przykładzie tabela jest tworzona za pomocą nazwy id, a nie wartość zmiennej "ID", 123. Czy jest jakiś sposób, w jaki mogę dynamicznie tworzyć tabelę przy użyciu wartości zadeklarowanej zmiennej w bigquery UI?

4
Ben P 17 grudzień 2019, 13:41

3 odpowiedzi

Najlepsza odpowiedź

Do tej pory oficjalnie ogłosiliśmy Bigquery Scripting Dokument, który jest Nadal w fazie beta, wykorzystując użycie parametrów dynamicznych (zmiennych) jako symboli zastępczych dla wartości w zapytaniach SQL. Jednak zgodnie z Zapytania parametryzacji w bigquery dokumentacja, parametry zapytań Nie można używać do identyfikatorów obiektów SQL:

Parametry nie mogą być używane jako substytuty identyfikatorów, nazwy kolumn, nazwy tabel lub innych części zapytania.

3
Nick_Kh 18 grudzień 2019, 09:23

Może możesz Użyj tabeli wieloznacznej. Stworzyłbyś tabelę wieloznaczną ze wszystkimi właściwościami, które chcesz zapytać i użyć klauzuli WHERE, aby wybrać dowolne żądane podlegalne. Po prostu bądź ostrożny, stoły muszą mieć ten sam schemat.

0
otayeby 1 wrzesień 2020, 15:21

Dlaczego nie wystarczy użyć natychmiastowego natychmiastowego z {x0}} Jeśli znasz schemat tabeli?

EXECUTE IMMEDIATE CONCAT('CREATE TABLE `', id, '` (column_name STRING)');
8
Paul Roub 2 październik 2020, 20:29