视图中未引用自定义程序集
Custom assemblies not being referenced in Views
如果在 View 中使用自定义 c# 程序集,编译器无法找到对命名空间的引用。
如果在查询中引用和调用程序集而不是从视图中引用和调用程序集,它会起作用。
例如,考虑这个用于创建视图的 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 数据库中的 Views 下。
在另一个查询中使用视图时:
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
附带的库冲突,但我尝试使用另一个具有不同命名空间的程序集,但我仍然遇到同样的问题。
我正在使用 VisualStudio 中的(本地)帐户进行本地测试。
我决定使用 PROCEDURE
。
在 Views 中,无法使用 UDF(用户定义函数)或 UDO。
观看次数不能:
- 包含 user-defined 个对象(例如 UDF 或 UDO)。
- 将在调用时内联。
此信息可在幻灯片 27 的 U-SQL - Azure Data Lake Analytics for Developers
处找到
如果在 Views 的 U-SQL 语言参考文档中提到了这一点,那将会很有帮助。
与视图不同,过程和 table-valued 函数支持 UDF,并且可以包括对程序集的引用:.
CREATE PROCEDURE ExtractTransactions(@data_stream string = @"Data/{*}")
AS BEGIN
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
USING Newtonsoft.Json;
USING Microsoft.Analytics.Samples.Formats.Json;
@transactions =
EXTRACT
UserId string,
UserName string
FROM @data_stream
USING new JsonExtractor();
INSERT INTO ExtractedTransactions
SELECT * FROM @transactions;
END;
然后只需从另一个查询中调用过程:
ExtractTransactions(DEFAULT)
(其中 DEFAULT
是默认参数)。
感谢 Mike & spanturious。 U-SQL 官方 U-SQL 语言参考网站
的 Query_Expression 部分下的 CREATE VIEW (U-SQL) 更新了语言参考
(注意:会提供 link,但上帝会在我这样做时不断删除我的回复。只需搜索 "CREATE VIEW (U-SQL)"。)
如果在 View 中使用自定义 c# 程序集,编译器无法找到对命名空间的引用。 如果在查询中引用和调用程序集而不是从视图中引用和调用程序集,它会起作用。
例如,考虑这个用于创建视图的 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 数据库中的 Views 下。
在另一个查询中使用视图时:
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
附带的库冲突,但我尝试使用另一个具有不同命名空间的程序集,但我仍然遇到同样的问题。
我正在使用 VisualStudio 中的(本地)帐户进行本地测试。
我决定使用 PROCEDURE
。
在 Views 中,无法使用 UDF(用户定义函数)或 UDO。
观看次数不能:
- 包含 user-defined 个对象(例如 UDF 或 UDO)。
- 将在调用时内联。
此信息可在幻灯片 27 的 U-SQL - Azure Data Lake Analytics for Developers
处找到如果在 Views 的 U-SQL 语言参考文档中提到了这一点,那将会很有帮助。
与视图不同,过程和 table-valued 函数支持 UDF,并且可以包括对程序集的引用:.
CREATE PROCEDURE ExtractTransactions(@data_stream string = @"Data/{*}")
AS BEGIN
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
USING Newtonsoft.Json;
USING Microsoft.Analytics.Samples.Formats.Json;
@transactions =
EXTRACT
UserId string,
UserName string
FROM @data_stream
USING new JsonExtractor();
INSERT INTO ExtractedTransactions
SELECT * FROM @transactions;
END;
然后只需从另一个查询中调用过程:
ExtractTransactions(DEFAULT)
(其中 DEFAULT
是默认参数)。
感谢 Mike & spanturious。 U-SQL 官方 U-SQL 语言参考网站
的 Query_Expression 部分下的 CREATE VIEW (U-SQL) 更新了语言参考(注意:会提供 link,但上帝会在我这样做时不断删除我的回复。只需搜索 "CREATE VIEW (U-SQL)"。)