2016-10-10 63 views
1

我創建了一個從平面文件中提取數據的映射,該文件向我顯示特定SSRS報告的使用情況數據。每天使用前幾天的使用數據覆蓋該文件。我的問題是,有時該報告在當天沒有任何用處,並且我的ETL向我發送了「失敗」電子郵件,因爲源中沒有任何數據。如果源中沒有數據或者阻止它失敗,則從運行中執行作業。Informatica會話失敗

--Thanks

+0

」 ......有沒有一種方法來保持運行作業時有源沒有數據.. 。「 –

+0

嗨約翰遜,它不是會議失敗,因爲源中沒有數據。發佈您的錯誤信息,將有助於爲您提供解決方案 –

回答

0

一個簡單的方法來解決這個問題是創建一個「直通」映射只包含一個平面文件源,源預選賽和平面文件目標。

您將創建一個會話,該會話在您的工作流程開始時運行此映射並讓它讀取您的平面文件源。目標可以是一個虛擬的平面文件,您可以繼續覆蓋。然後,你就必須在鏈接這種情況下你的下一次會議將實際處理的文件:

$s_Passthrough.SrcSuccessRows > 0
0

是的,有幾種方法,你可以做到這一點。

當沒有源數據時,您可以向ETL作業提供空文件。爲此,請在Informatica工作流程中使用預先會話命令,如touch <filename>。如果它不存在,這將創建一個空文件,並帶有<filename>。工作流將以0行成功運行。

如果有觸發的Informatica任務的腳本,然後你可以把支票那裏,以及這樣的:

if [ -e <filename> ] 
then 
    pmcmd ... 
fi 

這將從執行跳過工作。

+0

Hi Samik,非常好的答案。非常感謝。但事情是,他有沒有數據的源文件。這應該沒有問題。希望他們對電子郵件任務有條件。並且touch命令爲您提供沒有列名的虛擬文件,執行會話時會失敗 –

+0

嗨吉姆,我認爲沒有源文件,這就是工作流失敗的原因。你確定,如果文件中沒有列名,它會失敗嗎?我必須檢查。 – Samik

+0

是的,它肯定會失敗。因爲在會話執行期間,SQL重寫查詢將不會從源提供任何列名稱。要與informatica保持聯繫,只需要一個路徑 - https://etlinfromatica.wordpress.com/ –

0

在實際數據加載之前有另一個會話。閱讀文件,使用FALSE過濾器和一些虛擬目標。鏈接這一個會議,你已具備,並設置以下鏈接條件:

$yourDummySessionName.SrcSuccessRows > 0