gpt4 book ai didi

azure - 自定义程序集未在 View 中引用

转载 作者:行者123 更新时间:2023-12-03 00:51:15 25 4
gpt4 key购买 nike

如果在 View 中使用自定义 C# 程序集,编译器将无法找到对命名空间的引用。如果在查询中而不是从 View 中引用和调用程序集,则它可以工作。

例如,考虑以下用于创建 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();

执行脚本后,将创建 View 并将其存储在 mylocaldb 数据库中的 Views 下。

在另一个查询中使用 View 时:

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。在 View 中,不能使用UDF(用户定义函数)或UDO。

View 不能:

  • 包含用户定义的对象(例如 UDF 或 UDO)。
  • 将在调用时内联。

此信息可以在幻灯片 27 的 U-SQL - Azure Data Lake Analytics for Developers 上找到。

如果 Views 的 U-SQL 语言引用文档中提到了这一点,将会很有帮助。 .

与 View 不同,过程和表值函数支持 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 是默认参数)。

关于azure - 自定义程序集未在 View 中引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42109660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com