2016-12-22 17 views
1

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

EXTRACT CustomerID:0 string, 
    StoreNumber:5 double, 
    ReceiptNumber:20 double, 
    Timestamp:125 int 
FROM "somefile.csv" 
USING Extractors.Csv(); 

所以这个想法是指定一个索引,对应于哪个列的数据来自。

有没有像这样的作品?或者我总是需要定义所有200列?我也接受其他解决方案。谢谢!

回答

1

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

Excel U-SQL helper

您可以创建一个初始U-SQL view,现在差不多都使用上述方法中的列,然后创建基于您需要的列的初始视图另一种观点认为:

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 Find and Replace with RegEx做类似的事情。