2016-12-22 21 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做類似的事情。