如果在 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中的(本地)帐户进行本地测试。
答案 0 :(得分:3)
我决定使用function clickEvent(e) {
// e = Mouse click event.
var rect = e.target.getBoundingClientRect();
var x = e.clientX - rect.left; //x position within the element.
var y = e.clientY - rect.top; //y position within the element.
}
。
在视图中无法使用UDF(用户定义的函数)或UDO。
观点不能:
此信息可在幻灯片27 U-SQL - Azure Data Lake Analytics for Developers
上找到如果在Views的U-SQL语言参考文档中提到这一点会很有帮助。
与Views不同,过程和表值函数支持UDF,并且可以包含对程序集的引用:。
PROCEDURE
然后只需从另一个查询中调用该过程:
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)
是默认参数)。
答案 1 :(得分:1)
感谢Mike& sponturious。 U-SQL语言参考已在CREATE VIEW(U-SQL)的官方U-SQL语言参考站点的Query_Expression部分下更新
(注意:会提供一个链接,但是当我这样做时,众神会不断删除我的回复。只需搜索"创建视图(U-SQL)"。)