USQL создает пользовательский тип таблицы с определенными столбцами типа данных

77
7

Я определил определенный пользователем тип как

namespace AddOns{
[SqlUserDefinedType(typeof(JsonObjectFormatter))]
public class JsonObject
{
public string Value {get;set;}
... // this is just a dummy representation
}
}

Я хочу определить функцию таблицы, которая возвращает тип данных

REFERENCE ASSEMBLY [AddOns];

CREATE TYPE Insight.dbo.JsonRow
AS TABLE
(
[Id] Guid,
[Value] AddOns.JsonObject
);

Однако я получаю сообщение об ошибке

'E_CSC_USER_INVALIDCOLUMNTYPE: 'AddOns.JsonObject' cannot be used as column type.
Description:
The column type must be a supported scalar, complex or user defined type.
Resolution:
Ensure the column type is a supported type. For a user defined type, make sure the type is registered, the type name is fully qualified, and the required assembly is referenced by the script.'
*** Compile failed !

Я зарегистрировал соответствующую DLL в своем локальном экземпляре ADLA, и я могу получить доступ к типу в SELECT процедур, когда я сохраняю данные в файле. Но не может вернуть его как возвращаемый тип TVF

спросил(а) 2021-01-25T16:00:49+03:00 4 месяца, 4 недели назад
1
Решение
77

При создании пользовательского типа вы ограничены только встроенными типами. На странице документации MS (буквальная последняя строка, которую я вставлял, содержит только встроенные типы):

U-SQL может указывать и регистрировать типы таблиц с помощью инструкции CREATE TYPE.

Create_Type_Statement :=                                                                                 
'CREATE' 'TYPE' ['IF' 'NOT' 'EXISTS'] Type_Identifier
'AS' Anonymous_Table_Type.
Type_Identifier :=
DB_Object_Identifier.

Anonymous_Table_Type :=
'TABLE' '(' Column_Definition_List ')'.

Семантика элементов синтаксиса

...

Column_Definition_List

Определяет схему таблицы следующим образом:

Column_Definition_List :=                                                                           
Column_Definition { ',' Column_Definition }.

column_definition

Определение столбца имеет вид

Column_Definition :=    
Quoted_or_Unquoted_Identifier Built_in_Type.

ответил(а) 2021-01-25T16:00:49+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема