Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure U-SQL Extract语句-使用数百列_Azure_U Sql - Fatal编程技术网

Azure U-SQL Extract语句-使用数百列

Azure U-SQL Extract语句-使用数百列,azure,u-sql,Azure,U Sql,在U-SQL extract语句中是否有方法只指定我关心的输入列?我正在使用一个遗留数据库,该数据库将多个表导出到csv,其中包含大约200列。我只关心其中的10个领域。我希望做一些类似的事情: EXTRACT CustomerID:0 string, StoreNumber:5 double, ReceiptNumber:20 double, Timestamp:125 int FROM "somefile.csv" USING Extractors.

在U-SQL extract语句中是否有方法只指定我关心的输入列?我正在使用一个遗留数据库,该数据库将多个表导出到csv,其中包含大约200列。我只关心其中的10个领域。我希望做一些类似的事情:

EXTRACT CustomerID:0   string,
    StoreNumber:5    double,
    ReceiptNumber:20   double,
    Timestamp:125   int
FROM "somefile.csv"
USING Extractors.Csv();
因此,我们的想法是指定一个索引,该索引对应于数据来自哪个列


工程中有类似的东西吗?还是我总是需要定义所有200列?我也愿意接受其他解决方案。谢谢

您可以编写自定义提取器代码。请使用中的示例提取器作为指导。

按照您的描述,没有一种简单的方法可以做到这一点,但编写脚本不会花费很长时间。例如,我经常使用Excel帮助编写脚本,例如粘贴200列csv的已知元数据,然后将其映射到U-SQL数据类型,例如

您可以使用上述方法创建包含所有列的初始视图,然后基于所需列的初始视图创建另一个视图:

CREATE VIEW IF NOT EXISTS dbo.view1
    AS
EXTRACT col1 int,
        col2 string,
        col3 string,
        col4 string,
        col5 string
FROM "/input/input44.txt"
USING Extractors.Csv();


CREATE VIEW IF NOT EXISTS dbo.view2
    AS
SELECT  col1,
        col2
FROM dbo.view1;


@input =
    SELECT *
    FROM dbo.view2;

我有时也会使用Visual Studio来做类似的事情。

虽然不可能完成上面所述的操作,但按照您的建议,通过自定义提取器就很容易了。谢谢难道解决方案还没有在U-SQL中作为内置功能而不是自定义提取器引入吗?