# #google-cloud-platform #google-bigquery #teradata #teradatasql
Вопрос:
Может кто-нибудь подсказать, как найти имена объектов с помощью имени столбца в BigQuery?
В Teradata мы можем получить объекты(во всех базах данных), в которых используется конкретный столбец, с помощью dbc.columnsv. Мы можем использовать набор данных.INFORMATION_SCHEMA.СТОЛБЦЫ в большом запросе, чтобы узнать список таких объектов. Но это даст имена объектов, принадлежащих одной конкретной базе данных. Итак, мой вопрос заключается в том, как найти все объекты во всех базах данных, где в BigQuery используется один конкретный столбец?
Заранее спасибо.
Ответ №1:
Это должно сработать
DECLARE
col_to_search string DEFAULT "col1";
DECLARE
sql_stmts string;
SET
sql_stmts = (
SELECT
ARRAY_TO_STRING((
SELECT
ARRAY (
SELECT
CONCAT("SELECT * FROM `",sc.catalog_name,"`.",schema_name,".INFORMATION_SCHEMA.COLUMNS WHERE column_name = ","'",col_to_search,"'")
FROM
`planar-effect-325211`.INFORMATION_SCHEMA.SCHEMATA sc ))," UNION ALL ") );
EXECUTE IMMEDIATE sql_stmts;
Комментарии:
1. Спасибо за ваш ответ. Однако я не знаком с блоками PL/SQL. Не могли бы вы, пожалуйста, сказать мне, что означает это «sql_statmts»?
2. «sql_stmts» в приведенном выше коде-это строковая переменная, в которой хранится строка, сгенерированная SQL-запросом. Ниже приведены ссылки на документацию по большим запросам для понимания функций НЕМЕДЛЕННОГО выполнения и массивов, включенных в сценарий. [ссылка] cloud.google.com/bigquery/docs/reference/standard-sql/… [ссылка] cloud.google.com/bigquery/docs/reference/standard-sql/…
3. Пожалуйста, отметьте в качестве ответа, если это то, что вы ищете.
4. Какие «sql_statmts» я должен указать после ключевого слова IMMEDIATE?
5. ОБЪЯВИТЬ строку sql_stmts; Приведенная выше строка кода является объявлением переменной, в этой переменной хранятся результаты, полученные из select. т. е. SET sql_stmts = ( ВЫБЕРИТЕ ARRAY_TO_STRING(….. Таким образом, sql_stamts-это не что иное, как переменная, в которой содержатся выполняемые SQL-запросы. И выполнить imediate выполняет эти sql-запросы для вас динамически.