簡體   English   中英

Azure 數據湖 - 條件

[英]Azure Data Lake - Conditions

我想使用 if-else 語句來決定我必須在哪個位置導出數據。 我的情況是:

  1. 我從 azure blob 存儲中提取了幾個文件(可能沒有文件!! )。
  2. 我計算文件集中的記錄數。
  3. 如果記錄數 > 20,那么我將文件導出到特定的報告位置
  4. 如果文件集中沒有記錄,我必須將虛擬空文件輸出到不同的位置,因為我不想用空報告替換現有報告。

解決方案可能是 IF..ELSE 配置。 問題是,如果我計算記錄數,我得到了行集變量,我無法將它與標量變量進行比較。

@RECORDS =
SELECT COUNT(id) AS IdsCount
FROM @final; 


IF @RECORDS <= 20 THEN //generate dummy empty file 
    OUTPUT @final_result
    TO @EMPTY_OUTPUT_FILE
    USING Outputters.Text(delimiter : '\t', quoting : true, encoding : Encoding.UTF8, outputHeader : true, dateTimeFormat : "s", nullEscape : "NULL");
ELSE 
    OUTPUT @final_result
    TO @OUTPUT_FILE
    USING Outputters.Text(delimiter : '\t', quoting : true, encoding : Encoding.UTF8, outputHeader : true, dateTimeFormat : "s", nullEscape : "NULL");
END;

U-SQL 的 IF 語句目前只在編譯時使用。 所以你可以做類似的事情

IF FILE.EXIST() THEN

但是,如果您想根據記錄數輸出不同的文件,則必須在 SDK/CLI 級別編寫它:

第一個作業寫入一個臨時文件輸出(可能還有一個包含行數的狀態文件)。 然后您檢查(例如在 Powershell 中)文件是否為空(或您想要使用的任何標准),如果不是,則復制結果,否則創建空輸出文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM