Пользовательские типы данных в стандарте SQL (BigQuery)? - PullRequest
1 голос
/ 24 февраля 2020

Можно ли создавать пользовательские типы данных в стандарте SQL, на который затем можно ссылаться из самого кода SQL?

В качестве примера, скажем, я хотел создать функцию это заняло бы два экземпляра STRUCT - каждый из которых содержит три записи типа STRING. Для этого потребуется написать что-то вроде этого:

CREATE TEMP FUNCTION myFunc(x STRUCT<STRING, STRING, STRING>, y STRUCT<STRING, STRING, STRING>) AS (...);

Что я хочу сделать, это нечто вроде этого (псевдокод);

CREATE TYPE myType STRUCT<STRING, STRING, STRING>
CREATE TEMP FUNCTION myFunc(x myType, y myType) AS (...)

1 Ответ

1 голос
/ 25 февраля 2020

Нечто подобное будет использовать ЛЮБОЙ ТИП для создания вашей функции, например:

CREATE TEMP FUNCTION myFunc(x ANY TYPE, y ANY TYPE) AS (...);

Чтобы ответить на вопрос в комментариях, если требуется строгая проверка типа, вы все равно можете сделать что-то подобное и использовать для проверки параметра myFun c (), чтобы сообщить об ошибке, если тип несовместим:

CREATE TEMP FUNCTION check_type_x(x ANY TYPE) AS (STRUCT(x.a, x.b, x.c));


SELECT myFunc(check_type_x(col1), check_type_x(col2));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...