Если пользовательская сборка C# используется в View, компилятор не может найти ссылку на пространство имен. Он работает, если сборка ссылается и вызывается внутри запроса, но не из представления.Пользовательские сборки, на которые не ссылаются в представлениях
Например, рассмотрим это U-SQL скрипт для создания представления: Сборки используются зарегистрированы в mylocaldb перед выполнением этого запроса, и доступны быть доступны в любом сценарии.
USE DATABASE mylocaldb;
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
USING Newtonsoft.Json;
USING Microsoft.Analytics.Samples.Formats.Json;
DROP VIEW IF EXISTS SearchAccountData;
CREATE VIEW MyView AS
EXTRACT
UserId string,
UserName string
FROM "Data/mydata.json"
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
После выполнения сценария, вид получает создается и хранится под Просмотры в базе mylocaldb.
При использовании вида в другом запросе:
USE DATABASE mylocaldb;
USE SCHEMA dbo;
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
USING Newtonsoft.Json;
USING Microsoft.Analytics.Samples.Formats.Json;
@foo= SELECT * FROM MyView;
OUTPUT @foo
TO "/output/foo.csv"
USING Outputters.Csv();
(USE SCHEMA dbo
не является необходимым в качестве базы данных по умолчанию в том, что в случае, если не используются никакой другая схема):
компилятор генерирует ошибка:
E_CSC_USER_INVALIDCSHARP: C# error CS0234: The type or namespace name 'Samples' does not exist in the namespace 'Microsoft.Analytics' (are you missing an assembly reference?)
Теперь это может быть противоречивыми с библиотекой, которая поставляется с U-SQL: Microsoft.Analytics
, но я попытался с помощью другого A ssembly с другим пространством имен, и у меня все еще есть такая же проблема.
Я тестирую локально с помощью (локальной) учетной записи в VisualStudio.
Исправьте, и я отправлю билет, чтобы обновить документацию. Приятно видеть, что вы смогли найти информацию так быстро :) –