# tableau Tableau Prep (prep) - Full Documentation
[跳至主要內容](#main-content)
# Tableau Desktop 中包含第二個日期的分析
這是教程的第二個階段,並且假定第一個階段[使用 Tableau Prep 查找第二個日期](https://help.tableau.com/v0.0/prep/zh-tw/prep_tutorial_2nddateA.htm)已完成。
在第一個階段中,我們採用原始資料集並對其進行調整來回答以下問題:
1. 每個駕駛員第一次和第二次違章相隔多長時間(以天數為單位)?
2. 比較第一次和第二次違章的罰款金額。這些金額是否相關?
3. 總體而言,哪個駕駛員支付的罰款最多?誰支付的最少?
4. 有多少駕駛員有過多種類型的違章?
5. 從未上過交通法規學習班的駕駛員的平均罰款金額是多少?
我們現在探討這些問題時,可以清晰地發現我們建立的第一個資料結構有一些優缺點。我們將返回到 Tableau Prep Builder 中並進行一些額外的重新調整,然後看看會對 Tableau Desktop 中同樣的分析產生怎樣的影響。最後,我們將探討 Tableau Desktop 獨有的將詳細資料層級 (LOD) 運算式與原始資料結合使用進行分析的方法。
本教程的目標是在一個真實場景的內容中呈現各種概念並演練各個選項 — 而不是規定式地確定哪一個是最好的。最後,您應該會對資料結構對計算和分析的影響有更深的認識,並更加熟悉 Tableau Prep 的各項功能以及 Tableau Desktop 中的計算。
**附註**:為完成本教程中的工作,您需要安裝 Tableau Prep Builder 並根據需要安裝 Tableau Desktop,並下載相關資料。
若要在繼續本教學課程之前安裝 Tableau Prep 和 Tableau Desktop,請參閱 [Tableau Desktop 和 Tableau Prep 部署指南](https://help.tableau.com/current/desktopdeploy/zh-tw/desktop_deploy_welcome.htm#)。否則,您可以下載 [Tableau Prep](https://www.tableau.com/zh-tw/products/prep/download) 和 [Tableau Desktop](https://www.tableau.com/zh-tw/products/desktop/download) 免費試用版。
資料集是在第一個階段中組建的 [Driver Infractions.tflx](https://mkt.tableau.com/PrepTutorials/Driver%20Infractions.tflx) 的輸出。
## Tableau Desktop 中的分析
既然我們已經設定了資料,我們就將其引入 Tableau Desktop。我們可以輕鬆地回答一些問題,但其他問題會涉及一些(或很多)計算。請嘗試下面的問題;如果遇到困難,您可以展開每個問題來瞭解有關如何繼續的基本資訊。
**附註:**您可以下載工作簿 [Driver Infractions.twbx](https://mkt.tableau.com/PrepTutorials/Driver%20Infractions.twbx),在上下文中探討解決方案。請記住,可以透過一些替代方式來解讀分析或尋找答案。
1.每個駕駛員第一次和第二次違章相隔多長時間(以天數為單位)?
1. 為了在 Tableau Desktop 中回答此問題,我們將使用 DATEDIFF 函數。此函數採用三個參數 — 日期部分、開始日期和結束日期。由於我們想知道這些事件的間隔天數,因此將使用日期部分「day」。我們的開始日期和結束日期在資料集中為「**1st Infraction Date**」(第一次違章日期)和「**2nd Infraction Date**」(第二次違章日期)。
2. 計算為:
**Time Between Infractions**(違章間隔時間)= `DATEDIFF('day', [1st Infraction Date], [2nd Infraction Date])`
3. 我們依據「**Driver ID**」(駕駛員 ID)將該計算繪製為橫條圖。請注意,7 名駕駛員沒有第二次違章,因此有 7 個 null 值。

2.比較第一次和第二次違章的罰款金額。這些金額是否相關?
1. 為了在 Tableau Desktop 中回答此問題,我們將建立「**1st Fine Amount**」(第一次罰款金額)和 「**2nd Fine Amount**」(第二次罰款金額)的散點圖。透過將**「Driver ID」**(駕駛員 ID)放到「標記」卡上的「詳細資訊」架,我們可以為每名駕駛員建立一個標記。
2. 若要新增趨勢線,請使用左側窗格中的「分析」索引標籤,並顯示線性趨勢線。將游標暫停在趨勢線上,我們可以看到 R 平方值實際上為零,並且 p 值明顯高於任何臨界值。我們可以確定,第一次罰款金額和第二次罰款金額之間沒有相關性。
若要在儀表板中使用此散點圖,則應移除趨勢線。

3.總體而言,哪個駕駛員支付的罰款最多?誰支付的最少?
如果想要更深入地進行分析,我們可能需要建立一些計算。
1. 為了在 Tableau Desktop 中回答此問題,我們需要將兩次違章的罰款新增到單一欄位中。由於某些駕駛員可能沒有第二次違章,我們需要使用零 null `ZN` 函數將「**2nd Fine Amount**」(第二次罰款金額)的任何 null 值轉換為零。若沒有第二次罰款,不這樣做會產生 null 值。
2. 計算為:
**Total Amount Paid**(總支付金額)= `[1st Fine Amount] + ZN([2nd Fine Amount])`
3. 我們可以依據「**Driver ID**」(駕駛員 ID)繪製「**Total Amount Paid**」(總支付金額)橫條圖並對其進行排序。

4.有多少駕駛員有過多種類型的違章?
1. 為了在 Tableau Desktop 中回答此問題,我們需要執行一個更細緻的 `IF` 計算,比較第一次和第二次違規類型是否相同。如果相同,我們想要指派值「1」。如果不同,我們將指派「2」。由於我們僅關注多種類型的違章,因此系統會向其他任何結果(如為 null 的第二種違章類型)指派「1」。
2. 計算為:
**Number of Infraction Types**(違章類型數量)=
IF \[1st Infraction Type\]=\[2nd Infraction Type\] THEN 1
ELSEIF \[1st Infraction Type\]!= \[2nd Infraction Type\] THEN 2
ELSE 1 END
3. 然後,我們可以依據「**Driver ID**」(駕駛員 ID)繪製「**Number of Infraction Types**」(違章類型數量)橫條圖並對其進行排序。

5.從未上過交通法規學習班的駕駛員的平均罰款金額是多少?
1. 為了在 Tableau Desktop 中回答此問題,我們無法簡單地將總罰款金額除以二,因為某些駕駛員只有一次違章。我們也無法計算每個駕駛員的平均罰款並取這些值的平均值,因為對平均值進行平均計算可能會導致不一致。作為替代,我們需要計算從未上過交通法規學習班的駕駛員支付的總金額,然後除以與這些罰款關聯的總違章次數。
1. 首先,我們需要確定是否每個駕駛員都有第二次違章。如果沒有第二次違章,則所有「2nd」欄位中的資訊都將為 null,我們可以利用這一事實並開始組建計算:
`IFNULL([2nd Infraction Type], 'no')`
這將返回違章類型(如果存在),或者如果沒有第二次違章,則返回「no」。
2. 接著,我們需要將此資訊轉換為違章次數 1 或 2。如果 `IFNULL` 計算的結果為 「no」,則應將駕駛員標記為有一次罰款。對於任何其他結果,則應標記為有兩次罰款。計算為:
**Number of Infractions**(違章次數)=
IF IFNULL(\[2nd Infraction Type\], 'no') = 'no' THEN 1
ELSE 2
END
3. 現在,我們需要考慮總罰款金額。與上面的問題 3 類似,我們將新增第一次和第二次罰款金額,並將第二次罰款金額放在 `ZN` 函數內。但是,由於我們想在整個資料集層級計算此值,因此最佳做法是在計算本身中指定彙總 SUM。計算為:
`SUM([1st Fine Amount]) + SUM( ZN([2nd Fine Amount]) )`
4. 總而言之,我們將利用這個總罰款金額,並將其除以新的**「Number of Infractions」**(違章次數)計算欄位,從而確定平均罰款金額:
**Average Fine**(平均罰款)= `( SUM([1st Fine Amount]) + SUM( ZN([2nd Fine Amount]) ) ) / SUM([Number of Infractions])`
2. 我們還需要篩選出曾經參加過交通法規學習班的駕駛員 — 但該資訊也跨兩個欄位存放。
1. Tableau 在進行數值計算時非常高效。我們將用盡可能多可說明提高效能的數字表述這一點。為了合併這兩個欄位,我們將為每個欄位建立一個顯示為「Yes = 1」和「No = 0」的欄位(對於沒有第二次違章的駕駛員,null 也應 = 0)。透過對這些計算的結果求和,總值為 0 的任何駕駛員從未上過交通法規學習班(值 1 或 2 表示他們上過交通法規學習班的次數)。我們隨後可以進行篩選,以僅保留值為 0 的駕駛員。
2. 這一次,我們將使用 `CASE` 語句,而不是 `IF`。這些語句的功能非常相似,但具有不同的語法。計算的開頭應如下所示:
CASE \[1st Traffic School\]
WHEN 'Yes' THEN 1
WHEN 'No' THEN
ELSE 0
END
3. 然後,我們將為「2nd Traffic School」執行相同的操作。透過將每個 CASE 語句放在括弧內並在兩者之間新增一個加號,我們可以在同一計算中新增這兩段語句。移除一些分行符號,它看起來如下所示:
**Number of Traffic School Attendances**(參加交通法規學習班次數)=
(CASE \[1st Traffic School\] WHEN 'Yes' THEN 1 WHEN 'No' THEN 0 ELSE 0 END)
+
(CASE \[2nd Traffic School\] WHEN 'Yes' THEN 1 WHEN 'No' THEN 0 ELSE 0 END)
4. 如果我們將**「Number of Traffic School Attendances」**(參加交通法規學習班次數)拖到「資料」窗格的「維度」區域(在線上方),則值 0–2 將變為離散。
5. 現在,如果我們對**「Number of Traffic School Attendances」**(參加交通法規學習班次數)進行篩選,我們可以只選取 0,並且知道我們獲得了從未參加過交通法規學習班的駕駛員。
3. 為了回答原來的問題,我們只需將**「Average Fine」**(平均罰款)放到「標記」卡上的「文字」架。
由於我們在計算中組建了彙總,因此膠囊上的彙總將為 AGG,我們無法對其進行變更。這是預期行為。

## 更進一步 — 樞紐的資料
儘管我們一直在處理的資料結構良好,可以解決與第一次和第二次違章特定相關的問題,但它並不是我們建議用於 Tableau Desktop 的標準結構。我們的分析背離與違章日期相關的基本問題越遠,用於將相關資訊合併為可用形式的計算就會變得越複雜。
通常,如果為同一類型的資料使用多個列存放資料(例如兩個列用於日期,兩個列用於罰款金額等),並且唯一的資訊存放在欄位名中(例如是第一次還是第二次違章),這就表明應該要對資料進行樞紐。
在 Tableau Prep Builder 中執行多重樞紐可以很好地處理此問題。我們可以從上一教程[使用 Tableau Prep 查找第二個日期](https://help.tableau.com/v0.0/prep/zh-tw/prep_tutorial_2nddateA.htm)中建立的**「Driver Infraction」**(駕駛員違章)Tableau Prep 流程的結尾開始工作。
> [!TIP]
>
> **提示**:請確保已返回 Tableau Prep,以進行後續步驟。
1. 從最後的清理步驟中,新增一個「Pivot」(樞紐)步驟,該步驟將按每個重複的欄位進行樞紐。使用「樞紐的欄位」區域右上角的加號  圖示來新增更多「樞紐值」。每一組欄位(例如第一次和第二次罰款金額)應一起樞紐。
有關樞紐的詳細資訊,請參閱[清理和調整資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_clean.htm#Pivot)。
2. 在「樞紐的欄位」區域中的「Pivot1 Names」(樞紐 1 名稱)欄下,按兩下每個值,並將其重新命名為 1st 和 2nd。

透過移除 null 日期以及重命名欄位並對其進行重新排序,可以對結果進行整理。
1. 在樞紐後面新增清理步驟。在**「Infraction Date」**(違章日期)欄中,以滑鼠右鍵按一下 null 條並選取「排除」。
2. 按兩下欄位名**「Pivot1 Names」**(樞紐 1 名稱),並將其重命名**「Infraction Number」**(違章次數)。
3. 視情況而定拖動資料以按如下方式對其進行重新排序:

1. 依據新的樞紐的資料建立一個名為**「Pivoted Driver Infractions」**(樞紐的駕駛員違章)的輸出,並將其引入 Tableau Desktop。(在新增「輸出」步驟之後,不要忘記執行流程。)
現在,我們可以用這個樞紐的資料結構再次探討我們的五個問題;如果遇到困難,您可以展開每個問題來瞭解有關如何繼續操作的基本資訊。
**附註:**您可以下載完成的流程檔 [Pivoted Driver Infractions.tflx](https://mkt.tableau.com/PrepTutorials/Pivoted%20Driver%20Infractions.tflx) 來檢查您的工作,或者下載工作簿 [Pivoted Driver Infractions.twbx](https://mkt.tableau.com/PrepTutorials/Pivoted%20Driver%20Infractions.twbx) 在上下文中查看解決方案。請記住,可以透過一些替代方式來解讀分析或尋找答案。
1.每個駕駛員第一次和第二次違章相隔多長時間(以天數為單位)?
1. 為了在 Tableau Desktop 中回答此問題,就像我們對第一個資料集所做的那樣,我們將使用 `DATEDIFF` 函數。此函數需要一個開始日期和一個結束日期。此資訊存在於我們的資料中,但全部在一個欄位中。我們需要將其拉出到兩個欄位中。
1. 建立兩個初始計算欄位:
**1st Infraction Date**(第一次違章日期)= `IF [Infraction Number] = "1st" THEN [Infraction Date] END`
**2nd Infraction Date**(第二次違章日期)= `IF [Infraction Number] = "2nd" THEN [Infraction Date] END`
2. 由於我們想要確保這兩個欄位均可用于為每個駕駛員比較,我們需要將它們固定到**「Driver ID」**(駕駛員 ID)層級。
**附註:**不相信我?嘗試按原樣對這兩個欄位進行 `DATEDIFF` 計算:**Time Between Infractions**(違章間隔時間)= `DATEDIFF('day', [1st Infraction Date], [2nd Infraction Date])`
您將在所有地方都獲得 null 結果,因為 Tableau 會嘗試跨類似於如下的資料結構進行比較:

在這裡,知道第一個日期的列不知道第二個日期,反之亦然。為了解決此問題,我們將使用「FIXED」詳細資料層級運算式將第一個和第二個日期強制與**「Driver ID」**(駕駛員 ID)相關。
按如下方式編輯計算:
**1st Infraction Date**(第一次違章日期)= `{ FIXED [Driver ID] : MIN ( IF [Infraction Number] = "1st" THEN [Infraction Date] END ) }`
**2nd Infraction Date**(第二次違章日期)= `{ FIXED [Driver ID] : MIN ( IF [Infraction Number] = "2nd" THEN [Infraction Date] END ) }`
**附註**:將原始 `IF` 計算內嵌在 LOD 運算式中時,必須對其進行彙總。我們可以使用任何將保留日期值的基本彙總(因此像 SUM、AVG 或 MIN 這樣的彙總有用,而 CNT 或 CNTD 則不行)。
**附註**:也可以在 Tableau Prep Builder 中建立這些計算。有關 Prep 中 LOD 運算式的詳情,請參閱[建立詳細資料層級、排名和動態磚計算](https://help.tableau.com/v0.0/prep/zh-tw/prep_calculations.htm)。
8. 現在,我們可以按如下方式建立 `DATEDIFF` 計算:
**Time Between Infractions**(違章間隔時間)= `DATEDIFF('day', [1st Infraction Date], [2nd Infraction Date])`
- 如果我們想要查看週或月,只需修改日期部分(目前為 `'day'`)。
- 也可以將 FIXED 計算直接放在 DATEDIFF 內,以為整個事件建立單一的計算:
DATEDIFF ( 'day',
{ FIXED \[Driver ID\] : MIN ( IF \[Infraction Number\] = "1st" THEN \[Infraction Date\] END ) },
{ FIXED \[Driver ID\] : MIN ( IF \[Infraction Number\] = "2nd" THEN \[Infraction Date\] END ) }
)
9. 在欄上繪製**「違章間隔時間」**,並在列上繪製**「駕駛員 ID」**。
結果將與使用未樞紐資料結構的結果相同。
2.比較第一次和第二次違章的罰款金額。這些金額是否相關?
1. 為了在 Tableau Desktop 中回答此問題,我們將使用與上一個問題非常相似的邏輯。我們將使用**「Infraction Number」**(違章次數)來確定給定列是第一次違章還是第二次違章,然後相應拉出罰款金額。
1. 如果我們只需要建立散點圖,則可以跳過 LOD 部分,只使用 `IF` 計算:
**1st Fine Amount**(第一次罰款金額)= `IF [Infraction Number] = "1st" THEN [Fine Amount] END`
**2nd Fine Amount**(第二次罰款金額)= `IF [Infraction Number] = "2nd" THEN [Fine Amount] END`
2. 但是,如果我們想要進行比較並查看某個駕駛員第一次和第二次罰款之間的金額差異,我們會遇到像日期一樣的 null 問題。將這些計算封裝在 `FIXED` LOD 內不會有什麼壞處,因此從一開始這樣做或許會不錯:
**1st Fine Amount**(第一次罰款金額)= `{ FIXED [Driver ID] : MIN ( IF [Infraction Number] = "1st" THEN [Fine Amount] END ) }`
**2nd Fine Amount**(第二次罰款金額)= `{ FIXED [Driver ID] : MIN ( IF [Infraction Number] = "2nd" THEN [Fine Amount] END ) }`
也可以在 Tableau Prep Builder 中建立這些計算。有關 Prep 中 LOD 運算式的詳情,請參閱[建立詳細資料層級、排名和動態磚計算](https://help.tableau.com/v0.0/prep/zh-tw/prep_calculations.htm)。
3. 建立具有**「第一次罰款金額」**(欄)和**「第二次罰款金額」**(列)的散點圖,並像以前一樣顯示線性趨勢線。
結果將與使用未樞紐資料結構的結果相同。
3.總體而言,哪個駕駛員支付的罰款最多?誰支付的最少?
1. 為了在 Tableau Desktop 中回答此問題,樞紐的資料結構非常理想。我們只需在橫條圖中顯示**「Driver ID」**(駕駛員 ID)和**「Fine Amount」**(罰款金額)。預設彙總已經是 SUM,因此將自動繪製駕駛員支付的總金額。
結果將與使用未樞紐資料結構的結果相同。
4.有多少駕駛員有過多種類型的違章?
1. 為了在 Tableau Desktop 中回答此問題,樞紐的資料結構非常理想。我們只需以橫條圖形式顯示**「Driver ID」**(駕駛員 ID)以及**「Infraction Type」**(違章類型)的「不重複計數」,就能得到答案。
結果將與使用未樞紐資料結構的結果相同。
5.從未上過交通法規學習班的駕駛員的平均罰款金額是多少?
1. 為了在 Tableau Desktop 中回答此問題,我們無法簡單地將總罰款金額除以二,因為某些駕駛員只有一次違章。我們也無法計算每個駕駛員的平均罰款並取這些值的平均值,因為對平均值進行平均計算可能會導致不一致。作為替代,我們需要計算從未上過交通法規學習班的駕駛員支付的總金額,然後除以與這些罰款關聯的總違章次數。
1. 首先,我們需要確定是否每個駕駛員都有第二次違章。如果沒有第二次違章,則**「2nd Infraction Date」**(第二次違章日期)將為 null,我們可以利用這一事實並開始組建計算:
`IFNULL(STR([2nd Infraction Date]), 'no')`
這將返回第二次違章的日期(如果存在),或者如果沒有第二次違章,則返回 「no」。
**附註:**此計算的 `STR` 部分是必需的,因為 `IFNULL` 需要在其參數中保持資料類型的一致性。由於我們想要為 null 值返回字串 「no」,因此也要將日期轉換為字串。
2. 接著,我們需要將此資訊轉換為違章次數 1 或 2。如果 `IFNULL` 計算的結果為 「no」,則應將駕駛員標記為有一次罰款。對於任何其他結果,則應標記為有兩次罰款。計算為:
**Number of Infractions**(違章次數)=
IF IFNULL(STR(\[2nd Infraction Date\]), 'no')= 'no' THEN 1
ELSE 2
END
3. 現在,我們需要考慮平均罰款金額。我們已經有了一個**「Fine Amount」**(罰款金額)欄位。我們只需將該欄位除以新的**「Number of Infractions」**(違章次數)欄位,同時將兩者都放在 SUM 內:
**Average Fine**(平均罰款)= `(SUM([Fine Amount]) / SUM([Number of Infractions])`
2. 我們還需要篩選出參加過交通法規學習班的駕駛員。看起來我們可以使用 **「Traffic School」**(交通法規學習班)欄位並對 **「Traffic School = no」**(交通法規學習班 = 無)進行篩選。但是,這將篩選與交通法規學習班無關的_違章行為_,而不是從未上過交通法規學習班的_駕駛員_。若一名駕駛員因為一次違章上過交通法規學習班,但沒有因為另一次上過,則我們不需要在此處考慮其中任何一次違章 — 該駕駛員已上過交通法規學習班,因此不符合問題的參數。
我們需要做的是篩選出參加過交通法規學習班的任何駕駛員。就資料而言,我們想要篩選出任何列上**「Traffic School」**(交通法規學習班)為「Yes」(是)的任何駕駛員,無論其與哪次違章相關聯。讓我們分階段組建計算,並使用一個簡單的檢視來說明跟蹤所發生的情況:
1. 首先,我們想要知道駕駛員的「Traffic School」(交通法規學習班)是否為「Yes」(是)。將**「Driver ID」**(駕駛員 ID)拖到「列」,並將**「Traffic School」**(交通法規學習班)拖到「欄」。我們將獲得一個文字表,其中預留位置「Abc」文字表示每個駕駛員的相關值。
2. 接著,我們想要組建一個計算,該計算將確定**「Traffic School」**(交通法規學習班)的值是否為「Yes」(是)。計算的第一個階段是:
**Attended Traffic School**(已參加交通法規學習班)= `CONTAINS([Traffic School), 'Yes')`
如果我們將**「Attended Traffic School」**(已參加交通法規學習班)拖到「標記」卡上的「顏色」架,我們會看到它準確地針對「No」(否)欄中的每個標記標為「False」,並針對「Yes」(是)欄中的每個標記標為「True」。
列出的「Driver ID」(駕駛員 ID)的檢視,「Attended Traffic School」(已參加交通法規學習班)放在「顏色」上")
3. 但是,我們真正需要的是位於_駕駛員_(而不是_違章_)層級的此資訊。嘗試在與基本資料結構不同的詳細資料層級計算結果時,LOD 運算式非常適合。我們將此運算式設為 `FIXED` LOD 運算式。但是,正如我們所知,必須對 LOD 的彙總運算式進行彙總。以前,我們使用過 MIN。它在這裡是否有用?我們將計算修改為:
**Attended Traffic School**(已參加交通法規學習班)= `{ FIXED [Driver ID] : MIN( CONTAINS([Traffic School], 'Yes'))}`

在檢視中應用該變更之後,我們看到了與預期相反的結果。具有「no」值的任何駕駛員全部被標記為「False」。相反,我們希望為該駕駛員的每條記錄將「Yes」標記為「True」。MIN 在這裡做了什麼?它按字母順序選取第一個回應,即 「no」。
4. 如果我們將其變更為 MAX,將會怎麼樣?該函數是否會按字母順序獲取最後一個回應?我們將計算修改為:
**Attended Traffic School**(已參加交通法規學習班)= `{ FIXED [Driver ID] : MAX ( CONTAINS( [Traffic School], 'Yes') ) }`

我們得到了想要的結果:如果駕駛員在資料中的任何位置有「Yes」,他們會因為參加過交通法規學習班而被標記為「True」,即使對於不涉及交通法規學習班的違章也是如此。
5. 如果我們將**「Attended Traffic School」**(已參加交通法規學習班)拖到「篩選器」架並僅選取「False」,將只會剩下從未參加過交通法規學習班的駕駛員。
3. 為了回答原來的問題,在篩選器就位的情況下,我們只需將**「Average Fine」**(平均罰款)放到「標記」卡上的「文字」架。由於我們在計算中組建了彙總,因此欄位上的彙總將為 AGG,我們無法對其進行變更。這是預期行為。
結果將與使用未樞紐資料結構的結果相同。
### 樞紐資料的優點
如果知道我們只需要回答可以使用教程中的原始資料結構輕鬆回答的問題,我們可以繼續使用該結構。不過,樞紐的資料格式更加靈活。即使它需要一些計算,但在計算就位之後,產生的資料集將非常適合於回答更廣泛的問題。
## 再進一步 — 只使用計算
若無法存取 Tableau Prep Builder,該怎麼辦?如果被迫使用原始資料,您是否完全不走運?根本不會!
Tableau Desktop 和 LOD 運算式可以回答所有分析問題。如果我們連線到原始的 [**Traffic Violations.xlsx**](https://mkt.tableau.com/PrepTutorials/Traffic%20Violations.xlsx),它看起與已樞紐資料集非常相似 — 只是沒有重要的**「Infraction Number」**(違章次數)欄位。我們將需要透過 LOD 運算式類比彙總步驟的輸出。
**附註:**您可以下載工作簿 [LOD Driver Infractions.twbx](https://mkt.tableau.com/PrepTutorials/LOD%20Driver%20Infractions.twbx),在上下文中探討解決方案。請記住,可以透過一些替代方式來解讀分析或尋找答案。
1.每個駕駛員第一次和第二次違章相隔多長時間(以天數為單位)?
1. 為了在 Tableau Desktop 中回答此問題,我們將再次使用 `DATEDIFF` 函數。此函數需要一個開始日期和一個結束日期。此資訊存在於我們的資料中,但全部在一個欄位中。我們需要將其拉出到兩個欄位中。由於我們想要確保這兩個欄位均可用于為每個駕駛員比較,我們需要將它們固定到**「Driver ID」**(駕駛員 ID)層級。
1. 為了查找第一次違章日期,我們將使用計算:
**1st Infraction**(第一次違章)= `{ FIXED [Driver ID] : MIN ( [Infraction Date] ) }`
2. 我們將分階段執行第二次違章日期相關操作。
1. 首先,我們需要只查看比第一個日期大的日期:
`IF [Infraction Date] > [1st Infraction] THEN [Infraction Date] END`
2. 但這將列出第一次違章之後_每次_違章,而我們只需要第二次違章。因此我們需要這些日期中最小的日期。將整個計算放在 MIN 內:
`MIN( IF [Infraction] : [1st Infraction] THEN [Infraction Date] END )`
3. 我們還想要為每個駕駛員重新計算第二次違章日期。這就是 LOD 運算式的用武之地。我們會將此計算固定到**「Driver ID」**(駕駛員 ID)層級:
**2nd Infraction**(第二次違章)= `{ FIXED [Driver ID] : MIN ( IF [Infraction Date] > [1st Infraction] THEN [Infraction Date] END ) }`
3. 現在我們可以建立 `DATEDIFF` 計算:
**Time Between Infractions**(違章間隔時間)= `DATEDIFF('day', [1st Infraction], [2nd Infraction])`
結果將與使用其他兩個資料結構的結果相同。
2.比較第一次和第二次違章的罰款金額。這些金額是否相關?
1. 為了在 Tableau Desktop 中回答此問題,我們將使用此問題的樞紐資料版本相似的邏輯。我們將使用為問題 I 建立的**「1st Infraction」**(第一次違章)和**「2nd Infraction」**(第二次違章)來確定給定列是第一次違章還是第二次違章,然後相應拉出罰款金額。
1. 如果我們只需要建立散點圖,則可以跳過 LOD 部分,只使用 `IF` 計算:
**1st Fine Amount**(第一次罰款金額)= `IF [1st Infraction] = [Infraction Date] THEN [Fine Amount] END`
**2nd Fine Amount**(第二次罰款金額)= `IF [2nd Infraction] = [Infraction Date] THEN [Fine Amount] END`
2. 但是,如果我們想要進行比較並查看某個駕駛員第一次和第二次罰款之間的金額差異,我們會遇到像第一個資料結構中一樣的 null 問題。將這些計算封裝在 FIXED LOD 內不會有什麼壞處,因此從一開始這樣做或許會不錯:
**1st Fine Amount**(第一次罰款金額)= ``{ FIXED [Driver ID] : MIN ( `IF [1st Infraction] = [Infraction Date] THEN [Fine Amount] END` ) }``
**2nd Fine Amount**(第二次罰款金額)= ``{FIXED [Driver ID] : MIN( `IF [2ndInfraction] = [Infraction Date] THEN [Fine Amount] END` ) }``
結果將與使用其他兩個資料結構的結果相同。
3.總體而言,哪個駕駛員支付的罰款最多?誰支付的最少?
1. 為了在 Tableau Desktop 中回答此問題,我們需要瞭解有關僅 LOD 方法的一些資訊。使用 Tableau Prep 的兩種方法都會為駕駛員篩選出不是第一次或第二次違章的記錄。Tableau Desktop 中的 LOD 方法會保留所有記錄。這意味著,如果我們按**「Driver ID」**(駕駛員 ID)建立**「SUM(Amount Paid)」**的視覺化項,僅 Tableau Desktop 版本將為違章超過兩次的駕駛員顯示更高的金額。若要從與其他方法匹配的完整資料中獲取**「Total Amount Paid」**(總支付金額)值,而不是使用原始**「Fine Amount」**(罰款金額)欄位,則我們需要像使用第一個資料結構所做的那樣將第一次和第二次罰款加總。
2. 使用我們為問題 2 建立的欄位,我們將新增兩個罰款金額。`ZN` 是必要的,以防止任何只有一次違規的司機出現無效結果。計算為:
**Total Amount Paid**(總支付金額)= `[1st Fine Amount] + ZN([2nd Fine Amount])`
結果將與使用其他兩個資料結構的結果相同。
4.有多少駕駛員有過多種類型的違章?
1. 為了在 Tableau Desktop 中回答此問題,我們不能簡單地顯示**「司機 ID」**和**「違規類型」**的不重複計數。由於此資料集有超過第二次的違章,因此某些駕駛員可能有兩種以上的違章類型。為了使結果與其他方法相符,我們需要將範圍限制為僅包含前兩次違章。
1. 我們可以拉出第一次和第二次違章類型,將這些類型放在 LOD 運算式中,使它們 `FIXED` (固定)到駕駛員層級,然後使用 `IF` 計算來對類型計數:
1. **1st Infraction Type**(第一次違章類型)= `{ FIXED [Driver ID] : MIN ( IF [1st Infraction] = [Infraction Date] THEN [Infraction Type] END ) }`
2. **2nd Infraction Type**(第二次違章類型)= `{ FIXED [Driver ID] : MIN ( IF [2nd Infraction] = [Infraction Date] THEN [Infraction Type] END ) }`
3. **Number of Infraction Types**(違章類型數量)=
IF \[1st Infraction Type\] = \[2nd Infraction Type\] THEN 1
ELSEIF \[1st Infraction Type\] != \[2nd Infraction Type\] THEN 2
ELSE 1 END
**附註:**也可以透過直接將初始計算內嵌在較大的計算中,以單一欄位的形式建立多個這樣的計算。此處的合併計算將如下所示:
`IF {FIXED [Driver ID] : MIN(IF [1st Infraction]=[Infraction Date] THEN [Infraction Type] END)} = {FIXED [Driver ID] : MIN(IF [2nd Infraction]=[Infraction Date] THEN [Infraction Type] END)} THEN 1 ELSEIF {FIXED [Driver ID] : MIN(IF [1st Infraction]=[Infraction Date] THEN [Infraction Type] END)} != {FIXED [Driver ID] : MIN(IF [2nd Infraction]=[Infraction Date] THEN [Infraction Type] END)} THEN 2 ELSE 1 END`
理解起來有點困難,但如果願意使用的話,它確實有用。(請注意,分行符號和一些空格不會影響 Tableau 解讀計算的方式。)
2. 然後,我們可以依據「**Driver ID**」(駕駛員 ID)繪製「**Number of Infraction Types**」(違章類型數量)橫條圖並對其進行排序。
結果將與使用其他兩個資料結構的結果相同。
5.從未上過交通法規學習班的駕駛員的平均罰款金額是多少?
1. 為了在 Tableau Desktop 中回答此問題,我們無法簡單地將總罰款金額除以二,因為某些駕駛員只有一次違章。我們也無法計算每個駕駛員的平均罰款並取這些值的平均值,因為對平均值進行平均計算可能會導致不一致。作為替代,我們需要計算從未上過交通法規學習班的駕駛員支付的總金額,然後除以與這些罰款關聯的總違章次數。
1. 首先,我們需要確定是否每個駕駛員都有第二次違章。如果沒有第二次違章,則所有「2nd」欄位中的資訊都將為 null,我們可以利用這一事實並開始組建計算:
`IFNULL([2nd Infraction Type], 'no')`
這將返回違章類型(如果存在),或者如果沒有第二次違章,則返回「no」。
2. 接著,我們需要將此資訊轉換為違章次數 1 或 2。如果 `IFNULL` 計算的結果為 「no」,則應將駕駛員標記為有一次罰款。對於任何其他結果,則應標記為有兩次罰款。計算為:
**Number of Infractions**(違章次數)=
IF IFNULL(\[2nd Infraction Type\], 'no') = 'no' THEN 1
ELSE 2
END
3. 對於「Total Amount Paid」(總支付金額),我們可以使用問題 3 中的計算。總而言之,我們將利用這個總罰款金額,並將其除以新的**「Number of Infractions」**(違章次數)計算欄位,從而確定平均罰款金額:
**Average Fine**(平均罰款)= `SUM([Total Amount Paid]) / SUM([Number of Infractions])`
2. 我們還需要篩選出參加過交通法規學習班的駕駛員。由於此資料集包含一些有第三次或第四次違章的駕駛員,因此我們無法使用與樞紐資料結構相同的方法。相反,我們將採用與未樞紐資料相同的方法,總結如下:
1. 首先,我們需要組建兩個計算,確定第一次和第二次違章是否涉及交通法規學習班:
**1st Traffic School**(第一次交通法規學習班)= `{ FIXED [Driver ID] : MIN (IF [1st Infraction] = [Infraction Date] THEN [Traffic School] END ) }`
**2nd Traffic School**(第二次交通法規學習班)= `{ FIXED [Driver ID] : MIN (IF [2nd Infraction] = [Infraction Date] THEN [Traffic School] END ) }`
2. 然後,我們將新增這些值來獲取參加交通法規學習班的總次數:
**Number of Traffic School Attendances**(參加交通法規學習班次數)=
(CASE \[1st Traffic School\] WHEN 'Yes' THEN 1 WHEN 'No' THEN 0 ELSE 0 END)
+
(CASE \[2nd Traffic School\] WHEN 'Yes' THEN 1 WHEN 'No' THEN 0 ELSE 0 END)
3. 如果我們將**「Number of Traffic School Attendances」**(參加交通法規學習班次數)拖到「資料」窗格的「維度」區域,則值 0–2 將變為離散。
4. 現在,如果我們對「**Number of Traffic School Attendances**」(參加交通法規學習班次數)進行篩選,我們可以只選取 0,並且知道我們獲得了從未參加過交通法規學習班的駕駛員。
3. 為了回答原來的問題,我們只需將**「Average Fine」**(平均罰款)放到「標記」卡上的「文字」架。由於我們在計算中組建了彙總,因此欄位上的彙總將為 AGG,我們無法對其進行變更。這是預期行為。
結果將與使用其他兩個資料結構的結果相同。
請務必記住,此解決方案包含大量的嵌套計算和 LOD 運算式。視資料集的大小以及資料集的複雜性而定,可能會出現效能問題。
## 對各種方法的反思
那麼您應該採用哪種方法呢?這完全取決於您,並且工具任由您隨意使用。
- 如果您想要避開 LOD,則可以使用資料調整解決方案,儘管對於某些分析([Tableau Desktop 中的分析](#Desktop))計算可能是必需的。
- 如果您能夠調整資料並且熟悉計算(包括 LOD),則中間型選項可以提供最好的靈活性([更進一步 — 樞紐的資料](#Further))。
- 如果您熟悉 LOD、對效能的影響較小,並且/或者您無法存取 Tableau Prep,則單獨使用 LOD 解決此問題是可行的選項([再進一步 — 只使用計算](#Furtherer))。
至少,它對於瞭解 Tableau Prep 中的彙總和 Tableau Desktop 中的詳細資料層級運算式如何相互關聯以及會對資料分析產生怎樣的影響是有價值的。如同 Tableau 中的大多數功能一樣,執行任何操作的方法都有多種。探索各種各樣的選項可以幫助將概念聯係在一起,讓您能挑選最適合於自己的解決方案。
使用的計算:
### Driver Infractions(駕駛員違章)
- **Time Between Infractions**(違章間隔時間)= `DATEDIFF('day', [1st Infraction Date], [2nd Infraction Date])`
- **Total Amount Paid**(總支付金額)=`[1st Fine Amount] + ZN([2nd Fine Amount])`
- **Number of Infraction Types**(違章類型數量)= `IF [1st Infraction Type]=[2nd Infraction Type] THEN 1 ELSEIF [1st Infraction Type]!= [2nd Infraction Type] THEN 2 ELSE 1 END`
- **Number of Infractions**(違章次數)= `IF IFNULL([2nd Infraction Type], 'no') = 'no' THEN 1 ELSE 2 END`
- **Average Fine**(平均罰款)= `( SUM([1st Fine Amount]) + SUM( ZN([2nd Fine Amount]) ) ) / SUM([Number of Infractions])`
- **Number of Traffic School Attendances**(參加交通法規學習班次數)= `(CASE [1st Traffic School] WHEN 'Yes' THEN 1 WHEN 'No' THEN 0 ELSE 0 END) + (CASE [2nd Traffic School] WHEN 'Yes' THEN 1 WHEN 'No' THEN 0 ELSE 0 END)`
### Pivoted Driver Infractions(樞紐的駕駛員違章)
- **1st Infraction**(第一次違章)= `{FIXED [Driver ID] : MIN(IF [Infraction Number] = "1st" THEN [Infraction Date] END)}`
- **2nd Infraction**(第二次違章)= `{FIXED [Driver ID] : MIN(IF [Infraction Number] = "2nd" THEN [Infraction Date] END)}`
- **Time Between Infractions**(違章間隔時間)= `DATEDIFF('day', [1st Infraction], [2nd Infraction])`
- **1st Fine Amount**(第一次罰款金額)= `{FIXED [Driver ID] : MIN( IF [Infraction Number] = "1st" THEN [Fine Amount] END ) }`
- **Number of Infractions**(違章次數)= `IF IFNULL(STR([2nd Infraction]), 'no')= 'no' THEN 1 ELSE 2 END`
- **Average Fine**(平均罰款)= `SUM([Fine Amount])/SUM([Number of Infractions])`
- **Attended Traffic School**(已參加交通法規學習班)= `{ FIXED [Driver ID] : MAX( CONTAINS([Traffic School], 'Yes'))}`
### LOD Driver Infractions(LOD 駕駛員違章)
- **1st Infraction**(第一次違章)= `{FIXED [Driver ID] : MIN([Infraction Date])}`
- **2nd Infraction**(第二次違章)= `{ FIXED [Driver ID] : MIN( IF [Infraction Date] > [1st Infraction] THEN [Infraction Date] END ) }`
- **Time Between Infractions**(違章間隔時間)= `DATEDIFF('day', [1st Infraction], [2nd Infraction])`
- **1st Fine Amount**(第一次罰款金額)= `{FIXED [Driver ID] : MIN( IF [1st Infraction] = [Infraction Date] THEN [Fine Amount] END ) }`
- **2nd Fine Amount**(第二次罰款金額)= `{FIXED [Driver ID] : MIN( IF [2nd Infraction] = [Infraction Date] THEN [Fine Amount] END ) }`
- **Total Amount Paid**(總支付金額)= `[1st Fine Amount] + ZN([2nd Fine Amount])`
- **1st Infraction Type**(第一次違章類型)= `{FIXED [Driver ID] : MIN( IF [1st Infraction] = [Infraction Date] THEN [Infraction Type] END ) }`
- **2nd Infraction Type**(第二次違章類型)= `{FIXED [Driver ID] : MIN( IF [2nd Infraction] = [Infraction Date] THEN [Infraction Type] END ) }`
- **Number of Infraction Types**(違章類型數量)= `IF [1st Infraction Type]=[2nd Infraction Type] THEN 1 ELSEIF [1st Infraction Type]!= [2nd Infraction Type] THEN 2 ELSE 1 END`
- **Number of Infractions**(違章次數)= `IF IFNULL([2nd Infraction Type], 'no') = 'no' THEN 1 ELSE 2 END`
- **Average Fine**(平均罰款)= `SUM ([Total Amount Paid]) / SUM([Number of Infractions])`
- **1st Traffic School**(第一次交通法規學習班)= `{FIXED [Driver ID] : MIN (IF [1st Infraction] = [Infraction Date] THEN [Traffic School] END ) }`
- **2nd Traffic School**(第二次交通法規學習班)= `{FIXED [Driver ID] : MIN (IF [2nd Infraction] = [Infraction Date] THEN [Traffic School] END ) }`
- **Number of Traffic School Attendances**(參加交通法規學習班次數)= `(CASE [1st Traffic School] WHEN 'Yes' THEN 1 WHEN 'No' THEN 0 ELSE 0 END) + (CASE [2nd Traffic School] WHEN 'Yes' THEN 1 WHEN 'No' THEN 0 ELSE 0 END)`
**附註:**特別感謝 Ann Jackson 的 Workout Wednesday 主題 [Do Customers Spend More on Their First or Second Purchase?(客戶在第一次或第二次購買時是否花費更多?)](https://www.workout-wednesday.com/2018/06/13/week-24-do-customers-spend-more-on-their-first-or-second-purchase/)以及 Andy Kriebel 的 Tableau Prep 技巧 [Returning the First and Second Purchase Dates(返回第一次和第二次購買日期)](https://www.vizwiz.com/2018/06/first-second-purchase.html?m=1),這些文章為本教程提供了最初的靈感。按一下這些連結會使您離開 Tableau 網站。Tableau 對於外部提供者所維護之頁面的準確性或新鮮度不擔負任何責任。如果您對內容有疑問,請聯絡其擁有者。
[跳至主要內容](#main-content)
# Tableau Prep Builder 疑難排解
本文列出了您在使用 Tableau Prep Builder 時可能遇到的問題以及有關如何解決這些問題的建議。
對流程問題進行疑難排解時,無論是為自己偵錯還是聯絡支援人員,您通常都需要收集記錄檔和損毀傾印檔案以進行分析,並記錄重現錯誤所需的步驟。提供在錯誤發生前採取的確切步驟以及流程檔案,是幫助開發人員或支援團隊診斷問題的最佳方式。
## 正在收集記錄檔和損毀傾印檔案
Tableau Prep 記錄檔儲存在「我的 Tableau Prep 存放庫」資料夾中。預設情況下,該位置為:
**Windows**: `C:\Users\ preprestapi.log Java.exe 這是 Java 程式碼產生的記錄檔。有關 REST API 使用、編譯、快取管理以及 tabminerva(先前稱為 prepservice)程序的啟動和關閉的記錄項目應位於此處。 prepservice.exe tabminerva.exe 此記錄檔由 C++ 程式碼產生。 此記錄檔包括與 Tableau 共用技術堆疊的所有互動,包括與資料庫的連線、查詢、執行、外部快取、查詢管道、協定等。 這是舊 Tableau 資料引擎建立的記錄檔。Tableau Prep 仍使用 Tableau 資料引擎。 通訊協定伺服器記錄檔。任何使用託管資料庫驅動程式的內容都將在此檔案中產生記錄行。 Hyper 記錄檔。此處包含查詢及與查詢相關的錯誤。 「There are errors in the flow.Unable to run the flow. Check that the credentials .json file includes all required credentials.在 Tableau Prep Builder 中開啟流程以檢視錯誤詳情。」 輸入連線的 credentials.json 檔案中缺少認證,或者流程包含錯誤。 請檢查 .json 檔案是否具有所有連線的認證,並在 Tableau Prep Builder 中開啟流程檔案,確定流程中是否存在任何錯誤。 如果流程有錯誤,您必須修復這些錯誤並將流程重新發佈到 Tableau Server,然後再次嘗試執行該過程。 請確保 credentials.json 檔案包括主機名稱(伺服器名稱)的正確認證。 有關詳情和範例,請參閱透過命令列重新整理流程輸出檔案。 請確保 credentials.json 檔案包括錯誤訊息中所列主機名稱(伺服器名稱)的正確認證。 有關詳情和範例,請參閱透過命令列重新整理流程輸出檔案。 請確保 credentials.json 檔案包括適用於輸出連線的所有正確認證和元素。 有關詳情和範例,請參閱透過命令列重新整理流程輸出檔案。 請確保 credentials.json 檔案包括適用於輸出連線的所有正確認證和元素。 有關詳情和範例,請參閱透過命令列重新整理流程輸出檔案。 請確保在命令列中包括 credentials.json 檔案的路徑,並驗證 credentials.json 檔案是否包括適用於輸出連線的所有正確認證和元素。 有關詳情和範例,請參閱透過命令列重新整理流程輸出檔案。 請確保正確安裝了 Tableau Prep Builder,並且您以管理員執行命令。 如需有關如何安裝 Tableau Prep Builder 的資訊,請參閱從使用者介面安裝 Tableau Desktop 或 Tableau Prep Builder。 與 IT 部門合作,透過 Proxy 安全列出 Tableau Cloud URL。 從 Tableau Prep Builder 中登出並重新登出。 如果有自動 Proxy 設定指令碼,請驗證它是否在不提示輸入認證的情況下處理驗證。 所需的 SSL 憑證可能缺失或與 [serverhostname] 的 Tableau Server 憑證不相符。 在伺服器上執行流程時,也顯示為「找不到流程 ID 請求的憑證路徑」。 請確保已將 SSL 憑證鏈檔案上傳到 Tableau Server。 在執行 Prep Builder 的電腦上安裝憑證(如果按兩下並選取「安裝憑證」會傳回「該檔案無效,無法用於以下內容:安全性憑證」,則憑證檔案本身可能格式錯誤。與 IT 合作匯出有效的鏈檔案。 如果落後於 AWS 負載平衡器,請將原則降級為 ELBSecurityPolicy-TLS-1-2-2017-01。 由於基礎處理序意外停止,Tableau Prep Builder 已停止執行。如果問題仍然存在,請嘗試重新安裝產品。 這可能由多種因素觸發:VPN/網路設定(透過 Cato Network VPN 阻止本機主機通訊確認)、防毒幹擾或開啟特定 .tfl 檔案時連接埠檔案損壞。 附註:切勿將 Tableau Prep Builder 安裝在 Tableau Server 節點上。這是此錯誤的已知原因。 重新安裝、檢查 AV 排除、驗證本機主機 IPv4/IPv6 通訊 如果是 VPN 特定的,請使用備用 VPN 進行測試以進行隔離;讓網路團隊參與檢查 localhost 區塊 若繫結至特定 .tfl 檔案,請收集 Prep 記錄和 IPS 轉儲,以調查 tabminerva 程序當機 確保未在任何 Tableau Server 節點上安裝 Tableau Prep Builder。 注意:此修補檔適用於 2022.2 及更高版本。 升級到修補檔涵蓋的版本。 作為舊版本的解決方法,請避免在樞紐的下游步驟中修改樞紐的欄值。 簡化流程。請嘗試在聯結之前移除未使用的欄位、套用篩選器、移動篩選器或匯總,以壓縮資料表。 嘗試使用流程輸出作為最終流程的輸入將流程拆分為較小的流程。 有關更多想法,請參閱改善資料準備流程效能的最佳做法。 將輸出切換到本機 .hyper 檔案,以確認該問題是雲端特定的。 降低流程複雜性、分成更小的流程、移除未使用的欄或使用即時連線。 Windows TEMP 環境變數設定為相對路徑(例如 Tableau Prep Builder 需要絕對路徑。 驗證 Windows TEMP 環境變數是否設定為絕對路徑(例如 從 TEMP 變數中移除任何重複項目。 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 返回數位的自然對數。如果數字小於或等於 0,則傳回 Null。 範例: 返回數字以給定底數為底的對數。如果省略了底數值,則使用底數 10。 範例: 範例: 範例: 返回數字常量 pi:3.14159。 範例: 範例: 也可以使用 ^ 符號: 範例: 範例: 此範例將每個銷售額值舍入為整數: 範例: 如果 profit 欄位的平均值為負值,則 範例: 範例: 範例: 返回角度的正切。以弧度為單位指定角度。 範例: 如果運算式不為 Null,則返回該運算式,否則返回零。使用此函數可使用零值而不是 Null 值。 範例: 範例: 範例: 範例: 範例: 範例: 範例: 如果給定字串為有效日期,則傳回 true。 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 傳回字串中的子字串,由從字串開頭或結尾擷取字元的分隔符號決定。 範例: 範例: 範例: 範例: 範例; 範例: 範例: 範例: 範例: 範例: 傳回運算式的母體標準差。 範例: 返回運算式中所有值的總計。SUM 只能用於數位欄位。會忽略 Null 值。 範例: 基於群體樣本返回給定運算式中所有值的統計變異數。 範例: 對整個群體返回給定運算式中所有值的統計變異數。 範例: 如果運算式不為 Null,則返回該運算式,否則返回零。使用此函數可使用零值而不是 Null 值。 範例: 範例: 請注意,引號是必需的。 範例: 請注意,引號是必需的。 範例: 範例: 範例: 給定日期運算式和時間運算式,傳回日期和時間值。 範例: 傳回由小時、分鐘和秒構成的時間值。 範例: 傳回給定運算式的字串。 範例: 以字串形式傳回 Age 度量的所有值。 範例: 傳回兩個日期之間的差值,其中從結束日期減去開始日期。差異以 date_part 為單位表示。如果省略 start_of_week,則週開始日由為資料來源設定的開始日決定。 範例: 範例: 範例: 範例: 範例: 範例: 範例: 以整數的形式傳回指定日期的月份。 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 如果運算式不為 Null,則返回該運算式,否則返回零。使用此函數可使用零值而不是 Null 值。 範例: 範例: 傳回目標列(指定為與目前列的相對偏移)中運算式的值。如果無法確定目標列,則傳回 NULL。 範例: 傳回上一列的 SALES 值。 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 範例: 請以管理員身分從 .exe 檔案所在的目錄執行該指令,或指定電腦上 .exe 檔案的完整路徑。請勿從共用目錄執行。有關支援的安裝程式選項清單,請參閱安裝程式選項。有關支援的安裝程式屬性的清單,請參閱安裝程式屬性。 範例: 此命令會在無提示模式下安裝 Tableau 版本 2026.2(不顯示提示、UI 或授權對話方塊)。它會在不重新啟動的情況下完成安裝、接受終端使用者授權合約 (EULA),並將錯誤報告和使用情況報告設定為關閉。 使用提供的產品金鑰啟用產品。成功時以代碼 0 結束。否則結束時會顯示錯誤代碼。也接受單破折號 (-activate)。 若要在安裝過程中啟用產品,請新增一條包含安裝程式選項 ACTIVATE_KEY「<key>」的命令列,並在引號中輸入產品金鑰。 註冊產品。也接受單破折號 (-register)。若要透過命令列註冊 Tableau,需要在將執行 Tableau Prep Builder 的每台電腦上預先填充登錄檔 (Windows) 或 .plist (Mac) 值。 對於 Windows,可以透過新增包含安裝程式選項 REGISTER=“1” 的單一命令列在安裝期間註冊產品。 使用授權目前維護期的到期日期更新授權,並停止到期訊息。成功時以代碼 0 結束。也接受單破折號 (-refresh)。 Windows:使用 MacOS:在 /Applications 路徑中對 Tableau 物件執行 停用提供的產品金鑰,以便可以重複使用。也接受單破折號 (-return)。 Windows:使用 MacOS:在 /Applications 路徑中對 Tableau 物件執行 從指定檔案載入應用程式設定設定。可以多次指定以支援分層設定,例如擁有每個人都使用的全域 Proxy 伺服器設定以及用於流程的特定資料庫設定時。 .json 檔範例: 範例命令: Windows: MacOS 設定存放庫目錄。預設情況下,在安裝期間,Tableau Prep 會在「文件」資料夾中建立一個名為「我的 Tableau Prep 存放庫」的資料夾。此資料夾包含流程、資料來源、連線以及記錄檔的資料夾和一個暫存快取。在伺服器或自動化環境中,可以使用此命令指定替代存放庫位置,並將流程執行指向該位置。 範例: Windows: " MacOS: 用於儲存電子應用程式資料的目錄。 如果在多個處理序需要隔離應用程式狀態的高並行環境中執行 Tableau Prep Builder,或者在對周邊伺服器上的持續性工作階段鎖定錯誤進行疑難排解時,請以管理員身分使用此旗標。 附註:執行命令時,它會自動建立 範例: Windows: MacOS: 開啟指定的 .tfl 流程檔案。如果檔案路徑包含空格,請使用雙引號。 範例: Windows: "C:\Program Files\Tableau\Tableau Prep Builder 2026.2\Tableau Prep Builder.exe" -tfl "C:\Users\jsmith\Documents\My Flows\Clean_Sales_Data.tfl" MacOS: /Applications/Tableau\ Prep\ Builder\ 2026.2.app/Contents/MacOS/Tableau\ Prep\ Builder -tfl "/Users/jsmith/Documents/My Flows/Clean_Sales_Data.tfl" 開啟指定的 .tflx 封裝流程檔案。 範例: Windows: MacOS: 包含資料來源和伺服器認證的 .json 檔路徑。 如果使用遠端連線,Tableau Prep Builder 將使用流程檔案和 credentials .json 檔案中的資訊來執行流程。有關詳情,請參閱 .json 檔要求的認證。 如果連線至 Snowflake 資料庫,請務必包含任何特定參數,例如角色、倉儲,有時還包括 OAuth 權杖或外部瀏覽器驗證。 .json 設定檔案範例 - Snowflake: 範例: Windows: MacOS: 覆寫流程中預設參數值的 .json 檔案的路徑。該檔案獨立於 credentials.json 檔案,包含參數名稱和值。 有關詳情,請參閱.json 檔要求的認證中的「執行包含參數值的流程」。 範例: Windows: MacOS: 如果伺服器上沒有啟用 Tableau Prep Conductor 來安排流程執行,可以使用此命令透過增量重新整理來執行流程。有關詳情,請參閱在啟用累加式重新整理的情況下執行流程。 範例: Windows: MacOS: 啟用偵錯模式。在存放庫資料夾中產生詳細記錄以進行疑難排解。記錄檔存放位置:My Tableau Prep Builder Repository\Command Line Repository\Logs 範例: Windows: MacOS: 停用 SSL 憑證驗證(對某些內部伺服器環境很有用)。在 MacOS 上使用命令列執行流程時,會出現一個對話方塊,要求提供金輪鏈使用者和密碼。 從 Tableau Prep Builder 2019.3.2 版開始,您可以輸入這個額外參數來停用此鑰匙圈對話方塊。 範例: MacOS: 顯示命令列選項的說明功能表。 版權聲明 從版本 2025.2 開始,在 Tableau Cloud 中受支援(需要 Tableau+),並在開啟 Tableau Agent 的情況下連線到 Tableau Cloud 時Tableau Prep Builder。 從版本 2025.3 開始,連線到開啟 Tableau Agent 的 Tableau Server 時,在 Tableau Prep Builder 中支援 Tableau Agent。 更多詳情,請參閱「在 Tableau Cloud 站台中啟用 AI」和「在 Tableau Server 站台中啟用 AI」。 篩選資料 建立篩選器計算(作為流程計劃的一部分) 篩選 Null 值 按日期時間範圍篩選值 按相對日期篩選器篩選值 移除欄位 變更資料類型 快速清理作業 變成大寫 變成小寫 變成詞首字母大寫 移除所有空格 移除額外的空格 移除字母 移除數字 移除所有標點符號 剪裁空格 建立計算(單獨或作為流程計劃的一部分) 重命名欄位 轉換日期格式 拆分值 識別重複列 填補順序資料的間隙 建立新增列步驟以產生缺少的列並設定設定選項 將欄樞紐為列 將列樞紐為欄 建立彙總步驟 作為彙總步驟的一部分,對值進行彙總和分組 將我們的任務分解為多個部分並進行迭代。例如: <任務 1>「將我的航班欄位拆分為『航班』、『日期』、『價格』和『目的地』。 <任務 2>「將『價格』的資料類型變更為十進制,將『日期』欄位變更為日期和時間」 重新整理每次執行流程的所有資料。 如果流程執行時輸出資料來源不存在或無法連線,則流程將失敗。需要完全重新整理才能建立輸出,然後才能對其進行累加式使用。 僅新增新列至現有資料表。附加至資料表不適用於 .csv 輸出類型。請參閱使用「附加」進行累加式重新整理。 Tableau Prep Builder 或 Tableau Server 需要 Databricks ODBC 驅動程式版本 2.8.2 或更高版本。所需的驅動程式會自動部署在 Tableau Cloud 環境中。 在 Tableau Cloud 中或發佈到 Tableau Cloud 時支援(從版本 2025.3 開始)。 資料表名稱不能超過 255 個字元或包含以下任何字元: 英文句點 (.) 空格 ( ) 正斜線 (/) 所有 ASCII 控制字元(00-1F 十六進位) DELETE 字元(7F 十六進位) 分號 (;) 僅支援建立和 取代寫入選項。目前不支援附加。 僅支援完整重新整理。不支援累加式重新整理。 Tableau 最多可以寫入 2 GB 表格作為輸出。 必須將倉儲選項設定為自動復原,以使 Tableau Prep 能夠將資料寫入資料庫倉儲。有關詳細資訊,請參閱 Snowflake 說明文件中的自動擱置與自動繼續執行。 您必須被指派到 CRM Analytics Plus 或 RM Analytics Growth 授權。 CRM Analytics Plus 授權包含權限集: CRM Analytics Plus 管理員:啟用管理 CRM Analytics 平台和 Einstein Discovery 所需的所有權限,包括建立和管理 CRM Analytics 模板化應用程式和應用程式的權限。 CRM Analytics Plus 用戶:啟用使用 CRM Analytics 平台、Einstein Discovery 和 CRM Analytics 範本應用程式和應用程式所需的所有權限。 CRM Analytics Growth 授權包含權限集: CRM Analytics Plus 管理員:啟用管理 CRM Analytics 平台所需的所有權限,包括建立和管理 CRM Analytics 樣板化應用程式和應用程式的權限。 CRM Analytics Growth 使用者:啟用使用 CRM Analytics 平台和 CRM Analytics 樣板化應用程式和應用程式所需的所有權限。 有關詳情,請參閱 Salesforce 說明中的了解 CRM Analytics 授權和權限集和選取和指派使用者權限集。 管理員設定 Salesforce 管理員需要設定: Tableau Prep 授權與權限 Creator 授權 作為 Creator,您需要先登入 Salesforce 組織帳戶並進行身份驗證,然後才能選取應用程式和資料集來輸出流程資料。 OAuth 資料連線 作為伺服器管理員,使用 OAuth 用戶端 ID 和連接器上的密碼設定 Tableau Server。這是在 Tableau Server 上執行流程程所必需的。 有關詳情,請參閱 Tableau Server 說明中的為 Salesforce.com 驗證設定 Tableau Server。 Salesforce 授權 有關 Data Cloud 版本和附加授權的詳情,請參閱 Salesforce 說明中的Data Cloud 標準版和授權。 另請參閱Data Cloud 限制和方針。 您必須被指派到資料空間並被指派到 Data Cloud 中的以下權限集之一: 有關詳情,請參閱管理資料空間與使用舊版權限集管理資料空間。 擷取 Data Cloud 權限 您必須被指派至以下權限才能進行欄位存取以擷取 Data Cloud: 有關詳情,請參閱啟用物件和欄位權限。 啟用個人檔案存取權限:
### 啟用查詢記錄
從 Tableau Prep Builder 版本 2026.2 開始,可以在說明\>設定和效能功能表下開啟啟用查詢記錄設定,而無需重新啟動應用程式。開啟時,此設定會為 Tableau Prep Builder 執行的每個查詢產生一個 XML 查詢檔案。這在診斷流程問題時很有幫助。記錄檔會產生並儲存在查詢資料夾中。

可以在以下目錄中找到這些查詢記錄檔:
**Windows**: `C:\Users\記錄檔檔案名稱 產生記錄檔的程序 描述 app.log Tableau Prep.exe 使用者介面記錄檔。這是由在電子處理序中運行的 JavaScript 代碼產生的。 backendProcessManager.log Tableau Prep.exe 這是由啟動並監控 Java 處理序的 JavaScript 代碼所產生的。 log.txt tdeserver.txt tdeserver64.exe tabprotosrv.txt tabprotosrv.exe hyperd.log hyperd.exe
若要建立損毀傾印檔案,請根據作業系統執行以下動作。
#### Windows
1. 開啟「工作管理員」。
2. 右鍵按一下欄標題,然後選取處理序名稱和命令列。這將顯示不同的處理序,並使您能夠選取要用於建立損毀傾印檔案的處理序。
3. 以右鍵按一下 tabminerva.exe 處理序(先前為 prepservice.exe)。
4. 選取「建立傾印檔案」。
將開啟一個對話方塊,並顯示損毀傾印檔案在系統上的位置。
#### MacOS
在 MacOS 上,有兩種類型的診斷檔案可用於對 Tableau Prep 進行疑難排解:
- 損毀報告 — 記錄損毀時的呼叫堆疊,類似於堆疊追蹤。
- 核心檔案 — 終止時處理序記憶體的完整快照。
兩者都需要終止 Tableau Prep 程序。收集這些檔案後,將需要重新啟動 Tableau Prep。
**必要條件**:核心檔案收集需要管理員存取權。
**步驟 1**:建立損毀報告
1. 開啟終端機。
2. 執行命令: `pgrep tabminerva | xargs kill -SEGV`
這會透過向 tabminerva.exe 處理序傳送分割錯誤訊號來終止該處理序,從而導致 MacOS 自動產生損毀報告。
3. 在以下位置尋找儲存的損毀報告: `~/Library/Logs/DiagnosticReports/`
檔案名稱採用 tabminerva\_YYYY-MM-DD-HHMMSS\_machinename.crash 或 tabminerva\_YYYY-MM-DD-HHMMSS\_machinename.ips 格式
將此檔案傳送給 Tableau 支援或開發團隊時,請務必說明您有意傳送區隔錯誤訊號以產生報告。這將其與真正的毀損區分開來。
**步驟 2**:建立核心檔案
建立核心檔案時,使用以下選項之一。
**建立核心檔案並終止 Tableau Prep 工作階段**
1. 開啟終端機。
2. 執行命令 `sudo chmod 1777 /cores` 以授予對核心檔案目錄的寫入存取權限。
3. 執行命令 `ulimit -c unlimited` 以移除目前終端工作階段的核心檔案大小限制。
4. 執行命令 `pgrep tabminerva | xargs kill -SEGV` 以終止程序並產生核心檔案。
5. 在 `/cores/` 中找到核心檔案,並將其命名為 `core.處理序 描述 tabminerva.exe(先前為 prepservice.exe) 這是承載 Tableau Prep 商務邏輯其餘部分的原生程序。這個程序也包含共用的 Tableau 原生技術,包括資料庫連接器。 hyperd.exe 這是 Hyper 資料庫處理序。查詢失敗的任何時候。發生故障時,hyper 的損毀傾印可能很有用,因為 Tableau Prep 所做的大部分工作都涉及對 hyper 的查詢。
## 常見 Tableau Prep 錯誤
下表描述在使用 Tableau Prep 時可能遇到的一些常見錯誤以及可以嘗試的解決方案。
錯誤 原因 如何修復 「Missing arguments」(缺少引數) 缺少必需的命令列引數之一。 使用「tableau-prep-cli -help」來查看命令列引數的清單。 「Unable to read the connections file.」(無法讀取連線檔案。) 輸入連線的 credentials.json 檔案中的語法或格式存在錯誤。 請檢查 .json 檔案中輸入連線的語法。有關詳情和範例,請參閱透過命令列重新整理流程輸出檔案。 「Could not find match for <hostname of inputConnections >」(找不到 <輸入連線的主機名稱> 的匹配項) Credentials.json 檔案缺少主機名稱(伺服器名稱)條目。 「We don't have credentials of all connections in tfl/tflx file.The following connection(s) were not found: <hostname of inputConnections>」(tfl/tflx 檔案中沒有所有連線的認證。找不到以下連線:<輸入連線的主機名稱>) credentials.json 檔案缺失,或包含對於錯誤訊息中顯示的主機名稱(伺服器名稱)而言不正確的認證。 「Error signing in server <serverUrl> as a user <userName>.Please check the credentials.」(以使用者 <使用者名> 登入到伺服器 <伺服器 URL> 時出錯。請檢查認證。) credentials.json 檔案包含的認證對於 Tableau Server 不正確。 「Could not sign in successfully as <userName> to server <serverUrl>(<contentUrl>)」(無法以 <使用者名> 成功登入到伺服器 <伺服器 URL>(<內容 URL>)) credentials.json 檔案包含的認證對於 Tableau Server 不正確。 「We don't have credentials for Tableau Server to publish extract for one or more output nodes in tfl/tflx file.」(tfl/tflx 檔案中沒有用於為一個或多個輸出節點發佈擷取的 Tableau Server 認證。) credentials.json 檔案未作為命令列引數傳入,或者其缺少輸出連線的認證。 「Loom rest api server not started」(Loom rest api 伺服器未啟動) 安裝或環境設定不正確。 「Error.Flow file does not exist.」(錯誤。流程檔案不存在。) 流程檔案的路徑不正確。 請確保在命令列中包括流程檔的正確路徑。 「Error.Connections file does not exist.」(錯誤。連線檔案不存在。) credentials.json 檔案的路徑不正確。 請確保在命令列中包括 credentials.json 檔案的正確路徑。 「找不到 <mapr01:5181><mapr02:5181>,<mapr03:5181> 相符項目」 使用 ZooKeeper 連線到 Apache Drill 時,您必須指定特定的埠 ID。 在命令列中包含指定「埠」:31010 的 credentials.json 檔案以用於輸入認證。
## 此區段的其他文章
[跳至主要內容](#main-content)
# Tableau Prep Builder 入門指南
**附註**:從版本 2020.4.1 開始,作為 Creator,還可以在 Web 上建立和編輯流程。本教程是使用 Tableau Prep Builder 設計的,但也可以在 Web 上完成,除了有一些需要注意的例外情況。
本教程會介紹 Tableau Prep 中的常見操作。您將使用 Tableau Prep 附帶的樣本資料集來演練為範例 Superstore 建立流程。本教程使用最新版本的 Tableau Prep Builder。如果您使用的是以前的版本,結果可能會不同。
請在進行演練的過程中觀看提示,深入瞭解 Tableau Prep 如何幫助您清理和調整資料以進行分析。
若要在繼續本教程之前安裝 Tableau Prep Builder,請參閱 Tableau Desktop 和 Tableau Prep Builder 部署指南中的[從使用者介面安裝 Tableau Desktop 或 Tableau Prep Builder](https://help.tableau.com/current/desktopdeploy/zh-tw/desktop_deploy_download_and_install.htm)。否則您可以下載[免費試用版](https://www.tableau.com/zh-tw/products/prep/download)。
#### 範例檔案
為完成本教程中的工作,需要安裝 Tableau Prep Builder,或若已在伺服器版本 2020.4 或更高版本上啟用 Web 製作,也可以在 Web 上嘗試這些步驟。
在電腦上安裝 Tableau Prep Builder 之後,還可以在以下位置找到範例檔案:
- (Windows) `C:\Program Files\Tableau\Tableau Prep Builder 錯誤 原因 如何修復 Knowledge 文章 無法連線到 Tableau Server。檢查伺服器是否正在執行以及 URL 是否正確。 tableauErrorCode=0xD5A9A6F9; tableauStatusCode=UNAUTHENTICATED; exceptionName=VizportalAuthenticationExceptionProxy 或防火牆阻止 Tableau Prep Builder 的內嵌瀏覽器完成 Tableau Cloud 登入握手。 在需要驗證的 Tableau Online 環境中無法從 Tableau Prep Builder 登入到 Tableau Online 需要驗證的 Proxy Tableau Server 上缺少 SSL 憑證鏈結檔案,或者執行 Tableau Prep Builder 的電腦上未安裝該鏈結檔案。在某些情況下,問題是由 AWS 負載平衡器使用不相容的 TLS 原則引起的。 錯誤 - 所需的 SSL 憑證可能遺失或與 Tableau Server 憑證不相符 - 從 Tableau Prep 登入 錯誤:由於啟動 Tableau Prep 時基礎處理序意外停止,Tableau Prep 已停止執行 AqlProcessor evaluation failed:已取消 — 流程在樞紐步驟後失敗 在樞紐步驟後變更樞紐欄的值時的已知問題。 錯誤:系統錯誤 - 與資料來源 (LoomDataSource) 通訊時發生錯誤 在樞紐步驟之後變更樞紐欄的值時發生 此流程需要的記憶體多於目前為執行此動作而配置的記憶體。請考慮篩選資料或將流程細分為更小的部分。 流程的大小或複雜性需要的記憶體超出 Tableau Cloud 中完成流程作業的可用記憶體量。 嘗試執行流程時出現錯誤「無法配置 ###### 位元組的記憶體:已超出 ###### 位元組的「全域記憶體限制」限制」 無法發佈資料來源」 — 流程在本機或輸出到 .hyper 檔案時成功執行,但在發佈到 Tableau Cloud 時失敗。 由於臨時檔案大小超過 Tableau Cloud 限制,流程失敗。當流程因與記憶體相關的 SQL 錯誤(例如,大型 JOIN 作業)而失敗時,也會出現這種情況,這些錯誤僅在 Tableau Cloud 中出現,而不是在本機出現。 不適用 Prep Builder 無法在 Windows 上開啟;偵錯記錄顯示與相對暫存資料夾路徑相關的錯誤。 %USERPROFILE%\AppData\Local\Temp)或包含重複的路徑項目。C:\Users[username]\AppData\Local\Temp)不適用
## 背景故事...
您在一家大型零售連鎖店的總部工作。您的老闆想要分析過去四年公司的產品銷售額和利潤。您推薦他使用 Tableau Desktop 來完成該操作。您的老闆認為這個主意很棒,並希望您立即著手完成該工作。
在開始收集需要的所有資料時,您注意到,有人已經透過其他方式為每個區域收集和跟蹤過資料。您還注意到不同檔案中有大量創新資料條目,而且一個區域甚至每年都有單獨的檔案!
您將不得不先執行大量的資料清理工作,然後才能開始在 Tableau 中分析資料,而這項工作將需要很長時間。
在您翻找餐廳的菜單來訂晚餐時,您想起來 Tableau 有一款名為 Tableau Prep 的產品,該產品可能能夠幫助您完成艱巨的資料清理工作。
您下載了該產品,或註冊了[免費試用版](https://www.tableau.com/zh-tw/products/prep/download),決定試用一下。
## 1.連線至資料
開啟 Tableau Prep Builder 時,您首先看到是一個帶有「連線」窗格的開始頁面,就像 Tableau Desktop 一樣。

若要開始操作,第一步是連線至資料並建立輸入步驟。您將從該處開始建立工作流程(在 Tableau Prep 中稱之為 「流程」),並隨著進展新增更多步驟來對資料執行操作。
> [!TIP]
>
> **提示**:輸入步驟是資料的攝入點和流程的開始點。您可能有多個輸入步驟,並且某些步驟可能包括多個資料檔案。有關連線至資料的詳細資訊,請參閱[連線至資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_connect.htm)。
不同區域的銷售額資料檔案以不同的格式存放,並且「南部」區域的訂單實際上是多個檔案。您檢查了「連線」窗格,並發現您有很多選取來連線至資料。太棒了!
由於其他區域全部四年的資料是一個檔案,因此您決定先著手處理「南部」區域的檔案。
1. 在「連線」窗格上,按一下「新增連線」 按鈕。
在 Web 製作中,從首頁按一下「建立」 > 「流程」,或者從「瀏覽」頁面按一下「新建」 > 「流程」。然後按一下「連線到資料」。
2. 檔案是 .csv 檔案,因此請在連線清單中選取「文字檔案」。
3. 巡覽到檔案目錄。在「南部區域訂單」子目錄中,選取第一個檔案 **orders\_south\_2015.csv**,然後按一下「開啟」以將其新增到流程中。(有關檔案位置,請參閱[總結和資源](#Wrap)。)
連線到第一個檔案後,Tableau Prep Builder 工作區將開啟,您會看到它分為兩個主要部分。頂部的**「流程」**窗格和底部的**「輸入」**窗格。

與 Tableau Desktop 很像,此**「流程」**窗格是您的工作區,可以在其中以可視化的方式與資料互動並建立流程。**「輸入」**窗格包含有關如何攝入資料的設定選項。該視窗還會顯示資料集的欄位、資料類型以及範例值。
我們將在下一部分中探討您如何才能與此資料交互。
> [!TIP]
>
> **提示:**對於單個表,Tableau Prep 會在您將資料新增到流程時自動為您在 **\[流程\]** 窗格中建立輸入步驟。否則,您可以使用拖放功能將表新增到「流程」窗格。
4. 您的南部區域訂單還有其他三個檔案,如何合併這些檔案取決於您在何處工作。
在 Tableau Prep Builder 中:
1. 可以單獨新增每個檔案,但若想要將所有檔案合併到一個輸入步驟中,則可在**「輸入」**窗格中按一下「表格」索引標籤。
2. 您會看到一個聯集多個表的選項。選取該選項。
您注意到,您在其中選取檔的目錄已填充,並且您需要的其他檔列在「輸入」窗格的「已包含表」區段中。
> [!TIP]
>
> **提示**:使用輸入聯集可以非常方便的連線和合併單一資料來源中具有類似名稱和結構的多個檔案。若要使用此選項,檔必須位於同一父目錄或子目錄中。如果沒有立即看到所需的檔案,請變更搜尋條件。有關詳情,請參閱[輸入步驟中的聯集檔案和資料庫資料表](https://help.tableau.com/v0.0/prep/zh-tw/prep_add_input_data.htm#Union)。

3. 按一下「套用」以將這些檔案中的資料新增到「orders\_south\_2015」輸入步驟。
4. 其他區域的檔案全部都是單一表檔案,因此您可以一次性選取所有檔案並將它們新增到流程。
**附註**:在 Web 上,檔案只能單獨上載。
在 Tableau Server 或 Tableau Cloud 中:
Tableau Server 或 Tableau Cloud 目前沒有可用的輸入聯集選項。但您仍然想包括所有的南部區域檔案並以相同方式的處理資料,因此合併這些檔案是有意義的。
1. 重複步驟 2 和 3 以從「南部區域訂單」子目錄中新增其餘的檔案。
2. 使用聯集步驟合併這些檔案。(有關詳情,請參閱[輸入步驟中的聯集檔案和資料庫資料表](https://help.tableau.com/v0.0/prep/zh-tw/prep_add_input_data.htm#Union)。)
1. 將 Orders\_South\_2016 拖到 Orders\_South\_2015 之上,並將其放在「聯集」選項上。

2. 將 Orders\_South\_2017 拖到新的「聯集」步驟之上,並將其放在「新增」上。對最終檔案重複此步驟。

5. 將其餘檔案新增至流程。
**在 Tableau Prep Builder 中:**
- 開啟檔案總管或 Finder,並巡覽到檔案的目錄。按住 Ctrl 並按一下,或按住 Command 並按一下 (MacOS),選取以下檔案並將它們拖放到**「流程」**窗格上,將這些檔案新增到流程。(有關檔案位置,請參閱[總結和資源](#Wrap)。)
- Orders\_Central.csv
- Orders\_East.xlsx
- Orders\_West.csv
**附註:**這些是不同的檔案類型。如果您看不到所有這些檔案,請確保您的檔案總管或 Finder 設定為查看所有檔案類型。

在 Tableau Server 或 Tableau Cloud 中:
- 請按照步驟 2 和 3 新增 Orders\_Central.csv 和 Orders\_West.csv。
- 在「連線」窗格上,按一下「新增連線」 按鈕。按一下 **Microsoft Excel**,然後選取 **Orders\_East.xlsx**。
### 檢查您的工作:觀看「連線至資料」的實際執行效果。
_按一下影像可重播_

## 2.瀏覽資料
現在,您已將資料檔案載入 Tableau Prep,您很確定自己想要將所有檔案合併在一起。但在執行該操作之前,不妨先檢查一下這些檔案,看看是否能找出任何問題。
在**「流程」**窗格中選取輸入步驟時,您可能會看到用於引入資料的設定、包含的欄位以及值的預覽。
在這裡可以很方便地決定要在流程中包括多少資料,以及移除或篩選不需要的欄位。您還可以變更未正確指派的任何資料類型。
> [!TIP]
>
> **提示**:如果在處理大型資料集,Tableau Prep 會自動引入資料樣本,從而最大限度提升效能。如果看不到預期資料,您可能需要調整樣本。可在「資料樣本」索引標籤上執行此操作。有關設定資料選項和樣本大小的詳情,請參閱[設定資料範例大小](https://help.tableau.com/v0.0/prep/zh-tw/prep_configure_dastaset.htm#sample)。
在「流程」窗格中,當您選取每個步驟並查看每個資料集時,您注意到需要稍後修正的一些問題,以及一個可立即在輸入步驟中修正的問題。
- 選取**「Orders\_West」**輸入步驟。
- 「State」(州/省)欄位使用州/省名稱的縮寫。其他檔案則使用完整拼寫,因此您將需要稍後修正該問題。
- 有許多以**「Right\_」**開頭的欄位。這些欄位似乎與其他欄位重複。您不想在流程中包括這些重複欄位。此問題可直接在輸入步驟中的此處修正:
**要立即修復**,選取欄位清單  以將檢視切換到欄位清單。然後選取清單中以 **Right\_** 開頭的所有欄位。暫留在任何選取欄位並按一下移除選項 。這會指示 Tableau Prep 忽略這些欄位,不將它們包括在流程中。

> [!TIP]
>
> **提示:**當您在某個步驟中執行清除操作(比如移除欄位)時,Tableau Prep 會在「變更」窗格中追蹤您所做的變更,並在「流程」窗格中新增註解(以小圖示的形式)以幫助您追蹤對資料所做的動作。對於「輸入」步驟,也會向每個欄位中新增註解。
- 在「流程」窗格中,按一下「**Orders\_Central**」輸入步驟將其選定。在「輸入」窗格中,您注意到以下問題:
- 訂單日期和發貨日期在欄位中已針對月、日和年分開。
- 某些欄位的資料類型與其他檔案中相同欄位的資料類型不同。
- 「Region」(區域)沒有欄位。
您將需要對這些欄位執行一些清理操作,然後才能將此檔案與其他檔案合併。但您無法在輸入步驟中的此處修正該問題,因此記下來以便稍後進行修正
- 選取**「Orders\_East」**輸入步驟。
此檔案中的欄位看起來與其他檔案完全一致。但「Sales」(銷售額)值似乎全部都包括了貨幣代碼。您稍後也需要修正該問題。
既然您已經確定了資料集中的一些問題,那麼下一步是更仔細地檢查您的資料並清理找到的任何問題,以便能夠合併和調整資料,並產生可用於分析的輸出檔案。
## 3.清理資料
在 Tableau Prep 中,檢查和清理資料是一個反復的過程。確定了要處理的資料集之後,下一步是檢查該資料,並透過對資料應用各種清理、調整和合併操作來對其進行操作。您透過向流程中新增步驟來應用這些操作。有關清理選項的詳情,請參閲[清理和調整資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_clean.htm)。
根據您嘗試進行的操作採用不同步驟。例如,在想要對欄位應用像篩選、合併、拆分、重新命名這樣的清理操作時隨時新增清理步驟。新增彙總步驟來對欄位進行分組和彙總,並變更資料的詳細資料層級。有關不同步驟類型及其用法的詳情,請參閱[建立與組織流程](https://help.tableau.com/v0.0/prep/zh-tw/prep_build_flow.htm)。
> [!TIP]
>
> **提示**:向流程中新增步驟時,會自動新增一條流程線將步驟相互連線在一起。您可以將這些流程線四處移動,並根據需要移除或新增流程線。
>
> 執行流程時,必須要有這些連線點,以便 Tableau Prep 知道哪些步驟已連線以及步驟在流程中的套用順序。如果缺少流程線,則流程會中斷並出現錯誤。
### 清理 Orders\_Central
為了解決之前發現的問題並確定是否還有任何其他問題,您首先向**「Orders\_Central」**輸入步驟中新增一個清理步驟。
1. 在「流程」窗格中,選取「Orders\_Central」,執行下列操作之一:
- 按一下加號  圖示,然後新增清理步驟。根據您的版本,此功能表選項是「新增步驟」、「新增清理步驟」或「清理步驟」。
- 按一下建議的清理步驟(Tableau Prep Builder 版本 2020.3.3 和更高版本以及 Web 版本)

向流程中新增清理步驟時,工作區將發生變化,您將看到資料的詳細資訊。

A. 流程窗格、B. 工具列、C. 設定檔窗格、D. 資料網格
工作區現在分為三個部分:「流程」窗格、帶工具列的「設定檔」窗格和「資料」網格。
**「設定檔」**窗格顯示資料的結構,同時將欄位值匯總到資料筒中,以便您能夠快速查看相關值,並找出離群值和 null 值。「資料」網格顯示欄位的列層級詳細資訊。
> [!TIP]
>
> **提示**:「設定檔」窗格中的每個欄位都顯示在設定檔卡上。使用每張卡上的「更多選項」  功能表(在以前的版本中為下拉箭頭)來查看和選取可用於該欄位類型的不同清理選項。也可以對欄位值進行排序、變更資料類型、為欄位指派資料角色,或在「資料」網格中拖放設定檔卡片和欄,以便重新排列。
使用計算欄位清理資料
此資料集缺少**「Region」**(區域)欄位。由於其他資料集有此欄位,因此您將需要新增此欄位,以便能夠稍後聯集。您將需要使用計算欄位來執行此操作。
2. 在工具列中,按一下「建立計算欄位」。
3. 在「計算」編輯器中,將導出欄位命名為**「Region」**(區域)。然後輸入 **"Central"**(包括引號),並按一下**「儲存」**。

您能夠使用計算欄位來調整資料,這種靈活性讓您非常喜歡。您非常高興看到 Tableau Prep 使用與 Tableau Desktop 相同的計算編輯器語言。
> [!TIP]
>
> **提示**:對欄位和值進行變更時,Tableau Prep 會在左側的「變更」窗格中追蹤所做的變更。同時,會向流程中的清除步驟和「設定檔」窗格中的欄位新增一個表示變更的圖示(註解)。我們將在進行更多變更之後查看「變更」窗格。
接下來,您需要解決單獨訂單日期和發貨日期欄位的問題。您需要將它們合併為兩個單一欄位,一個用於「**Order Date**」(訂單日期),一個用於「**Ship Date**」(發貨日期),使它們與其他資料集中的相同欄位保持一致。確保表格具有相同欄位,可讓您以後能使用聯集來合併表格。
您可以再次使用計算欄位,透過一個輕鬆的步驟執行此操作。
4. 在工具列中,按一下「建立計算欄位」,將「Order Year」(訂單年份)、「Order Month」(訂單月份)和「Order Day」(訂單日)欄位合併為一個格式為「MM/DD/YYYY」的欄位。
5. 在「計算」編輯器中,將導出欄位命名為**「Order Date」**(訂單日期)。然後輸入以下計算,並按一下「儲存」:
`MAKEDATE([Order Year],[Order Month],[Order Day])`

既然有了新的訂單日期欄位,那麼您需要移除現有欄位,因為您不再需要它們。
「設定檔」窗格中有很多欄位。您注意到工具列右上角的「搜尋」方塊。您不知道是否能使用該方塊來快速查找想要移除的欄位。您決定試一下。
6. 在「設定檔」窗格的搜尋方塊中,鍵入「Order」。

Tableau Prep 將在檢視中快速捲動名稱中包含 \[Order\] 的所有欄位。太酷了!
7. 按住 Ctrl 按一下或按住 Command 按一下 (MacOS),選取「訂單年份」、「訂單月份」和「訂單日」欄位。然後以滑鼠右鍵按一下所選欄位,並從功能表中選取「移除」(在以前版本中為「移除欄位」),以移除它們。

8. 現在重複上面的步驟 4 至 7,為「Ship Date」(發貨日期)建立單一欄位。自己嘗試一下,或使用下面的步驟來幫助您。
- 在工具列中,按一下「建立計算欄位」,將「Ship Year」(發貨年份)、「Ship Month」(發貨月份)和「Ship Day」(發貨日)欄位合併為一個格式為「MM/DD/YYYY」的欄位。
- 將該計算欄位命名為**「Ship Date」**(發貨日期),並輸入計算 `MAKEDATE([Ship Year],[Ship Month],[Ship Day])`。然後按一下**「儲存」**。
- 移除「Ship Year」(發貨年份)、「Ship Month」(發貨月份)和「Ship Day」(發貨日)欄位。搜尋欄位,並加以選取,然後從功能表選取「移除」(在以前版本中為「移除欄位」),以移除欄位。
> [!TIP]
>
> **提示**:Tableau Prep 會將 \[設定檔\] 窗格中的資料匯總到資料筒中,幫助您快速查看資料的形狀、查找離群值、找出欄位之間的關係,等等。
>
> 在此方案中,訂單日期和發貨日期現在可按年份匯總。每個資料筒都表示從起始年份一月份到下一年一月份的一年,並帶有相應標籤。由於有處於 2018 年和 2019 年下半年的銷售日期及發貨日期,因此該資料的資料筒相應標有 2019 年和 2020 年年末。
>
> 若要將此檢視變更為實際日期,請按一下「設定檔」卡中的「更多選項」 功能表(在以前的版本中為下拉箭頭),並選取「詳細資訊」。
> 
與欄位直接交互來清理資料
您的資料一開始看起來很好。但在完成為訂單日期和發貨日期移除額外欄位的操作後,您注意到「Discounts」(折扣)欄位有一些問題。
- 系統為其指派了「字串」資料類型,而不是「數字(十進位)」資料類型。
- 對於無折扣的情況,欄位值是「None」(無),而不是數字值。
這將在聯集檔案時導致問題,因此最好也修正該問題。
9. 清除搜尋,並在搜尋方塊中輸入 disc 來查找欄位。
10. 選取「Discounts」(折扣)欄位,按兩下欄位值「None」(無),並將其變更為數字值「0」。
11. 若要將「折扣」欄位的資料類型從「字串」變更為「數字(十進位)」,請按一下「Abc」,並在下拉式功能表中選取「數字(十進位)」。

12. 最後為步驟命名,以幫助跟蹤您在此步驟中進行的操作。在「流程」窗格中,按兩下步驟名稱「Clean 1」(清理 1),並鍵入「Fix dates/field names」(修正日期/欄位名稱)。
#### 檢閱您的變更
您對此資料集進行了許多變更,並開始擔心自己會不記得所進行的操作。在檢查工作時,您看到「設定檔」窗格的左側有一個名為「變更」的欄。
您按一下箭頭將其開啟,看到其中列出了您剛剛進行的每項變更,這讓您很高興。在您捲動瀏覽清單中的變更時,您注意到,您可以刪除或編輯變更,甚至能將變更四處移動來改變所做變更的順序。
您可以輕鬆地查找組建流程時在任何步驟中所做的變更,並對這些變更的順序進行試驗來最大程度地利用您的資料,這讓您非常喜歡。

### 檢查您的工作:觀看「清理 Orders\_Central」的實際執行效果。
_按一下影像可重播_
既然已清理了一個檔案,那麼您將查看其他檔案來確定需要修正的其他問題。
接下來您決定查看**「Orders\_East」**的 Excel 檔案。
### 清理 Orders\_East
在查看**「Orders\_East」**檔案的欄位時,除了**「Sales」**(銷售額)之外,大多數欄位看起來與其他檔案一致。為了進一步查看並確定是否還有任何其他要解決的問題,您向**「Orders\_East」**輸入步驟中新增一個清理步驟。
1. 在「流程」窗格中,選取**「Orders\_East」**,然後執行以下操作之一:
- 按一下加號  圖示,然後新增清理步驟。根據您的版本,此功能表選項是「新增步驟」、「新增清理步驟」或「清理步驟」。
- 按一下建議的清理步驟(Tableau Prep Builder 版本 2020.3.3 和更高版本以及 Web 版本)。
透過查看「Sales」(銷售額)欄位,您很快發現銷售額數字隨附有 USD 貨幣代碼,並且 Tableau Prep 已將這些欄位值解讀為字串。
如果要獲得準確的銷售額資料,您將需要從此欄位中移除貨幣代碼,並變更資料類型。
修正資料類型很容易,您已經知道如何做了。但唯一的銷售額資料列超過 2000 列,而修正每個單獨的列來移除貨幣代碼看起來很麻煩。
但這是 Tableau Prep,因此您決定檢查下拉式功能表,看看是否有用於修正此問題的選項。
當您按一下**「銷售額」**欄位的「更多選項」(在以前的版本中為下拉箭頭)時,會看到名為「清理」的功能表選項,以及該選項下方用於移除字母的選項。您決定嘗試一下,看看該選項有什麼用。
2. 選取「Sales」(銷售額)欄位。按一下「更多選項」 功能表(在以前的版本中為下拉箭頭),並選取「清理」\>「移除字母」。

哇!該清理選項立即從每個欄位中移除了貨幣代碼。現在您只需要將資料類型從「字串」變更為「數字(十進位)」,此檔案看起來就正常了。
3. 按一下「銷售額」欄位的資料類型,並從下拉清單中選取「數字 (十進位)」,以變更資料類型。

4. 檔案的其餘部分看起來很好。為清理步驟命名以跟蹤您的工作。例如,命名為**「Change data type」**(變更資料類型)。
接下來您將查看 **Orders\_West** 的最後一個檔案,看看是否有任何需要修正的問題。
### 清理 Orders\_West
在您查看**「Orders\_West」**檔案的欄位時,大多數欄位看起來都與其他檔案一致,但您記得看到過**「States」**(州/省)欄位為值使用了縮寫,而不是州/省名稱的完整拼寫。為了將此檔案與其他檔案合併,您將需要修正此問題。因此您向**「Orders\_West」**輸入步驟中新增一個清理步驟。
1. 在「流程」窗格中,選取**「Orders\_West」**,然後執行以下操作之一:
- 按一下加號  圖示,然後新增清理步驟。
- 按一下建議的清理步驟(Tableau Prep Builder 版本 2020.3.3 和更高版本以及 Web 版本)。
2. 捲動或使用「搜尋」來查找**「State」**(州/省)欄位。
您將看到所有州/省名稱值都使用簡短縮寫。此欄位只有 11 個唯一的值。您可以手動變更每個值,但 Tableau Prep 是否可能有另一種方法來完成此操作?
按一下欄位的「更多選項」功能表(在以前的版本中為下拉箭頭)後,會看到名為**「分組值」**(在以前的版本中為「分組和取代」)的選項。選取該選項時,您將看到若干選項:
- 手動選取
- 發音
- 常用字符
- 拼寫
州/省名稱的發音不相似,它們的拼寫不正確,也沒有共用相同的字元,因此您決定嘗試「手動選取」選項。
> [!TIP]
>
> **提示**:您可以按兩下欄位名稱或欄位值來編輯單個值。若要編輯多個值,您可以選取所有值,並使用以滑鼠右鍵按一下功能表選項「編輯值」。但如果要將一個或多個值對應到特定值,請使用下拉式功能表中的「分組值」選項。
> 有關編輯和分組值的詳情,請參閱[編輯欄位值](https://help.tableau.com/v0.0/prep/zh-tw/prep_clean.htm#editvalues)。
3. 選取「State」(州/省)欄位。按一下下拉箭頭,並選取「分組值」(在以前的版本中為「分組和取代」)>「手動選取」。

一個兩欄的卡將開啟。這是**「分組值」編輯器**。左側的欄顯示目前欄位值,右側的欄顯示可映像到左側欄位的欄位。
您想要將州/省縮寫映像到州/省名稱的完整拼寫版本,但在「Orders\_West」資料集中沒有這些值。您不知道是否能直接編輯名稱和在該處新增名稱,因此您嘗試了一下。
4. 在左側窗格的**「分組值」編輯器**中,按兩下「AZ」以反白顯示值,並鍵入 Arizona。然後按 Enter 以新增變更。

Tableau Prep 為新值「Arizona」建立了一個對應值,並自動將舊值「AZ」對應到該值。如果您像這樣輸入了更多此區域的資料,那麼為這些值建立映像關係將節州/省您的時間。
> [!TIP]
>
> **提示**:您可以新增資料樣本中沒有的欄位值,建立映像關係來組織資料。如果重新整理資料來源並新增了新資料,您可以將新資料新增到映像,而不是手動修正每個值。
>
> 當您手動新增資料樣本中沒有的值時,值將帶有紅點標記,可幫助您輕鬆識別該值。
5. 重複這些步驟,將每個州/省都映像到其名稱的完整拼寫版本。
下載到範例目錄 下載到「南部」區域子目錄
然後,按一下「完成」關閉「分組值」編輯器。

映像了所有州/省之後,您查看「變更」窗格,看到其中只有一個條目,而不是 11 個條目。
Tableau Prep 已將欄位的類似操作分組在一起。您喜歡該功能,因為利用它可以更輕鬆地查找隨後對資料集所做的變更。
修正**「State」**(州/省)欄位值是您需要在此處進行的唯一變更。
6. 為清理步驟命名以跟蹤您的工作。例如**「Rename states」**(重命名州/省)。
您在檔案中進行了大量的清理,不敢相信操作能如此快捷輕鬆地完成。您竟然還可以回家吃晚飯!為了確保不會丟失到目前為止所做的工作,請儲存您的流程。
**附註**:若在 Web 上工作,則所做的變更會隨著進展自動儲存,從而建立草稿流程。按一下草稿標題為草稿命名。有關在 Web 上製作的詳情,請參閱 [Tableau Server](https://help.tableau.com/current/server/zh-tw/prep_web_auth.htm) 或 [Tableau Cloud](https://help.tableau.com/current/online/zh-tw/prep_web_auth.htm) 說明中的 **Web 版 Tableau Prep**。
按一下「檔案」\>「儲存」或**「檔案」**\>**「另存新檔」**。將檔案另存新檔為流程檔案 (.tfl) 並為其命名。例如**「My Superstore」**(我的超市)。
> [!TIP]
>
> **提示**:在儲存流程檔案時,您可以將它們另存新檔為流程檔案 (.tfl) 或已封裝檔案 (.tflx),並將本機資料檔案與這些檔已封裝在一起,以便將流程和檔與其他人共用。有關儲存和共用流程的詳細資訊,請參閱[儲存和共用工作](https://help.tableau.com/v0.0/prep/zh-tw/prep_save_share.htm)。
## 4.合併資料
既然清理了所有檔案,那麼您就已最終準備好將它們合併在一起。
由於清理後所有檔案都具有相似的欄位,因此您需聯集表格,才能將所有列拉到單一表格中。
您記得有一個名為「聯集」的步驟選項,但不知道是否能簡單地透過拖放步驟來聯集檔案。您決定試一下看看。
### 聯集資料
1. 按照工作位置的步驟進行操作。
**Tableau Prep Builder**
- 在「流程」窗格中,將清理步驟**「Rename states」**(重命名州/省)拖到清理步驟**「變更資料類型」**步驟上,並將其放在「聯集」選項上。

您看到 Tableau Prep Builder 向流程中新增了一個「Union」(聯集)步驟。太棒了!現在,您想要向此聯集中新增其他檔案。
**Tableau Server 或 Tableau Cloud**
- 在「流程」窗格中,將清理步驟**「Rename states」**(重命名州/省)拖到之前為「南部」區域檔案建立的「聯集」步驟上,並將其放在「新增」選項上。

您會看到 Tableau Prep 已將新檔案新增到先前的聯集中。太棒了!現在,您想要向此聯集中新增其他檔案。
2. 將流程中的下一個清理步驟拖到「聯集」步驟上,然後將其放在「新增」上以新增到現有聯集。

3. 將其餘步驟(若在 Tableau Prep Builder 中工作,則為 orders\_south\_2015 輸入步驟;若在 Web 上工作,則為清理步驟)拖到新的「聯集」步驟上。將其放在「新增」上以新增到現有聯集。
現在,所有檔案已合併到一個表中。在「流程」窗格中選取「聯集」步驟以查看結果。
**在 Tableau Prep Builder 上:**

**在 Tableau Server 或 Tableau Cloud 上:**

您注意到 Tableau 會自動匹配具有相同名稱和類型的欄位。
您還看到,指派給流程中步驟的**色彩**用在聯集設定檔中指明欄位來自於何處,並同時出現在每個欄位頂部的**色帶**中,顯示該欄位是否存在於該表中。
您注意到新增了一個名為「Table Names」(表名稱)的新欄位,該欄位列出了聯集中所有列的來源表。
不匹配欄位的清單也顯示在摘要窗格中,並且您可以立即看到欄位「Product」(產品)和「Discounts」(折扣)只出現在 Orders\_Central 檔案中。
4. 若要更仔細地查看這些欄位,請在**「聯集結果」**窗格中選中「僅顯示不匹配欄位」核取方塊。

透過查看欄位資料,您很快發現資料相同,但欄位名不同。您可以簡單地重命名欄位,但不知道是否能拖放這些欄位來合併它們。您決定試一下看看。
5. 選取「Product」(產品)欄位,並將其拖放到「Product Name」(產品名稱)欄位上來合併欄位。欄位合併後將不再出現在窗格中。

6. 重複此步驟,將「Discounts」(多項折扣)欄位與「Discount」(折扣)欄位合併。
現在,唯一沒有匹配項的欄位是「File Paths」(檔案路徑)欄位。在 Tableau Prep Builder 中,此欄位會顯示您為「南部」區域銷售訂單執行的萬用字元聯集的檔案路徑。您決定將此欄位保留在該處,因為它有很好的資訊。
> [!TIP]
>
> **提示**:聯集後修正不匹配的欄位時有若干選取。若 Tableau Prep 偵測到可能的匹配項,其會以黃色突出顯示。若要合併欄位,請將游標暫停在反白顯示的欄位上,並按一下出現的加號  按鈕。
>
> 有關在聯集中合併欄位的更多方式,請參閱[修正不匹配的欄位](https://help.tableau.com/v0.0/prep/zh-tw/prep_combine.htm#Fix_union)。
7. 清除「僅顯示不匹配欄位」核取方塊以顯示聯集中包括的所有欄位。
8. 為聯集步驟命名以表示此聯集所包括的內容。例如,**「All orders」**(所有訂單)。
### 檢查您的工作:觀看「聯集」的實際執行效果。
_按一下影像可重播_
您是清除天才!正當您對結果讚不絕口時,您的老闆打來了電話。他忘了說他還想要您在分析中包括任何產品退貨。他希望這項工作不會太麻煩。利用工具包中的 Tableau Prep,這完全不成問題!
### 清理產品退貨資料
您檢查老闆發給您的產品退貨相關 Excel 檔案,發現檔案有一點雜亂。您將新檔案 **return\_reasons new** 新增到您的流程來仔細檢查。
1. 在「連線」窗格中,按一下「新增連線」。選取 Microsoft Excel,然後巡覽到一直用於此演練的範例資料檔案。(請參閱[範例檔案](#sample_files),以下載檔案。)
2. 選取 **return reasons\_new.xlsx**,然後按一下「開啟」將該檔案新增到流程窗格。
此檔案中只有 4 個您想要包括在流程中的欄位:「Order ID」(訂單 ID)、「Product ID」(產品 ID)、「Return Reason」(退貨原因)和「Notes」(注釋)。
3. 在**「returns\_new」**的「輸入」窗格中,清除最左欄頂部的核取方塊,以清除所有核取方塊。然後,選中「Order ID」(訂單 ID)、「Product ID」(產品 ID)、「Return Reason」(退貨原因)和「Notes」(注釋)欄位的核取方塊。

4. 重新命名輸入步驟,以充分反映此輸入包含的資料。在「流程」窗格中,按兩下輸入步驟名稱「Returns\_new」,並鍵入「Returns (all)」(退貨(全部))。
透過查看範例欄位值,您注意到「Notes」(注釋)欄位似乎有很多不同的資料合併在一起。
您要在此檔案中執行一些清理,然後才能對資料進行進一步處理,因此,您新增了清理步驟來進行檢查。
5. 在「流程」窗格中,選取輸入步驟**「Returns (all)」**(退貨(全部)),按一下加號  圖示或建議的清理步驟,以新增清理步驟。
在**「設定檔」**窗格中,調整「註釋」欄位的大小,以更好的分式查看條目。若要執行此動作,請點選欄位的右側外緣並向右拖曳。
6. 在「Notes」(注釋)欄位中,使用欄位值右側可視的捲軸來瀏覽各個值。
您注意到一些內容有問題:
- 某些條目的內容中有額外的空格。這可能會導致欄位被讀取為 null 值。
- 核准者的名稱似乎包括在退貨注釋條目中。為了更好地使用此資料,您需要將該資訊放在一個單獨的欄位中。
為了處理額外的空格,您記得有一個用於移除尾隨空格的清理選項,因此決定嘗試一下,看看該選項是否能修正問題。
7. 選取「Notes」(注釋)欄位。按一下「更多選項」 功能表(在以前的版本中為下拉箭頭),並選取「清除」\>「剪裁空格」。

可以!它準確地完成了所需的操作。額外的空格不見了。
接下來,您想要為核准者名稱建立一個單獨的欄位。您看到功能表中的「拆分值」選項,因此決定嘗試該選項。
8. 選取「Notes」(注釋)欄位。按一下「更多選項」 功能表(在以前的版本中為下拉箭頭),並選取「拆分值」\>「自動拆分」。
此選項準確地完成了您希望其進行的操作。它自動將退貨注釋和核准者姓名拆分到單獨的欄位中。

就像 Tableau Desktop 一樣,Tableau Prep 也為這些欄位自動指派了名稱。因此您將需要將新欄位重命名為有意義的名稱。
9. 選取欄位「Notes-Split 1」(注釋-拆分 1)。在欄位名中按兩下,並鍵入「Return Notes」(退貨注釋)。
10. 為第二個欄位重複此步驟,並將其重命名為「Approver」(核准者)。
11. 最後,在您不再需要原始「Notes」(注釋)欄位時將其移除。選取「備註」欄位、按一下「更多選項」功能表(在以前的版本中為下拉箭頭),並從功能表中選取「移除」(在以前的版本中為「移除欄位」)。

透過查看新的「Approver」(核准者)欄位,您注意到欄位值列出了相同名稱,但這些名稱的輸入方式不同。您想要將這些欄位分組,以消除同一值的多個變體。
也許「分組值」(在以前的版本中為「分組和取代」)選項可協助完成該操作?
您記得有一個用於「共同字元」的選項。由於這些值共用相同字母,因此您決定試一下。
12. 選取「Approver」(核准者)欄位。按一下「更多選項」功能表(在以前的版本中為下拉箭頭),並選取「分組值」(在以前的版本中為「分組和取代」)>「共同字元」。

此選項為您將每個名稱的所有變體分組在一起。這完全就是您想要達到的目的。
檢查了其他名稱來確保其正確分組後,按一下「完成」關閉「分組值」編輯器。

此檔看起來非常好。
13. 為清理步驟命名以跟蹤您的工作。例如,**「Cleaned notes」**(清理的注釋)。
現在,產品退貨資料均已清理,您想要將此資料新增到聯集檔案中的訂單資料。但其中許多欄位在聯集的檔案中不存在。要將這些欄位(資料欄)新增到聯集的資料集,需要使用聯結。
### 聯結資料
在聯結資料時,這些檔至少必須有一個共同的欄位。您的檔案共用「Order ID」(訂單 ID)和「Product Id」(產品 Id)欄位,因此您可以在這些欄位上聯結,以查看共有這些欄位的所有列。在您使用拖放建立聯集時,您記得有一個用於建立聯結的選項,因此您試了一下。
1. 在「流程」窗格中,將「Cleaned notes」(清理的注釋)步驟拖到「All orders」(所有訂單)聯集步驟上,並將其放在「聯結」上。

在聯結檔案時,Tableau Prep 會在 \[聯結設定\] 中顯示聯結的結果。
處理聯結可能會很棘手。您通常想要有一個具有聯結中所包括因素的清晰檢視,例如用於聯結檔的欄位、結果中的包括的列數,以及未包括或為 null 值的任何欄位。
在 Tableau Prep 中查看聯結的結果時,您很高興地看到有如此多的資訊,並且可以隨時交互。

> [!TIP]
>
> **提示:**在聯結設定最左側的窗格中,您可以瀏覽聯結並與之交互。也可以在「聯結子句」窗格中直接編輯值,並在「聯結結果」窗格中執行清理操作。
>
> 在「聯結類型」圖表中按一下以嘗試不同的聯結設定,並在「聯結結果匯總」部分中查看聯結中為每個表包括或排除的列數。
>
> 在「已套用聯結子句」區段中選取要進行聯結的欄位,或透過「聯結子句建議」區段新增建議的聯結子句。
>
> 有關使用聯結的詳情,請參閱[彙總、聯結或聯集資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_combine.htm)。
您看到有超過 13,000 列被從「**All Orders**」(所有訂單)檔案中排除。建立聯結後,Tableau Prep 會自動聯結「Product ID」(產品 ID)欄位,但您還想聯結「Order ID」(訂單 ID)欄位。
在瀏覽聯結設定的左側窗格時,您看到建議的聯結子句清單中有「Order ID」(訂單 Id),因此您從該處快速新增了該欄位。
2. 在聯結設定左側窗格中的「聯結子句建議」部分,選取「Order ID = Order Id」,並按一下加號  按鈕新增聯結子句。

由於 \[聯結類型\] 設定為內部聯結(Tableau Prep 的預設設定),因此聯結僅包括兩個檔案中均存在的值。但您需要「Orders」(訂單)檔案中的所有資料,以及這些檔案的退貨資料。因此您將需要變更聯結類型。
3. 在「聯結類型」部分,按一下圖表的一側以包含所有訂單。在以下範例中,按一下圖表左側,以將聯結類型變更為「左」聯結,並包含來自「所有訂單」聯集步驟中的所有資料,以及來自「清理的注釋」步驟中的任何相符資料。

現在,您有了銷售訂單檔案中的所有資料,以及適用於這些訂單的任何退貨資料。您查看「聯結子句」窗格,並看到一些其他檔案中不存在的不同值。
例如,有很多沒有對應退貨資料的訂單列(顯示為紅色)。您能夠瀏覽此詳細資料層級的聯結相關資訊,這讓您非常喜歡。
您急於想在 Tableau Desktop 中開始分析此資料,但在開始分析之前,您注意到聯結要有一些結果需要清理。幸好您知道怎麼做!
> [!TIP]
>
> **提示**:不知道資料是否足夠乾淨?在 Tableau Prep Builder 中,您可以從流程的任何步驟中透過 Tableau Desktop 預覽資料,對其進行檢查。
>
> 只需在「流程」窗格中以滑鼠右鍵按一下該步驟,並從功能表中選取「在 Tableau Desktop 中預覽」。
>
> 您可能會遇到您的資料和在 Tableau Desktop 中進行的變更未寫回 Tableau Prep Builder 中的資料來源的情況。有關詳細資訊,請參閱[在 Tableau Desktop 中檢視流程輸出](https://help.tableau.com/v0.0/prep/zh-tw/prep_save_share.htm#View)。
4. 在開始清理聯結結果之前,將聯結步驟命名為「Orders+Returns」(訂單+退貨),並儲存流程。
### 清理聯結結果
**附註:**若要清理聯結中的欄位,您可以直接在「聯結」步驟中執行清理操作。對於本教程,我們將新增一個清理步驟,以便您能夠清晰地看到您的清理操作。如果要嘗試直接在聯結步驟中執行這些步驟,請跳過下面的步驟 1 和 3。
聯結了兩個步驟之後,系統為兩個表都新增了「Order ID」(訂單 ID)和「Product ID」(產品 ID)共同欄位。
您想要保留所有訂單中的「Product ID」(產品 ID)欄位和退貨檔案中的「Order ID」(訂單 ID)欄位,並移除來自這些欄位的重複欄位。您也不需要輸出檔案中的「檔案路徑」和「表格名稱」欄位,因此也需要移除這些欄位。
> [!TIP]
>
> **提示**:當您使用兩個檔案中均存在的欄位聯結資料表時,Tableau Prep 會引入這些欄位,並透過向欄位名中新增 \[-1\] 或 \[-2\] 來重命名第二個檔案中的重複欄位。例如,「Order ID」(訂單 ID)和「Order ID-1」(訂單 ID-1)。
1. 在「流程」窗格中選取**「訂單+退貨」**,按一下加號  圖示,並新增清理步驟。
2. 在「設定檔」窗格中,選取並移除以下欄位:
- Table Names(表名稱)
- Order ID(訂單 ID)
- 檔案路徑(僅適用於 Tableau Prep Builder)
- Product ID-1(產品 ID-1)

3. 將欄位「Order ID-1」(訂單 Id-1)重新命名為「Order ID」(訂單 ID)。
有很多產品已退貨的 null 值,但沒有指明退貨注釋或核准者。為了使此資料更易於分析,您想要新增一個值為「Yes」和「no」的欄位來指明產品是否已退貨。
您沒有此欄位,但可以透過建立計算欄位來新增此欄位。
4. 在工具列中,按一下「建立計算欄位」。
5. 將欄位命名為「Returned?」(已退貨?),然後輸入以下計算並按一下「儲存」。
`If ISNULL([Return Reason])=FALSE THEN "Yes" ELSE "No" END`

為了進行分析,您還想要知道訂單發貨天數,但您也沒有該欄位。
不過您有建立該欄位所需的全部資訊,因此新增了另一個計算欄位來建立它。
6. 在工具列中,按一下「建立計算欄位」。
7. 將欄位命名為「Days to Ship」(發貨天數),然後輸入以下計算並按一下「儲存」。
`DATEDIFF('day',[Order Date],[Ship Date])`

8. 將步驟命名為「Clean Orders +Returns」(清理訂單+退貨)。
9. 儲存您的流程。

## 5.執行流程並產生輸出
您的資料看起來很好,並且您已準備好產生輸出檔案以便開始在 Tableau Desktop 中對其進行分析。您只需執行流程並產生擷取檔案即可。為此,您需要新增一個輸出步驟。
可以將流程輸出到檔案(僅適用於 Tableau Prep Builder)、已發佈的資料來源或資料庫,具體取決於工作的位置。
1. 在「流程」窗格中選取**「清理訂單+退貨」**,按一下加號  圖示,並選取「輸出」(在以前的版本中為「新增輸出」)。
新增輸出步驟時,「輸出」窗格將開啟,並顯示資料的快照。在這裡您可以選取要產生的輸出的類型,並指定名稱和要儲存檔案的位置。
預設位置為資料原始檔案夾中的「我的 Tableau Prep Builder」存放庫。

2. 在「將輸出儲存到」下拉式功能表的左窗格中,根據您的工作位置,執行以下操作之一:
**Tableau Prep Builder**
1. 選取「檔案」(在先前的版本中選取「儲存到檔案」)。
2. 按一下「瀏覽」按鈕,然後在「將擷取另存新檔」對話方塊中輸入檔案的名稱,例如「Orders\_Returns\_Superstore」,並按一下「接受」。
3. 在「輸出類型」欄位中,選取一種輸出類型。若要與協力廠商共用資料擷取,請選取適用於 Tableau Desktop 的 Tableau 資料擷取 (.hyper) 或逗點分隔值檔案 (.csv) 。
**Tableau Server 或 Tableau Cloud**
1. 選取**已發佈的資料來源**。
2. 選取專案。
3. 輸入檔案的名稱,例如 Orders\_Returns\_Superstore。
> [!TIP]
>
> **提示**:在透過流程產生輸出時,您有一些選取。您可以產生擷取檔案(僅適用於 Tableau Prep Builder),可以將資料作為資料來源發佈到 Tableau Server 或 Tableau Cloud,也可以將資料寫入資料庫。有關產生輸出檔案的詳情,請參閱[建立資料擷取檔案和已發佈的資料來源](https://help.tableau.com/v0.0/prep/zh-tw/prep_save_share.htm#Extract)。
3. 在「寫入選項」區段中檢視要將新資料寫入檔案的選項。您希望使用預設的(「建立資料表」)並以您的流程輸出取代資料表,所以此處不需變更。
> [!TIP]
>
> **提示**:從版本 2020.2.1 開始,您可以選擇希望如何將流程資料寫入回資料表。可以在兩個選項當中進行選擇;「建立資料表」或「附加資料表」。依照預設,Tableau Prep 會使用「建立資料表」選項,並在執行流程時使用新資料覆寫您的資料表資料。如果選擇「附加資料表」,Tableau Prep 會在現有資料表中新增該流程,以便您在每次流程執行時可同時追蹤新資料和歷史資料。有關詳情,請參閱[設定寫入選項](https://help.tableau.com/v0.0/prep/zh-tw/prep_incremental_refresh.htm#flow-writeoptions)
4. 按一下「輸出」窗格中的「執行流程」,或按一下流程窗格中的「執行流程」按鈕,以產生您的輸出。
**附註**:若在 Web 上工作,請按一下**「發佈」**,以發佈您的草稿流程。只能執行已發佈的流程。
5. 流程完成執行時,一個狀態對話方塊將顯示流程執行成功,以及執行所花費的時間。按一下「完成」關閉該對話方塊。

若在 Web 上工作,請巡覽至「瀏覽」 > 「所有流程」頁面,然後找到您的流程。您可以在「流程概觀」頁面上查看流程執行的狀態。

為了讓資料保持在最新狀態,可以手動執行流程,或使用命令列執行。如果擁有 資料管理 並已啟用 Tableau Prep Conductor,還可以在 Tableau Server 或 Tableau Cloud 中根據排程執行流程。
從 Tableau Prep Builder 版本 2020.2.1 和 Web 版本開始,還可以選擇在每次執行流程時重新整理所有資料,或者使用累加式重新整理執行流程,並且每次僅處理新資料。
有關資料保持最新狀態的詳細資訊,請參閱以下主題:
- [透過命令列重新整理流程輸出檔案](https://help.tableau.com/v0.0/prep/zh-tw/prep_run_commandline.htm)
- [將流程發佈至 Tableau Server 或 Tableau Cloud](https://help.tableau.com/v0.0/prep/zh-tw/prep_conductor_publish_flow.htm)
- [使用累加式重新整理重新整理流程資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_incremental_refresh.htm)
## 總結和資源
您是資料準備巨星了!您輕鬆地找出了不良資料並對其進行了改變!您很快清理並準備好了來自多個資料集的資料,並將其轉換為可立即在 Tableau Desktop 中處理來進行分析的井然有序、乾淨的資料集。
想要進行更多練習?嘗試使用下列資料夾中的資料檔案重複執行 Superstore 範例流程的其餘步驟:
- [Orders\_South\_2015](https://mkt.tableau.com/PrepTutorials/orders_south_2015.csv)
- [Orders\_South\_2016](https://mkt.tableau.com/PrepTutorials/orders_south_2016.csv)
- [Orders\_South\_2017](https://mkt.tableau.com/PrepTutorials/orders_south_2017.csv)
- [Orders\_South\_2018](https://mkt.tableau.com/PrepTutorials/orders_south_2018.csv)
- [Orders\_Central](https://mkt.tableau.com/PrepTutorials/Orders_Central.csv)
- [Orders\_East](https://mkt.tableau.com/PrepTutorials/Orders_East.xlsx)
- [Orders\_West](https://mkt.tableau.com/PrepTutorials/Orders_West.csv)
- [returns\_reasons\_new](https://mkt.tableau.com/PrepTutorials/return_reasons_new.xlsx)
- [配額](https://mkt.tableau.com/PrepTutorials/Quota.xlsx)
安裝 Tableau Prep Builder 之後,您也可以在電腦的以下位置尋找檔案:
- (Windows) `C:\Program Files\Tableau\Tableau Prep Builder 縮寫 州/省名稱 AZ Arizona CA California CO Colorado ID Idaho MT Montana NM New Mexico NV Nevada OR Oregon UT Utah WA Washington WY Wyoming
### 字串函數
語法 描述 ABS(number)返回給定數字的絕對值。 ABS(-7) = 7
ABS([Budget Variance])ACOS(number)返回給定數字的反余弦。結果以弧度表示。 ACOS(-1) = 3.14159265358979ASIN(number)返回給定數字的反正弦。結果以弧度表示。 ASIN(1) = 1.5707963267949ATAN(number)返回給定數字的反正切。結果以弧度表示。 ATAN(180) = 1.5652408283942ATAN2(y number, x number)傳回兩個給定數字( x 和 y)的反正切。結果以弧度表示。ATAN2(2, 1) = 1.10714871779409CEILING(number)將數字舍入為值相等或更大的最近整數。 CEILING(3.1415) = 4COS(number)返回角度的余弦。以弧度為單位指定角度。 COS(PI( ) /4) = 0.707106781186548COT(angle)返回角度的餘切。以弧度為單位指定角度。 COT(PI( ) /4) = 1
DIV(integer1, integer2)傳回將 integer1 除以 integer2 的除法運算的整數部分。DIV(11,2) = 5
EXP(number)返回 e 的給定數字次冪。 EXP(2) = 7.389
EXP(-[Growth Rate]*[Time])FLOOR(number)將數字舍入為值相等或更小的最近整數。 FLOOR(3.1415) = 3HEXBINX(number, number)將 x、y 座標對應到最接近的六邊形資料桶的 x 座標。資料桶的邊長為 1,因此,可能需要相應地縮放輸入。 HEXBINX([Longitude], [Latitude])HEXBINY(number, number)將 x、y 座標對應到最接近的六邊形資料桶的 y 座標。資料桶的邊長為 1,因此,可能需要相應地縮放輸入。 HEXBINY([Longitude], [Latitude])LN(number)LN(EXP(5)) = 5LOG(number [, base])LOG(256, 2) = 8MAX(number, number)返回兩個引數(必須為相同類型)中的較大值。如果任何參數為 Null,則傳回 Null。 MAX 也可套用於彙總計算中的單個欄位。MAX(4,7)MAX(Sales,Profit)MAX([First Name],[Last Name])MIN(number, number)返回兩個引數(必須為相同類型)中的較小值。如果任何參數為 Null,則傳回 Null。 MIN 也可套用於彙總計算中的單個欄位。MIN(4,7)
MIN(Sales,Profit)MIN([First Name],[Last Name])
PI( )PI() = 3.14159265358979POWER(number, power)計算數字的指定次冪。 POWER(5,2) = 52 = 25
POWER(Temperature, 2)5^2 = POWER(5,2) = 25RADIANS(number)將給定數位從度數轉換為弧度。 RADIANS(180) = 3.14159ROUND(number, [decimals])將數字舍入為指定位元數。可選小數引數指定要在最終結果中包含的小數位數精度。如果省略小數,則數字舍入為最接近的整數。 ROUND(Sales)SIGN(number)返回數位的符號:可能的返回值為:在數位為負時為 -1,在數字為零時為 0,在數字為正時為 1。 SIGN(AVG(Profit)) = -1SIN(number)返回角度的正弦。以弧度為單位指定角度。 SIN(0) = 1.0SIN(PI( )/4) = 0.707106781186548SQRT(number)返回數字的平方根。 SQRT(25) = 5
SQUARE(number)返回數字的平方。 SQUARE(5) = 25TAN(number)TAN(PI ( )/4) = 1.0ZN(expression)ZN([Profit]) = [Profit]
### 彙總函式
語法 描述 ASCII(string)傳回字串的第一個字元的 ASCII 碼。 ASCII('A') = 65CHAR(number)傳回透過 ASCII 碼編號編碼的字元。 CHAR(65) = 'A'CONTAINS(string, substring)如果給定字串包含指定子字串,則返回 true。 CONTAINS(“Calculation”, “alcu”) = trueENDSWITH(string, substring)如果給定字串以指定 substring 結尾,則傳回 true。會忽略尾隨空格。ENDSWITH(“Tableau”, “leau”) = trueFIND(string, substring, [start])傳回 substring 在字串中的索引位置,如果未找到子字串則傳回 0。如果新增可選引數 start,則函數將忽略出現在索引位置 start 之前的任何 substring 執行個體。字串中第一個字元的位置為 1。FIND("Calculation", "alcu") = 2FINDNTH(string, substring, occurrence)返回指定字串內的第 n 個子字串的位置,其中 n 由 occurrence 參數定義。 FINDNTH("Calculation", "a", 2) =7ISDATE(string)ISDATE("2004-04-15") = True
LEFT(string, number)返回字串最左側一定數量的字元。 LEFT("Matador", 4) = "Mata"
LEN(string)返回字串長度。 LEN("Matador") = 7
LOWER(string)傳回字串,其所有字元為小寫。 LOWER("ProductVersion") = "productversion"LTRIM(string)返回移除了所有前導空格的字串。 Example: LTRIM(" Sales") = "Sales"(MID(string, start, [length])傳回從索引位置 start 開始的字串。字串中第一個字元的位置為 1。如果新增了可選參數 length,則傳回的字串僅包含該數字的字元。 MID("Calculation", 2) = "alculation"MID("Calculation", 2, 5) ="alcul"PROPER(string)轉換文字字串,讓每個單詞的第一個字母大寫,其餘字母小寫。空格和非英數字元(如標點符號)也用作分隔符號。 PROPER("PRODUCT name") = "Product Name"
REGEXP_EXTRACT(string, pattern)傳回與正規表式模式中的捕獲群組相符的給定字串的子字串。正規表式模式只需要一個捕獲群組 REGEXP_EXTRACT('abc 123', '[a-z]+\\s+(\\d+)') = '123'REGEXP_EXTRACT_NTH(string, pattern, index)使用正規表式模式傳回給定字串的子字串。子字串匹配到第 n 個捕獲群組,其中 n 是給定的索引。 REGEXP_EXTRACT_NTH('abc 123', '([a-z]+)\\s+(\\d+)', 2) = '123'REGEXP_MATCH(string, pattern)如果提供的字串的子字串與正規表式模式相符,則傳回 true。 REGEXP_MATCH('-([1234].[ The.Market ])-', '\\[\\s*(\\w*\\.)(\\w*\\s*\\])') = trueREGEXP_REPLACE(string, pattern, replacement)傳回給定字串的副本,其中配對模式被取代字串替換。 REGEXP_REPLACE('abc 123', '\\s', '-') = 'abc--123'
REPLACE(string, substring, replacement)在字串中搜尋子字串並將其取代為取代內容。如果未找到子字串,則不會變更該字串。 REPLACE("Calculation", "ion", "ed") = "Calculated"RIGHT(string, number)傳回字串中最右邊的字元數。 RIGHT("Calculation", 4) = "tion"RTRIM(string)傳回刪除所有尾端空格的字串。 Example: RTRIM("Market ") = "Market"SPACE(number)傳回由指定數量的重複空格組成的字串。 SPACE(1) = " "SPLIT(string, delimiter, token number)
SPLIT('a-b-c-d', '-', 2) = 'b'STARTSWITH(string, substring)如果字串以 substring 開頭,則傳回 true。會忽略前導空格。STARTSWITH(“Joker”, “Jo”) = true
TRIM(string)返回移除了前導和尾隨空格的字串。 TRIM(" Calculation ") = "Calculation"UPPER(string)返回字串,其所有字元為大寫。 UPPER("Calculation") = "CALCULATION"
### 類型轉換函數
語法 描述 AVG(expression)返回運算式中所有值的平均值。AVG 只能用於數位欄位。會忽略 Null 值 AVG([Profit])COUNT(expression)返回群組中的項目數。不對 Null 值計數。 COUNT([Customer ID])
COUNTD(expression)返回群組中不同項目的數量。不對 Null 值計數。每個唯一值僅計算一次。 COUNTD([Region])MEDIAN(expression)傳回單一運算式的中位數。MEDIAN 只能用於數位欄位。會忽略 Null 值。 MEDIAN([Profit])
PERCENTILE(expression, number)從與指定數字相對應的給定運算式傳回百分位數的彙總計算。該數字的有效值為 0 到 1。PERCENTILE([運算式], 0.50) 將始終傳回運算式中的中位數。 PERCENTILE([Sales], 0.90)STDEV(expression)傳回運算式的樣本標準差。 STDEV([Profit])STDEVP(expression)STDEVP([Profit])
SUM(expression)SUM([Profit])
VAR(expression)VAR([Height])VARP(expression)VARP([Test Score])ZN(expression)ZN([Profit]) = [Profit]
### 日期函數
語法 描述 DATE在指定數字、字串或日期運算式的情況下傳回日期。 DATE("2006-06-15 14:52") = 2006-06-15DATETIME(expression)在給定數位、字串或日期運算式的情況下返回日期時間。 DATETIME("April 15, 2004 07:59:00")FLOAT(expression)給定任何類型的運算式,傳回一個浮點數。此函數需要未格式化的數字,這代表排除逗號和其他符號。 FLOAT("3")= 3.000INT(expression)傳回給定運算式的整數。此函數將結果截斷為最接近於 0 的整數。 INT(8.0/3.0) = 2 or INT(-9.7) = -9MAKEDATE(year, month, day)傳回由年、月和該月中的某一天所建構的日期值。 MAKEDATE(2014, 3, 18)MAKEDATETIME(date, time)MAKEDATETIME(#2012-11-12#, #07:59:00#)MAKETIME(hour, minute, second)MAKETIME(14, 52, 40)STR(expression)STR([Age])
### 邏輯函數
語法 描述 DATEADD(date_part, interval, date)在指定日期新增增量並傳回新日期。增量由間隔和 date_part 定義。 DATEADD('month', 3, #2004-04-15#) = 2004-07-15 12:00:00 AMDATEDIFF(date_part, start_date, end_date, [start_of_week])DATEDIFF('month', #2004-07-15#, #2004-04-03#, 'sunday') = -3DATENAME(date_part, date, [start_of_week])傳回給定日期字串的組成部分(由 date_part 定義)。如果省略 start_of_week,則週開始日由為資料來源設定的開始日決定。 DATENAME('month', #2004-04-15#) = "April"
DATEPARSE(format, string)將字串轉換為指定格式的日期。 DATEPARSE ("dd.MMMM.yyyy", "15.April.2004") = 2004-04-15 12:00:00 AMDATEPARTT(date_part, date, [start_of_week])以整數形式傳回給定日期的一部分,其中該部分由 date_part 定義。如果省略 start_of_week,則週開始日由為資料來源設定的開始日決定。 DATEPART('month', #2004-04-15#) = 4DATETRUNC(date_part, date, [start_of_week])將指定日期截斷為 date_part 指定的精確度並傳回新日期。如果省略 start_of_week,則週開始日由為資料來源設定的開始日決定。 DATETRUNC('quarter', #2004-08-15#) = 2004-07-01 12:00:00 AM
DAY(date)以整數的形式傳回指定日期的天。 DAY(#2004-04-12#) = 12
ISDATE(string)如果給定字串為有效日期,則傳回 true。 ISDATE("2004-04-15") = True
MONTH(date)MONTH(#2004-04-12#) = 4NOW()返回目前日期和時間。 NOW() = 2004-05-12 1:08:21 PM
TODAY()返回目前日期。 TODAY() = 2004-05-12YEAR(date)以整數的形式傳回指定日期的年份。 YEAR(#2004-04-12#) = 2004
### 分析函數
語法 描述 IFNULL(expr1, expr2)如果 <expr1> 不為 Null,則傳回該運算式,否則傳回 <expr2>。IFNULL([Profit], 0)IIF(test, then, else, [unknown])檢查某個條件是否得到滿足,如果為 TRUE 則返回一個值,如果為 FALSE 則返回另一個值,如果未知,則返回可選的第三個值或 NULL。 IIF([Profit] > 0, 'Profit', 'Loss')ISDATE(string)如果給定字串為有效日期,則傳回 true。 ISDATE("2004-04-15") = TrueISNULL(expression)如果運算式未包含有效資料 ( Null),則傳回 true。ISNULL([Profit])
ZN(expression)ZN([Profit]) = [Profit]
### 關鍵字
語法 描述 LAST_VALUE(expression, [return_last_non-null_value])傳回給定運算式的最後一個值,從分割中的第一列到目前列。接受可選的第二個布林值參數以傳回最後一個非 Null 值。 { ORDERBY [Row ID] ASC: LAST_VALUE([Category], true) } = returns the last non-null value of [Category]
LOOKUP(expression, [offset])LOOKUP 函數的 [offset] 參數只能採用常值整數,例如 1。{ORDERBY [DATE] ASC : LOOKUP([SALES], -1)} NTILE(number)將選取範圍中的列分佈到指定數量的群組或動態磚中。使用此函數,指派給 3 個動態磚的值集 (6,9,9,14) 將遞增指派給動態磚 (1,2,2,3)。 {PARTITION [Customer]: {ORDERBY [Sales] ASC: NTILE(3) }}RANK()返回分區中目前列的標準競爭排名。為相同的值指派相同的排名。 {PARTITION [Customer]: {ORDERBY [Sales] ASC: RANK() }}
RANK_DENSE()返回分區中目前列的密集排名。為相同的值指派相同的排名,但不會向數字序列中插入間距。 {PARTITION [Customer]: {ORDERBY [Sales] ASC: RANK_DENSE() }}
RANK_MODIFIED()返回分區中目前列的調整後競爭排名。為相同的值指派相同的排名。 {PARTITION [Customer]: {ORDERBY [Sales] ASC: RANK_MODIFIED() }}RANK_PERCENTILE()返回分區中目前列的百分位排名。 {PARTITION [Customer]: {ORDERBY [Sales] ASC: RANK_PERCENTILE() }}ROW_NUMBER()傳回每列的唯一連續列 ID。 {PARTITION [Customer]: {ORDERBY [Sales] ASC: ROW_NUMBER() }}RUNNING_AVG(expression)返回給定運算式從分區中第一列到目前列的執列平均值。 { PARTITION [Category] : { ORDERBY [Row ID] ASC : RUNNING_AVG([Sales]) } } = running average of Sales, per Category.
RUNNING_SUM(expression)返回給定運算式從分區中第一列到目前列的執行總計。 { ORDERBY [Row ID] ASC : RUNNING_SUM([Sales]) } = running sum of all Sales
[跳至主要內容](#main-content)
# Tableau Prep 命令列參考
可以透過主應用程式 (Tableau Prep.exe) 或命令列介面 (tableau-prep-cli.bat),使用命令列與 Tableau Prep 互動。
- Tableau Prep.exe:用於設定應用程式初始化自身的方式。例如,安裝、啟用、授權、設定使用者資料目錄或疑難排解電子層。
- Tableau-prep-cli.bat:用於執行流程。例如,在不開啟視覺介面的情況下傳遞認證、參數和重新整理資料輸出。
本文件按可用的公用程式分開介紹 Tableau Prep 支援並可供客戶使用的所有命令列語法選項。
本文件不包含 Tableau 開發人員與支援人員使用的其他受支援命令列語法。
## Tableau Prep 應用程式
可以從 Tableau Prep.exe 應用程式的命令列執行以下動作。
### 安裝
以管理員身分從電腦命令列執行安裝程式 .exe 檔安裝 Tableau Prep。有關詳情,請參閱[「從命令列安裝」](https://help.tableau.com/current/desktopdeploy/zh-tw/desktop_deploy_automate.htm)。
**請注意**:此選項僅適用於 Windows。
函數 描述 AND對兩個運算式執行邏輯接合運算 IF (ATTR([Market]) = "New Business" AND SUM([Sales]) > [Emerging Threshold] )THEN "Well Performing"ASC定義遞增 ORDERBY 運作。{ORDERBY [Sales] ASC:RANK()}CASE查找第一個與 <expr> 相符的 <value>,並傳回對應的 <return>。CASE [RomanNumeral] WHEN "|" THEN 1 WHEN "II" THEN 2 ELSE 3 ENDDESC定義遞減 ORDERBY 運作。 {ORDERBY [Sales] DESC:RANK()}ELSE測試一系列傳回第一個 true< expr> 的 <then> 值的運算式。 IF [Profit] > 0 THEN 'Profitable' ELSE 'Loss' ENDELSEIF測試一系列傳回第一個 true< expr> 的 <then> 值的運算式。相當於將 if 陳述式放入 ELSE 運作中。IF [Profit] > 0 THEN 'Profitable' ELSEIF [Profit] = 0 THEN 'Breakeven' ELSE 'Loss' ENDEND終止由對應指令引入的運作。 IF [Profit] > 0 THEN 'Profitable' ELSEIF [Profit] = 0 THEN 'Breakeven' ELSE 'Loss' END{ FIXED }FIXED 詳細資料層級運算式使用指定維度計算值,而不參考檢視詳細資料層級。 {FIXED[Customer ID]:MIN([Order Date])}IF建立條件陳述式( IF 陳述式),並且允許僅在條件為 True 時執行。IF [Profit] > 0 THEN 'Profitable' ELSEIF [Profit] = 0 THEN 'Breakeven' ELSE 'Loss' ENDNOT對一個運算式執行邏輯非運算。 IF NOT [Profit] > 0 THEN "Unprofitable" ENDOR對一個運算式執行邏輯析取。 IF [Profit] < 0 OR [Profit] = 0 THEN "Needs Improvement" END{ ORDERBY }定義套用分析函數的順序。使用可選的 asc | desc 引數指定每個欄位的遞增或遞減。 {ORDERBY [Customer Name] ASC, [Sales] DESC: RANK() }{ PARTITION }將群組定義為分析函數。ORDERBY 必須位於分割內。 {PARTITION [Customer]: {ORDERBY [Sales]: RANK()}}THEN測試一系列傳回第一個 true< expr> 的 <then> 值的運算式。 IF [Profit] > 0 THEN 'Profitable' ELSEIF [Profit] = 0 THEN 'Break even' ELSE 'unprofitable' ENDWHEN查找第一個與 < expr> 相符的 <value>,並傳回對應的 <return>。 CASE [RomanNumberal] WHEN 'I' THEN 1 WHEN 'II' THEN 2 ELSE 3 END
### 啟用、授權和註冊
使用這些命令檢查授權、在安裝期間或安裝後啟用產品,以及註冊產品。有關詳細資訊,請參閱[啟用 Tableau Desktop 和 Tableau Prep Builder](https://help.tableau.com/current/desktopdeploy/zh-tw/desktop_deploy_automate.htm#activate-tableau-desktop-and-tableau-prep-builder)。
語法 描述 tableau_<product_installer_name>.exe /option1 /option2 PROPERTY1 PROPERTY2tableau_<product_installer_name>.exe 是要安裝之產品及版本的 Tableau 安裝程式。option1, option2 等是希望安裝過程執行的方式。PROPERTY1, PROPERTY2 等允許指定安裝程式在安裝過程中應該進行的設定設定。tableauPrepBuilder-64bit-2026-2-0.exe /quiet /norestart ACCEPTEULA=1 CRASHDUMP="0" SENDTELEMETRY="0"
### 設定和儲存
使用這些命令設定檔案設定和存放庫位置。
語法 描述 --activate <key>--register --check-license 如果未獲得授權,則顯示啟用 UI。 --refresh--refresh 選項和產品金鑰執行 tableau.exe。-refresh 選項。--return <key>-return 選項和產品金鑰執行 tableau.exe。-return 選項。
### 開啟檔案
使用這些命令開啟 .tfl 和 .tflx Tableau Prep 流程檔案。
語法 描述 --settings-file <file location>{
"connection-sources":[
{
"endpoint":"prod-db-server.company.com",
"username":"service_account_admin",
"password":"secure_password_123"
}
]
}"C:\Program Files\Tableau\Tableau Prep Builder 2026.2\Tableau Prep Builder.exe" --settings-file "C:\ProgramData\Tableau\global-proxy-config.json" --settings-file "C:\Users\jsmith\AppData\Roaming\Tableau\db-config.json": /Applications/Tableau\ Prep\ Builder\ 2026.2.app/Contents/MacOS/Tableau\ Prep\ Builder --settings-file "/Library/Tableau/global-proxy-config.json" --settings-file "/Users/jsmith/Library/Application Support/Tableau/db-config.json"--repository-location <file path> C:\Program Files\Tableau\Tableau Prep Builder 2026.2\Tableau Prep Builder.exe" --repository-location "D:\Tableau_Data\My_Prep_Repo"/Applications/Tableau\ Prep\ Builder\ 2026.2.app/Contents/MacOS/Tableau\ Prep\ Builder --repository-location "/Users/jsmith/Documents/My Tableau Prep Repository"--user-data-directory <location>--repository-location 管理業務資產(記錄和資料),而 --user-data-directory 管理應用程式的內部引擎。--user-data-directory 中指定的資料夾。但是,執行指令碼的使用者帳戶必須具有該父目錄的「寫入」權限。 "C:\Program Files\Tableau\Tableau Prep Builder 2026.2\Tableau Prep Builder.exe" --user-data-directory "D:\Tableau_Data\Prep_AppData"/Applications/Tableau\ Prep\ Builder\ 2026.2.app/Contents/MacOS/Tableau\ Prep\ Builder --user-data-directory "/Users/jsmith/Library/Application Support/Tableau Prep"
## Tableau Prep 命令列應用程式
可以使用 Tableau Prep 命令列介面 (tableau-prep-cli.bat) 執行以下命令。
### 重新整理流程輸出
使用這些選項從命令列執行流程以重新整理流程輸出。此方法可讓您一次僅執行一個流程。有關詳情和限制,請參閱[透過命令列重新整理輸出檔案](https://help.tableau.com/current/prep/zh-tw/prep_run_commandline.htm)。
語法 描述 --tfl<file>--tflx<file> "C:\Program Files\Tableau\Tableau Prep Builder 2026.2\Tableau Prep Builder.exe" --tflx "C:\Users\jsmith\Desktop\Quarterly_Report.tflx"/Applications/Tableau\ Prep\ Builder\ 2026.2.app/Contents/MacOS/Tableau\ Prep\ Builder --tflx "/Users/jsmith/Desktop/Quarterly_Report.tflx"
### 其他命令
使用這些命令列印 Tableau Prep 版本、開啟偵錯模式以偵錯流程過程、停用 SSL 驗證等。
語法 描述 -c, --connections <path>{
"connection-sources":[
{
"endpoint":"company_account.snowflakecomputing.com",
"username":"SVC_TABLEAU_PREP",
"password":"EncryptedPassword123",
"attributes":{
"warehouse": "DATA_LOAD_WH",
"role": "TRANSFORM_ROLE"
}
}
]
} "\[Tableau Prep Builder install location]\Tableau Prep Builder <version>\scripts"\tableau-prep-cli.bat -c "path\to\[your credential file name].json" -t "path\to\[your flow file name].tfl" /Applications/Tableau\ Prep\ Builder\ [Tableau Prep Builder version].app/Contents/scripts/./tableau-prep-cli -c path/to/[your credential file name].json -t path/to/[your flow file name].tfl- p, - - parameters"\[Tableau Prep Builder install location]\Tableau Prep Builder <version>\scripts"\tableau-prep-cli.bat -t "path\to\[your flow file name].tfl" -p|--parameters parameters.override.json/Applications/Tableau\ Prep\ Builder\ [Tableau Prep Builder version].app/Contents/scripts/./tableau-prep-cli -t path/to/[your flow file name].tfl -p|--parameters parameters.override.json-t,--tflFile <file path>Tableau Prep 流程檔案的路徑。 -inc, --incrementalRefresh "\[Tableau Prep Builder install location]\Tableau Prep Builder <version>\scripts"\tableau-prep-cli.bat --incrementalRefresh -t "path\to\[your flow file name].tfl"/Applications/Tableau\ Prep\ Builder\ [Tableau Prep Builder version].app/Contents/scripts/./tableau-prep-cli --incrementalRefresh -t path/to/[your flow file name].tfl
[跳至主要內容](#main-content)
# 圖解辭典
將游標暫停在影像上,然後按一下瞭解詳細資訊。

有關圖解辭典的可列印版本,請參閱 [Tableau Prep PDF](https://help.tableau.com/current/offline/zh-tw/tableau_prep.pdf#v-d-alt)。
[跳至主要內容](#main-content)
# Tableau Prep 版本相容性
若新版本的 Tableau Prep Builder 中引入了新功能或連接器,並且您使用的是舊版本,則在您嘗試開啟流程時可能會出現相容性問題。
**附註**:從版本 2020.4 開始,可以直接在 Tableau Server 和 Tableau Cloud 上建立和編輯流程。在 Web 上建立的流程將始終與使用的伺服器版本相容。有關在 Web 上製作流程的詳情,請參閱 [Tableau Server](https://help.tableau.com/current/server/zh-tw/prep_web_auth.htm) 和 [Tableau Cloud](https://help.tableau.com/current/online/zh-tw/prep_web_auth.htm) 說明中的 **Web 版 Tableau Prep**。
同樣地,如果您將流程發佈到 Tableau Server 或 Tableau Cloud 以排定流程以使用 Tableau Prep Conductor 執行,且流程包含您發佈到的 Tableau Server 或 Tableau Cloud 版本所不支持的新功能或連接器,則可能會遇到相容性錯誤,從而導致無法排程及執行流程。
## 版本號碼格式
從 Tableau Prep Builder 版本 2022.3 開始,發佈版本編號方案現在與 Tableau Desktop 和 Tableau Server 保持一致。在之前的版本中,Tableau Desktop 和 Tableau Prep Builder 的版本號碼有不同的格式。例如:

Tableau Desktop 和 Tableau Prep Builder 的維護版本不遵循相同的版本序列。
| | 版本升級範例 | 第一個維護版本範例 |
| --- | --- | --- |
| Prep Builder | 2022.1.1 | 2022.1.2 |
| Desktop | 2022.1 | 2022.1.1 |
## 尋找版本
**附註**:若要下載特定版本的 Tableau Prep Builder,請開啟[下載](http://www.tableau.com/zh-tw/support/esdalt)頁面,然後從頁面左側的清單中選取 Tableau Prep Builder。
**Tableau Prep Builder**
若要尋找您的產品發行版本,請開啟 Tableau Prep Builder,然後在頂端功能表中執行以下操作:
- **Windows**:在頂端功能表中,按一下「說明」\>「關於 Tableau Prep Builder」或「關於 Tableau Prep」,視您的版本而定。
- Mac:在頂端功能表中,按一下「Tableau Prep Builder」\>「關於 Tableau Prep Builder」或「Tableau Prep」\>「關於 Tableau Prep」,視您的版本而定。
版本編號顯示在對話方塊的左下角。

**Tableau Server**
Tableau Prep Conductor 作為 Tableau Server 版本 2019.1 中 資料管理 的一部分引入。若要排定在 Tableau Server 上執行的流程,必須使用 Tableau Server 版本 2019.1 或更高版本,並且必須啟用 Tableau Prep Conductor。
若要尋找 Tableau Server 的版本,在 Web 瀏覽器中開啟 Tableau Server。在頂端功能表列中按一下右上角的資訊圖示 ,然後選取「關於 Tableau Server」。將開啟一個對話方塊,告訴您正在使用的 Tableau Server 的版本。有關 Tableau Prep Conductor 如何啟用的詳情,請參閱[步驟 2:為伺服器設定流程設定](https://help.tableau.com/current/server/zh-tw/prep_conductor_configure_server_site_settings.htm)。

**Tableau Cloud**
Tableau Prep Conductor 作為 Tableau Cloud 版本 2019.3 中 資料管理 的一部分引入。若要排定在 Tableau Cloud 上執行的流程,必須使用 Tableau Cloud 版本 2019.3 或更高版本,並且必須啟用 Tableau Prep Conductor。
要尋找版本,請在 Web 瀏覽器中開啟 Tableau Cloud。在頂端功能表列中,按一下右上角的資訊圖示,然後選取「關於 Tableau Cloud」。此時會開啟一個對話方塊,顯示正在使用的 Tableau Cloud 的版本。有關啟用 Tableau Prep Conductor 的詳情,請參閱 Tableau Cloud 說明中的 [Tableau Prep Conductor](https://help.tableau.com/current/online/zh-tw/prep_conductor_online_intro.htm)。

## Tableau Prep Builder 不同版本之間的相容性
通常,新版本的 Tableau Prep Builder 可以開啟在舊版本中建立的流程。但是,當您嘗試在新舊版本的 Tableau Prep Builder 之間開啟流程時或者甚至使用不同的電腦在相同版本的 Tableau Prep Builder 上開啟流程時,都可能會遇到相容性問題。
例如:
- 流程包含開啟流程的版本中不支援的輸入連接器或功能。
- 您用於開啟流程的機器沒有安裝必要的輸入連接器或連接器驅動程式版本不相容。Tableau Prep Builder 需要安裝 64 位元驅動程式才能與流程輸入連接器一起工作。
如果遇到相容性問題,在您嘗試開啟流程時,流程可能可以開啟但包含錯誤,或者流程完全不會開啟且收到錯誤訊息。在下列範例中,流程不會開啟並會顯示錯誤訊息、列出不相容功能以及解決問題的選項。

### 修正 Tableau Prep Builder 相容性問題
若要修正相容性問題,請嘗試下列方法:
- 升級到最新版本的 Tableau Prep Builder。
按一下「探索」窗格底端的更新按鈕以下載最新版本的產品並遵循 Tableau Desktop 和 Tableau Prep Builder 部署指南中的指示以[安裝 Tableau Prep Builder](https://help.tableau.com/current/desktopdeploy/zh-tw/desktop_deploy_download_and_install.htm)。如果您沒有「探索」窗格上更新按鈕的存取權限,請參閱**安裝 Tableau Prep Builder** 主題中包含的有關如何安裝最新版本產品的指示。
- 確保您的電腦與 Tableau Prep Builder 相容。例如,確保您已安裝適用於流程所使用連接器的 64 位元驅動程式。若要安裝驅動程式,請參閱[驅動程式下載](https://www.tableau.com/zh-tw/support/drivers)頁面。
- 開啟已移除不相容功能的流程複製。
## Tableau Prep Builder 和 Tableau Server 不同版本之間的相容性
從較新版本的 Tableau Prep Builder 發布到較舊版本的 Tableau Server 時,可能會導致相容性問題。例如,Tableau Prep Builder 版本 2021.3.1 中新增的新功能可能與 Tableau Server 版本 2022.3不相容,但會與 Tableau Server 版本 2021.4 和 Tableau Server 的任何更高主要版本(例如版本 2022.1)相容。
在 Tableau Server 中,當 Tableau Prep Conductor 發布後,會偵測流程中所包含的功能。如果其找到不支援的功能,流程仍會發布到 Tableau Server,但流程將無法執行、排程或新增至工作。Tableau Cloud 會自動定期更新,因此通常與 Tableau Prep Builder 的所有版本相容。
如果您使用舊版本的 Tableau Server,仍可在 Tableau Prep Builder 中以手動方式執行不相容的流程,或使用命令列進行。有關使用此處理序的更多資訊,請參閱[從命令列重新整理流程輸出檔案](https://help.tableau.com/current/prep/zh-tw/prep_run_commandline.htm)。
### 偵測不相容功能
根據使用的 Tableau Prep Builder 版本而定,您可以透過不同方式找出不相容的功能。
#### Tableau Prep Builder (2020.1.1 版本及更新版本)
登入 Tableau Server,然後 Tableau Prep Builder 會為您偵測並停用不相容的功能。不相容的功能將顯示為灰色,或者在發佈流程時收到不相容訊息。如果仍想使用該功能並手動或從命令列執行流程,則可以從功能表中啟用灰色功能。
**附註**:從 Tableau Prep Builder 2020.1.4 版本開始,只要您登入伺服器,Tableau Prep Builder 就會在您關閉應用程式時記住您的伺服器名稱和認證。這樣在您下次開啟應用程式時,將直接處於已登入伺服器的狀態。
1. 將滑鼠指標暫留停用功能,瞭解其是否因為與您的伺服器版本不相容而停用,接著按一下「使用功能」按鈕。此選項可在「流程」窗格、「設定檔」窗格中的各功能表、「結果」窗格和資料網格中使用。
**附註**:各功能可能會因為其他原因而停用,例如資料更新遭暫停,或該選項不適用於特定步驟或資料類型。

2. 選取的功能已套用,且所有不相容的功能均已啟用且可供使用。如果您想透過您的 Tableau Server 版本排程執行流程,則不相容的功能會以警告標記,使您能夠輕鬆找到並移除。
若要完全停用此功能,並啟用所有不相容的功能,請執行下列動作:
1. 從頂端功能表中,選取「說明」\>「設定和效能」\>「停用不相容的功能」。

2. 選取「停用不相容的功能」,以清除此選項旁的核取記號。若要再次啟用該功能,請選取「停用不相容的功能」。此選項預設應已啟用。
#### Tableau Prep Builder (2019.3.1 版本及更新版本)
組建流程時,Tableau Prep Builder 可在您新增功能時偵測是否不相容,並為不相容的功能標記警示圖示。您必須登入伺服器才能看到這些警示。這個通知系統可協助您快速識別流程中的不相容功能,讓您決定在流程中保留或移除該項功能。
將游標暫留在流程窗格中的通知,即可檢視不相容功能的相關資訊,或使用通知中心查看更多詳細資料。在警示中心中按一下「在流程中檢視」連結,即可直接巡覽至觸發警告的步驟、註解、欄位或變更。

#### Tableau Prep Builder(所有版本)
如果您發布的流程含不相容的功能,系統會顯示下列訊息並列出您登入之 Tableau Server 版本不支援的功能。在 Tableau Prep Builder 版本 2019.2.3 中,這是唯一能在流程中查看不相容功能的方法。
**附註:**此錯誤訊息列出了推出功能時的 Tableau Prep Builder 版本。Tableau Prep Builder 不會發行維護版本功能,因此為了使功能相容,Tableau Server 必須執行下一個主要發行版本。在以下範例中,「複製欄位」是 Tableau Prep Builder 2019.2.3 版本推出的功能,因此與 2019.2.3 Tableau Server 維護發行版本不相容。但是,該功能與 Tableau Server 的下一個主要版本(2019.3 版本)相容。

如果您繼續發佈流程,發佈將成功完成。但在 Tableau Server 或 Tableau Cloud 中開啟流程時,會看到下列訊息:

若要在 Tableau Server 中排定和執行流程,您可以執行下列動作之一:
- 找出與您使用的 Tableau Prep Builder 版本相容的 [Tableau Server](https://www.tableau.com/zh-tw/support/releases/server) 最新主要版本。例如,使用 Tableau Prep Builder 版本 2019.2.3 中引入的功能時,若要在 Tableau Server 中執行流程,則需要的伺服器版本為 2020.3 或更高版本。
Tableau Cloud 會定期自動更新,通常一季一次。請先測試您的流程,確認流程與您目前的 Tableau Cloud 版本相容後再發佈。
- 請先在發佈流程前從流程中移除不相容的功能,然後再發佈流程。
- 若已將流程發佈至 Tableau Server,請嘗試直接在伺服器(版本 2019.4 及更高版本)上編輯流程,下載該流程並移除功能,或者僅使用舊版本中的可用功能在該版本的 Tableau Prep Builder 中建立流程。
**附註**:若要下載特定版本的 Tableau Prep Builder,請開啟[下載](http://www.tableau.com/zh-tw/support/esdalt)頁面,然後從頁面左側的清單中選取 Tableau Prep Builder。
### 修正相容性問題
如果流程已發佈到 Tableau Server,請嘗試透過下列步驟使用目前版本的 Tableau Prep Builder 移除不相容功能。在您移除功能,且不再看到版本不相容訊息或警告後,請重新發佈流程至 Tableau Server 或 Tableau Cloud,然後使用 Tableau Prep Conductor 排定流程。
**附註**:Tableau Prep Conductor 是 資料管理 的一部分。該程式必須在 Tableau Server 或 Tableau Cloud 中啟用,才可使用排程功能執行流程。有關 資料管理 的詳情,請參閱 [Tableau Data Management](https://www.tableau.com/zh-tw/products/add-ons/data-management)。有關在 Tableau Server 或 Tableau Cloud 中啟用 Tableau Prep Conductor 的詳情,請參閱 Tableau Server 說明中的 [步驟 2 : 為您的 Tableau Server 設定流程設定](https://help.tableau.com/current/server/zh-tw/prep_conductor_configure_server_site_settings.htm)或 Tableau Cloud 說明中的[Tableau Prep Conductor](https://help.tableau.com/current/online/zh-tw/prep_conductor_online_intro.htm)。
#### 識別不相容功能
如果您在 Tableau Server 中工作,其目前不會列出流程中的不相容的功能。若要識別要從流程移除的功能清單,您需要在 Tableau Prep Builder 中開啟流程,然後在流程中找到並移除功能。
1. 開啟流程。如果您使用的是 Tableau Prep Conductor,請從「更多動作」 功能表,按一下「下載」以下載並在 Tableau Prep Builder 中開啟流程,或僅在 Tableau Prep Builder 中開啟流程。
2. 如果您已下載流程,按一下已下載的流程以開啟。
3. 根據版本執行下列其中一個操作:
- **2019.3.1 版和更新版本**:從頂端功能表選取「伺服器」\>「登入」。確定選擇與該流程不相容的同一個伺服器。任何不相容的步驟、註解、欄位或變更應該以警示圖示標示。
在流程窗格的右上角,按一下「警示」檢視每個不相容功能的詳細資料。按一下「在流程中檢視」即可巡覽至不相容功能,並進一步採取行動。

- **2019.2.3 版和更早版本**:從頂端功能表選取「伺服器」\>「發佈流程」。如果您需要再次登入伺服器,請確保選取與流程相容的同一伺服器。警告對話方塊將開啟,列出與您的伺服器版本不相容的功能。記下這些功能,以便您可以從流程識別這些功能並將其移除。接著,按一下「取消」關閉該對話方塊。

4. 從頂端功能表,按一下「檔案」\>「另存新檔」以儲存流程複製。使用下列各節中的選項,可從流程移除不相容的功能。
#### 從流程移除不相容功能
您可以使用多種方法從流程找到並移除功能。本節介紹了協助您解決不相容錯誤的一些選項。
#### 不相容資料來源
如果資料來源不相容,例如,新增了 Tableau Prep Conductor 中尚不支援的新連接器,您將需要連線到支援的資料來源。
要變更資料連線,請參閱[取代資料來源](https://help.tableau.com/v0.0/prep/zh-tw/prep_add_input_data.htm#input_replace)。
#### 不相容功能
若要移除不相容功能,您將需要找到使用功能的步驟並將其移除。您可以遵循[識別不相容功能](#identify_incompat_features)中的指示來找到不相容的功能。
1. 如果功能是步驟類型,則在「流程」窗格中,按一下使用功能的步驟。以滑鼠右鍵按一下或按 Ctrl + 按一下 (MacOS) 該步驟,然後選取「移除」。
2. 如果功能是清理作業,則在「流程」窗格中,按一下使用功能的步驟。您可以將滑鼠遊標暫留在「流程」窗格的註釋或「設定檔」或「結果」窗格上以檢視變更清單。
**附註**:在 Tableau Prep Builder 版本 2019.1.3 及更高版本中,您可以將滑鼠遊標暫留在「流程」窗格或設定檔卡片中代表您要尋找的步驟之圖示上,然後從變更清單選取註釋。變更會在「變更」窗格、「設定檔」或「結果」窗格及資料格中醒目提示。
3. 開啟「變更」窗格(如果需要),然後選取與您要移除的功能相符的變更。按一下變更以選取該變更,然後按一下「移除」以將其從流程刪除。

4. 重複這些步驟以取代任何其他功能。然後儲存您的流程並重新發佈。
[跳至主要內容](#main-content)
# Tableau Prep 說明
## 入門

- [Tableau Prep 中的新功能](https://help.tableau.com/current/prep/zh-tw/prep_whatsnew.htm)
- [Tableau Prep Builder 工作區](https://help.tableau.com/current/prep/zh-tw/prep_about.htm#a-tour-of-the-tableau-prep-builder-workspace)
- [Tableau Prep Builder 教學課程](https://help.tableau.com/current/prep/zh-tw/prep_get_started.htm)
- [「日常生活」場景介紹](https://help.tableau.com/current/prep/zh-tw/prep_dayinlife.htm)
- [建立流程](https://help.tableau.com/current/prep/zh-tw/prep_build_flow.htm)
- [其他](https://help.tableau.com/current/prep/zh-tw/prep_about.htm)
## 連線至資料

- [啟動或開啟資料流程](https://help.tableau.com/current/prep/zh-tw/prep_startflow.htm)
- [連線至資料](https://help.tableau.com/current/prep/zh-tw/prep_connect.htm)
- [設定資料集](https://help.tableau.com/current/prep/zh-tw/prep_configure_dastaset.htm)
- [在「輸入」步驟中聯集資料](https://help.tableau.com/current/prep/zh-tw/prep_add_input_data.htm#union-files-and-database-tables-in-the-input-step)
- [使用表關聯聯結資料](https://help.tableau.com/current/prep/zh-tw/prep_add_input_data.htm#join-data-in-the-input-step-version-201913-and-later)
- [其他](https://help.tableau.com/current/prep/zh-tw/prep_connect.htm)
## 檢查和篩選資料

- [變更欄位資料類型](https://help.tableau.com/current/prep/zh-tw/prep_explore.htm#review-the-data-types-assigned-to-your-data)
- [套用篩選條件](https://help.tableau.com/current/prep/zh-tw/prep_filter.htm)
- [使用資料角色標準化和驗證資料](https://help.tableau.com/current/prep/zh-tw/prep_validate_data.htm)
- [其他](https://help.tableau.com/current/prep/zh-tw/prep_explore.htm)
## 清理和調整資料

- [透過清潔動作轉換資料](https://help.tableau.com/current/prep/zh-tw/prep_clean.htm)
- [編輯欄位值](https://help.tableau.com/current/prep/zh-tw/prep_clean.htm#edit-field-values)
- [複製和重複使用步驟、動作和欄位](https://help.tableau.com/current/prep/zh-tw/prep_copy_reuse_steps.htm)
- [使用樞紐轉換資料結構](https://help.tableau.com/current/prep/zh-tw/prep_pivot.htm)
- [在流程中加入 R 和 Python 指令碼](https://help.tableau.com/current/prep/zh-tw/prep_scripts.htm)
- [其他](https://help.tableau.com/current/prep/zh-tw/prep_clean.htm)
## 合併資料

- [彙總以調整資料細微性](https://help.tableau.com/current/prep/zh-tw/prep_combine.htm#aggregate-and-group-values)
- [聯結表以新增資料欄](https://help.tableau.com/current/prep/zh-tw/prep_combine.htm#join-your-data)
- [聯集資料表以新增資料列](https://help.tableau.com/current/prep/zh-tw/prep_combine.htm#union-your-data)
- [聯集資料表以新增資料列](https://help.tableau.com/current/prep/zh-tw/prep_combine.htm#union-your-data)
- [其他](https://help.tableau.com/current/prep/zh-tw/prep_combine.htm)
## 儲存和分享流程資料

- [發布資料擷取及資料來源](https://help.tableau.com/current/prep/zh-tw/prep_save_share.htm#create-and-publish-data-extracts-and-data-sources)
- [透過命令列重新整理流程輸出](https://help.tableau.com/current/prep/zh-tw/prep_run_commandline.htm)
- [為流程維護版本相容性](https://help.tableau.com/current/prep/zh-tw/prep_conductor_compatibility.htm)
- [其他](https://help.tableau.com/current/prep/zh-tw/prep_save_share.htm)
## 排程要執行的流程

- [發佈流程](https://help.tableau.com/current/prep/zh-tw/prep_conductor_publish_flow.htm)
- [排程流程工作](https://help.tableau.com/current/server/zh-tw/prep_conductor_schedule_flow_task.htm)
- [管理流程](https://help.tableau.com/current/server/zh-tw/prep_conductor_manage_flow.htm)
- [監視流程健康情況和效能](https://help.tableau.com/current/server/zh-tw/prep_conductor_monitor_flow.htm)
- [其他](https://help.tableau.com/current/prep/zh-tw/prep_conductor_overview.htm)
## 安裝和設定 Tableau Prep

- [安裝 Tableau Prep Builder](https://help.tableau.com/current/desktopdeploy/zh-tw/desktop_deploy_download_and_install.htm)
- [授權 Tableau Prep Conductor](https://help.tableau.com/current/server/zh-tw/dm_license.htm)
- [啟用 Tableau Prep Conductor - Tableau Server](https://help.tableau.com/current/server/zh-tw/prep_conductor_config_server_overview.htm)
- [啟用 Tableau Prep Conductor - Tableau Cloud](https://help.tableau.com/current/online/zh-tw/prep_conductor_configure_online.htm)
- [其他](https://help.tableau.com/current/prep/zh-tw/prep_conductor_config_server_overview.htm)
語法 描述 --version輸出目前版本的 Tableau Prep Builder CLI 並立即終止該程序。 -d, --debug "\[Tableau Prep Builder install location]\Tableau Prep Builder <version>\scripts"\tableau-prep-cli.bat --debug -t "[your flow file name].tfl"/Applications/Tableau\ Prep\ Builder\ [Tableau Prep Builder version].app/Contents/scripts/./tableau-prep-cli --debug -t “[your flow file name]”.tfl-dsv, --disableSslValidation /Applications/Tableau\ Prep\ Builder\ [Tableau Prep Builder version].app/Contents/scripts/./tableau-prep-cli -dsv -c path/to/[your credential file name].json -t path/to/[your flow file name].tfl-h, --help
[跳至主要內容](#main-content)
# Web 版 Tableau Prep
_不支持 Windows 上的 Internet Explorer 11 和 Internet Explorer 的相容模式。_
從版本 2020.4 開始,Tableau Prep 支援流程的 Web 製作。現在,可以使用 Tableau Prep Builder、 Tableau Server 或 Tableau Cloud 來建立流程,以清理和準備資料。也可以在 Web 上手動執行流程,並不需要 資料管理。
雖然 Web 上也支援大多數相同的 Tableau Prep Builder 功能,但是在建立和使用流程時仍有一些不同。
> [!IMPORTANT]
>
> **重要提示**:要在 Web 上建立和編輯流程,必須具有 Creator 授權。僅在要使用 Tableau Prep Conductor 或 API 按排程執行流程時才需要 資料管理。有關設定和使用 Tableau Prep Conductor 的詳細資訊,請參閱 [Tableau Server](https://help.tableau.com/current/server/zh-tw/prep_publishserver_overview.htm) 或 [Tableau Cloud](https://help.tableau.com/current/online/zh-tw/prep_conductor_online_intro.htm) 說明中的 Tableau Prep Conductor。
## 安裝與部署
若要讓使用者能夠在 Web 上建立和編輯流程,請在伺服器上設定幾項設定:有關各項設定詳情,請參閱[「在 Web 上建立流程並與之互動」](https://help.tableau.com/current/server/zh-tw/web_author_flows.htm)。
- **Web 製作**:預設情況下啟用,此選項控制使用者是否能夠在 Tableau Server 或 Tableau Cloud 上建立和編輯流程。
- **立即執行**:控制使用者還是僅管理員能夠使用「立即執行」選項手動執行流程。資料管理不需要在 Web 上手手動執行流程。
- **Tableau Prep Conductor**:若已取得 資料管理 授權,請啟用此選項,以讓使用者排程和追蹤流程。
- **Tableau Prep 擴充功能**(版本 2021.2.0 及更高版本):控制使用者是否可以連線到 Einstein Discovery 以針對其流程中的資料進行應用和執行預測模型。
- **自動儲存**:預設情況下啟用,此功能可每幾秒鐘自動儲存一次使用者的流程工作。
### 範例資料和處理限制
為在 Web 上處理流程時保持效能,系統已對可包含在流程中的資料量套用限制。
以下限制適用:
- 連線到檔案時,最大檔案大小為 1GB。
- 包含所有資料的資料取樣選項不可用。預設的範例資料限制為一百萬列。Tableau 伺服器管理員可以使用 TSM 設定資料樣本限制。有關詳情,請參閱 [tsm configuration set 選項](https://help.tableau.com/current/server/zh-tw/cli_configuration-set_tsm.htm#maestroappsettingssamplingmaxrowlimit)。在 Tableau Cloud 中,此限制是固定的,管理員無法設定。
有關設定資料範例的詳細資訊,請參閱 Tableau Prep 說明中的[設定資料範例大小](https://help.tableau.com/current/prep/zh-tw/prep_configure_dastaset.htm#set-your-data-sample-size)。
需要協助偵錯緩慢的流程嗎?嘗試從說明\>設定和效能功能表開啟啟用查詢記錄。有關詳情,請參閱[啟用查詢記錄](https://help.tableau.com/current/prep/zh-tw/prep_troubleshoot.htm#enable-query-logging)。
## Web 上的可用功能
在 Web 上建立和編輯流程時,您可能會注意到在巡覽和某些功能的可用性方面有一些不同之處。雖然大多數功能在所有平台上可用,但某些功能受限製,或 Tableau Server 或 Tableau Cloud 中尚不支援某些功能。下表列出了可能存在差異的功能。
### 自動儲存和使用草稿
在伺服器上建立或編輯流程時,您的工作每隔幾秒鐘會自動儲存為草稿,這樣在發生損毀或意外關閉索引標籤時,您的工作不會丟失。
草稿會儲存到您登入的伺服器和專案中。您無法將草稿儲存或發佈到另一台伺服器,但是可以使用「檔案」 > 「發佈為」功能表選項將流程儲存到該伺服器上的另一項專案。

在發佈前,只有您能查看草稿內容。若您已發佈變更並需要還原,則可以使用「修訂歷程記錄」對話方塊來檢視並還原到先前發佈的版本。有關在 Web 上儲存流程的詳情,請參閱[在 Web 上自動儲存流程](https://help.tableau.com/current/prep/zh-tw/prep_save_share.htm#automatically-save-your-flows-on-the-web)。
## 在 Web 上發佈流程
無論是從頭開始建立流程,還是編輯現有流程,在執行流程之前,都需要先發佈流程。
- 只能將草稿流程發佈到登入的同一伺服器上。
- 可以使用「檔案」功能表並選取「發佈為」將草稿發佈到其他專案。
- 可以為流程的資料庫連線內嵌認證,以便流程能夠執行,而無需在流程執行時手動輸入認證。如果要開啟流程進行編輯,則需要重新輸入您的認證。
### 內嵌認證
附註:內嵌認證僅適用於在伺服器上執行的流程。從 Tableau Cloud 版本 2025.2 開始,流程擁有者可以在 Web 製作中編輯其流程,而無需重新驗證他們所有的資料庫連線(若這些連線內嵌在流程中或儲存到使用者個人資料中)。若使用 Tableau Server,則在編輯連線到資料庫的流程時,需要手動輸入認證。只能在流程層級設定內嵌認證,而不能在伺服器或網站層級設定。
執行以下操作之一:
- 從頂部功能表中,選取「檔案」 > 「連線認證」 > 「內嵌到已發佈流程中」。

- 發佈流程時,選取「內嵌認證」核取方塊。選取「發佈為」將流程首次發佈到新專案時,或者正在編輯他人上次發佈的流程時,會顯示此選項。

### 發佈流程
發佈流程時,其會成為流程的目前版本,並且可以由有權存取您的專案的其他人執行和查看。發佈流程之前,只有您能看到從未發佈的流程或對草稿進行的流程變更。有關在 Web 上流程狀態的詳情,請參閱[在 Web 上自動儲存流程](https://help.tableau.com/current/prep/zh-tw/prep_save_share.htm#automatically-save-your-flows-on-the-web)。
若要發佈流程,請執行以下操作之一:
- 從頂端功能表中,選取「檔案」 > 「發佈」或「檔案」 > 「發佈為」

- 在頂端列中,按一下「發佈」按鈕或按一下下拉式箭頭以選取「發佈為」。

### 誰可以執行此動作
- 伺服器管理員、網站管理員 Creator 以及 Creator 允許連線和發布的完整存取權限。
- Creator 可以執行 Web 製作工作。
[跳至主要內容](#main-content)
# 使用 Tableau Agent 建置 Tableau Prep 流程
> [!WARNING]
>
> 自 2025 年 10 月 14 日起,Data Cloud 已更名為 Data 360。在此過渡期間,您可能會在我們的應用程式和文件中看到對 Data Cloud 的引用。雖然名稱已變更,但功能和內容保持不變。
_在 Tableau Cloud 版本 2025.2 及更高版本以及 Tableau Server 版本 2025.3 及更高版本中,Tableau Prep Builder 和 Tableau Prep Web 製作中均支援。_
Tableau Prep 中的 Tableau Agent 是一項生成式 AI 功能,可協助清理和轉換資料。在先前的版本中,可以使用 Tableau Agent 來協助您在建置流程時建立計算欄位。從 2025.2 版本開始,可以使用 Tableau Agent 來協助清理資料和建置流程,以及獲得建立計算欄位的協助。此功能在 Tableau Cloud 和 Tableau Server(版本 2025.3 及更高版本)中的 Tableau Prep Builder 和 Tableau Prep Web 製作中可用。
要使用 Tableau Agent,只需使用自然語言描述想要執行的動作,例如「將航班詳情欄位拆分為航班、日期、艙位和價格的單獨欄位」或「將訂單日期欄位值變更為月份」。Tableau Agent 會傳回有關如何完成作業的摘要,以及可以套用於流程的一組建議步驟,甚至在需要時建立計算。

作為迴圈中的人員,可以查看建議的步驟,並單獨套用每個步驟或套用計劃中的所有步驟。Tableau Agent 為您執行這些步驟,建置流程並將變更新增至「變更」窗格。可以手動與 Tableau Agent 所做的任何變更進行互動,例如編輯計算或使用復原或重做,始終可以控制流程。

Tableau Agent 可以執行單一動作(例如建立計算欄位),也可以執行需要多個步驟的更複雜的動作。根據完成作業所需的動作,Tableau Agent 將向您顯示可以查看和套用的單一動作,或在需要更複雜的動作和多個步驟時返回計劃。Tableau Agent 最多有 10 個步驟。如果該動作需要超過 10 個步驟才能完成,請將要求分成多個問題。
Tableau Agent 支援英語(en\_US)和其他語言。在 Tableau Cloud 或 Tableau Server(版本 2025.3 及更高版本)中使用 Tableau Agent 時,生成式 AI 回應中使用的語言是基於在「我的帳戶設定」中設定「語言」。如果在「我的帳戶設定」設定為 「未指定」,則使用瀏覽器語言設定。
在 Tableau Desktop 及 Tableau Prep Builder 中使用 Tableau Agent 時,生成式 AI 回應中使用的語言取決於「說明 > 選擇語言」功能表。有關受支援語言的詳細資訊,請參閱 [Tableau 中的 AI 支援語言和地區設定](https://help.tableau.com/current/tableau/zh-tw/tableau_gai_einstein_trust.htm#supported_language)。
## Tableau Agent 與信任
Tableau Cloud 中的 Tableau Agent 內建於 [Einstein 信任層](https://help.tableau.com/current/tableau/zh-tw/tableau_gai_einstein_trust_layer.htm)頂層,並繼承其所有安全性、控管與信任功能。與 Tableau Agent 互動時,傳送到大型語言模型 (LLM) 的資料與對話都不會儲存到 LLM,也不會使用任何客戶資料訓練該模型。在 Tableau Prep 中發出請求時,該請求將傳送至 Tableau 建立的提示範本。提示範本要求 LLM 建立計劃或步驟來完成作業,以便可以在將 Tableau Agent 傳回的建議步驟套用到流程之前先查看。
Tableau Agent 僅適用於流程連線到的資料來源,對於 Tableau Prep,只有選取步驟的表資料會傳送到提示和 LLM,而不是流程中的所有資料。
Tableau Agent 它不知道任何其他 Tableau 資料來源,因此無法建議相關內容、回答資料歷程問題或回答一般知識問題。遵守使用者定義的行與列層級安全策略。使用者在使用 Tableau Agent 時有權存取的資料符合現有的任何列或欄層級安全性原則。
首次開啟 Tableau Agent 時,它會對資料進行索引以了解內容。這有助於 Tableau Agent 根據問題與資料來源傳回相關結果。它索引的資訊包括欄名稱和資料類型以及流程步驟中引用的表中的 5 個樣本列。
Einstein 信任層可用於在將個人識別資訊 (PII) 傳送到 LLM 之前透過基於模式的資料遮罩對其進行遮罩。使用機器學習和模式配對技術,請求中的 PII 被取代為通用權杖,然後在回應中使用原始值揭開遮罩。有關如何設定資料遮罩的更多資訊,請參閱 Salesforce 說明中的[選取要遮罩的資料](https://help.salesforce.com/s/articleView?id=ai.generative_ai_mask_select.htm&type=5)。為了提供額外的保護層,Einstein 信任層保證在 LLM 處理請求和回應後,LLM 會忘記請求和回應。
若在 Tableau Server(版本 2025.3 及更高版本)中使用 Tableau Agent,則不會使用 Einstein 信任層。相反,您可以直接連線到大型語言模型提供者。有關詳情,請參閱 [Tableau 中的 AI 與信任](https://help.tableau.com/current/tableau/zh-tw/tableau_gai_einstein_trust.htm)。
## Tableau Agent 計費注意事項
**附註**:從 2025 年 10 月開始,Tableau 中的 AI 不再耗用針對 AI 使用情況的 Einstein 請求點數。其他服務(例如 Data 360 服務)仍可能耗用其他類型的點數。Data 360 點數包括資料服務點數和 Flex 點數。耗用的點數類型和數量根據您為 Salesforce 組織選擇的點數模式而有所不同。有關更多資訊,請參閱 Salesforce 說明中心的 [Einstein 請求和 Flex 點數費率卡更新常見問題集](https://help.salesforce.com/s/articleView?id=005197697&type=1)以及[稽核和意見反應的計費注意事項](https://help.salesforce.com/s/articleView?id=ai.generative_ai_audit_feedback_usage_types.htm&type=5)。
在 Tableau Cloud 中使用 Tableau 中的生成式 AI 功能時,若在 Tableau 中的 AI 設定中使用 Einstein 資料收集和儲存(也稱為稽核線索)功能,則可能會耗用 Data 360 點數。有關詳情,請參閱 [Tableau 中的 AI 使用情況](https://help.tableau.com/current/tableau/zh-tw/tableau_gai_usage.htm)。
可以使用預先建立的儀表板和數位錢包在 Salesforce 組織中檢視點數耗用情況,或從 Tableau 連線到 Data 360 資料並使用數位錢包表中的資料建立視覺效果。有關詳情,請參閱[檢視點數使用](https://help.tableau.com/current/tableau/zh-tw/tableau_gai_usage_view.htm)。
## Tableau Prep 的 Tableau Agent 支援的動作
Tableau Agent 尚無法存取 Tableau Prep 的所有功能,但仍可與流程互動以手動執行這些動作。例如,Tableau Agent 目前只能線性建置流程。如果需要分支流程,則需要手動執行此動作。
以下是 Tableau Agent 目前可以支援的轉換動作清單。有關 Tableau Agent 限制的資訊,請參閱本主題後面的 [Tableau Prep 的 Tableau Agent 限制](#Tableau)。
功能區域 例外 Tableau Prep Builder Tableau Server Tableau Cloud 連線至資料 Web 上可能不支援某些連接器。在伺服器上開啟連線窗格,以查看受支援的連接器。 


使用 Tableau Agent 建置 Tableau Prep 流程 


建立與組織流程 


設定資料範例大小 在 Tableau Server 中,資料樣本大小會受到管理員使用 TSM 指令設定的限制。在 Tableau Cloud 中,此限制固定為 1,048,576 列,管理員無法變更。 


輸入步驟中的聯集檔案和資料庫資料表 無法在 Tableau Server 或 Tableau Cloud 中編輯或建立輸入聯集。僅在 Tableau Prep Builder 中。 


清理和調整資料 


複製資料格值 在從版本 2022.3 開始的 Tableau Prep Builder 和 Tableau Server 以及從 2022.2(8 月)開始的 Tableau Cloud 中可用 


彙總、聯結或聯集資料 


在流程中使用 R 和 Python 指令碼 在 Tableau Cloud 中建立或編輯流程時,無法新增指令碼步驟。目前僅在 Tableau Prep Builder 和 Tableau Server 中受支援。 


建立可重複使用的流程步驟 


在 Web 上自動儲存流程 不適用 

自動檔案恢復 
不適用 不適用 啟用查詢記錄 


在 Tableau Desktop 中檢視流程輸出 


建立檔案擷取 


建立到 Microsoft Excel 工作表的擷取資料 


連線到自訂 SQL 查詢 


建立已發佈的資料來源 


將流程輸出儲存到外部資料庫 


新增 Einstein Discovery Prediction 到流程中 


## Tableau Agent 入門指南
可以透過 Tableau Cloud 站台或 Tableau Server 站台的 Web 製作環境(從 2025.3 版本開始)中的對話窗格存取 Tableau Agent,或者登入已設定為啟用 Tableau Agent 的 Tableau Cloud 站台或 Tableau Server 站台時,也可以在 Tableau Builder 中使用 Tableau 站台或 Tableau Server 站台時,也可以在 Tableau Builder 中使用 Tableaup Builder Agent。
存取 Tableau Agent:
- **Tableau Cloud**:必須擁有 Tableau 並連線到設定 Einstein 生成式 AI 的 Salesforce 組織才能使用 Tableau Prep 中的 Tableau Agent。還必須具有存取 Tableau Agent 的權限。有關詳情,請參閱[為站台開啟 Tableau 中的 AI](https://help.tableau.com/current/online/zh-tw/setup_tabAI_site_setting.htm)。
- 若您沒有 Tableau+,但想嘗試 Tableau Agent,可以[註冊](https://www.tableau.com/zh-tw/products/trial) Tableau Cloud 免費試用版,該試用版現在已包含 Tableau Agent 功能。
- **Tableau Server**(版本 2025.3 及更高版本):登入 Tableau Server 站台,Tableau 中的 AI 已設定並開啟 Tableau Prep。有關詳情,請參閱[在 Tableau Server 站台中開啟 AI](https://help.tableau.com/current/server/zh-tw/sites_gai_server.htm)。
- **Tableau Prep Builder**:使用 Tableau+ 登入 Tableau Cloud 站台或 Tableau Server 站台。Tableau 中的 AI 也必須開啟才能 Tableau Prep。
Tableau Agent 無法連線到資料來源、為您引入更多資料、最佳化取樣或建立輸入步驟。因此,首先連線到資料並將想要使用的表帶入流程畫布。
### 啟動 Tableau Agent
可以從 Tableau Prep Builder 的工具列、Tableau Cloud 或 Tableau Server(版本 2025.3 及更高版本)中的 Tableau Prep Web 製作或運算對話方塊啟動 Tableau Agent。有關從計算對話方塊啟動 Tableau Agent 的詳情,請參閱本主題中的[使用 Tableau Agent 建立計算欄位](#Create)。
1. 在流程窗格中,從「通知」旁的工具列中選取「Tableau Agent」圖示。
**請注意**:如果看不到該圖示,請確保已登入 Tableau Cloud 站台(伺服器 > 在 Tableau Prep Builder 中登入)或 Tableau Server 站台,並且適用於 Prep 的 Tableau 中的 AI 已啟用。Tableau Cloud 需要 Tableau+,並且還必須具有使用 Tableau Agent 的權限。

2. 開啟窗格後,按一下 「知道了」確認免責聲明才能開始。可能需要向下捲動才能看到該按鈕。

### 使用 Tableau Agent 清理和準備資料
_本章節中的範例使用來自 [Preppin Data](https://www.preppindata.com/challenges) 挑戰的資料。_
Tableau Agent 不是開放式聊天機器人。它只能在資料集內執行,並圍繞資料清洗和轉換執行一系列特定的動作。例如,Tableau Agent 可以幫助您拆分欄位、樞紐或彙總資料,但它無法回答諸如「告訴我有關此流程的資訊」或「告訴我有關訂單表的更多資訊」之類的開放式問題。
**請注意**:目前,Tableau Agent 無法執行流程或安排其執行、建立輸出步驟或協助執行某些類型的步驟,例如「連線」、「聯結」、「指令碼」或「預測」步驟。有關詳情,請參閱 [Tableau Prep 的 Tableau Agent 限制](#Tableau)。
1. 在流程窗格中,選取想要 Tableau Agent 套用清理作業的步驟。選取輸入、清理或其他支援的步驟類型。
目前,Tableau Agent 會依照特定步驟運作,因此需要先選取要執行動作的步驟。如果想要對存在於單獨步驟中的表執行清理動作,則需要一步一步執行。
2. 在 Tableau Agent 窗格中,描述希望 Tableau Agent 協助執行的動作。

> [!TIP]
>
> **提示**:為了從 Tableau Agent 獲得最佳結果,請具體說明請求並提供盡可能多的詳情,以幫助 Tableau Agent 了解內容。在這個範例中,我們的欄位值使用兩個不同的分隔符號。透過在請求中包含此資訊「**能否拆分航班詳細資訊欄位,以便我有日期、航班號碼、出發地、目的地、艙位和價格的單獨欄位?在航班詳情欄位中,「出發地」和「目的地」資料以破折號顯示。例如「東京-紐約」。**Tableau Agent 可以更好地理解請求並建議正確的動作。
3. 請求準備好後,請按一下文字方塊中的箭頭將其傳遞至 Tableau Agent。Tableau Agent 會對選取的步驟中的資料進行索引,以根據資料評估請求。然後將請求傳遞給提示範本,然後將其傳遞給 LLM 進行處理並返回計劃。
4. 透過展開每個步驟來檢視計劃中的步驟。

5. 按一下「套用」以單獨套用每個步驟,或按一下「全部套用」,Tableau Agent 將套用方案中的所有步驟。

6. 評估輸出以確保 Tableau Agent 執行預期的動作。每個成功完成的步驟旁邊都會出現一個綠色核取標記。可以評估和修改「變更」窗格中列出的任何變更,以及更新流程窗格中新增至步驟的描述。
7. 繼續請求 Tableau Agent 幫助清理資料,然後新增輸出步驟來完成流程。

## 使用 Tableau Agent 建立計算欄位
_在 Tableau Cloud 中的 Tableau Prep Web 製作、Tableau Server 版本 2025.3 及更高版本以及 Tableau Prep Builder 版本 2025.2 及更高版本中支援。_
使用 Tableau Agent 建立計算欄位比以往更容易。從「計算」對話方塊啟動 Tableau Agent,然後只需描述計算,Tableau Agent 就會建立公式,讓您只需按一下即可將強大的計算欄位新增至 Prep 流程。以前,為計算欄位建立公式需要了解物件和欄位、可用函數以及基於資料類型、公式類型等的各種限制。
Tableau Agent 大幅簡化建立自訂函數的工作。現在技術和非技術使用者可以使用簡單語言輕鬆建立計算。透過能夠根據自然語言描述快速有效地建立列層級公式欄位和摘要公式欄位,可以執行資料準備,從而更輕鬆、更快速地合併、調整和清理資料以進行分析。
## 建立導出欄位
**請注意**:從 2025.2 開始,向 Tableau Agent 尋求計算協助時,它將開啟對話窗格供您提問,而不是允許您直接在計算對話方塊中提問。
1. 按一下「流程」窗格中的清理步驟。
2. 在「個人檔案」窗格工具列中按一下「建立計算欄位」,或是在個人檔案卡片或資料網格中按一下「更多選項」功能表,然後選取「建立計算欄位」\>「自訂計算」。

3. 按一下使用 Tableau Agent 建立。計算對話方塊將會關閉,並且 Tableau Agent 窗格將會開啟。
4. 在對話窗格中,選取「知道了」以確認免責聲明並開始。

5. 由於是從計算對話方塊中開啟 Tableau Agent 的,因此它已經填滿意圖。在 Tableau Agent 文字方塊中,描述想要的計算。提供盡可能多的細節以獲得最佳結果。

6. 請求準備好後,請按一下文字方塊中的箭頭將其傳遞至 Tableau Agent。

**附註**:如果 Tableau Agent 無法提供有效的計算,可以提供意見反應。
7. 評估輸出以確保是您想要的。按一下「編輯」以開啟計算對話方塊並手動自訂計算並套用它,或按一下「套用」,Tableau Agent 會將計算新增到流程中。

### 計算範例
**請注意**:有時 Tableau Agent 會在 Tableau Agent 窗格中顯示建議的計算供您檢視和套用,有時,它只會顯示可以套用然後在「變更」窗格中檢視和編輯的摘要說明。
#### 範例計算 1:
提示:_編寫計算以查找「訂單日期」欄位中訂單的月份名稱。_



#### 範例計算 2:
提示:_編寫計算以將「數量」欄位中的值限制為最大值 10。_

在此範例中,新增附加提示來改善計算以保留高於閾值的值。
提示:_如果數量高於 10,請將其取代為文字「高於閾值」並保留原始值。_


## 獲得最佳結果的提示
Tableau Agent 會盡力理解目的與資料。但它仍在學習。使用以下提示可幫助 Tableau Agent 盡其所能並為您提供出色的結果。
轉換動作 受 Tableau Agent 支援 清理和調整資料 樞紐資料 彙總、聯結或聯集資料
## 幫助 Tableau Agent 改進
Tableau Agent 還在學習。例如,Tableau Agent 建立的一些計算不會按照預期的方式寫入。這種情況發生時,對錯誤的回饋有助於 Tableau Agent 繼續改進其清理動作,並建立越來越準確的計算。

## Tableau Prep 的 Tableau Agent 限制
Tableau 為人類分析師提供了強大的工具,Tableau Agent 也不例外。Tableau 中的 AI 不是要取代分析師與資料探索者;它的存在是為了給您提供助力。您在此過程的參與至關重要。
### 分析類型
Tableau Agent 還無法管理諮詢類型的問題,例如「這個流程是做什麼的?」、「能解釋一下這個計算嗎?」,也無法幫助您疑難排解,例如「我如何修復這個錯誤?」而是要求它幫助您執行特定的清理作業,例如「從交易代碼中提取銀行代碼。」或「計算每個銀行每月的交易總數」。
### 不支援的功能
目前,Tableau Agent 可以支援需要的許多常見清理作業。但一切才剛開始。以下是它尚無法支援的一些動作。但是,始終可以與流程進行互動並手動執行任何這些作業。
- 為您選擇資料來源或將資料新增至流程中,例如輸入聯結
- 進行資料建模,例如聯結和聯集
- 支援某些步驟類型,如預測、指令碼和輸出步驟
- 提供需要分析流程中不只 1 個步驟的回應
- 分支流程。目前 Tableau Agent 只能建立線性步驟。
- 最佳化流程(幫助資料取樣或效能)
- 支援一些功能(參數、建議、使用萬用字元搜尋的樞紐等)
- 執行或排程流程
- 支援所有語言。Tableau Agent 支援英語(en\_US)和其他語言。如果您的資料來源欄位名稱和值與您的使用者語言設定不同或與您用來與代理程式互動的語言不同,請在請求中使用準確的欄位名稱和值。有關 Tableau Agent 目前支援的語言的資訊,請參見 [Tableau 中的 AI 支援語言和地區設定](https://help.tableau.com/current/tableau/zh-tw/tableau_gai_einstein_trust.htm#supported_language)。
[跳至主要內容](#main-content)
# 使用 Tableau Prep 分析醫院床位使用情況
醫院滿員會造成問題,但資源過多也同樣會造成問題。務必要從床位即資源的角度來理解醫院床位。但是,資料通常是從患者的角度進行存放的。我們如何才能獲取相關資料,瞭解患者何時佔用床位並確定床位使用情況?
**附註:**為了完成這些教程中的工作,您需要安裝 Tableau Prep 並根據需要安裝 Tableau Desktop:
若要安裝 Tableau Prep 和 Tableau Desktop,請參閱 [Tableau Desktop 和 Tableau Prep 部署指南](https://help.tableau.com/current/desktopdeploy/zh-tw/desktop_deploy_welcome.htm#)。也可以下載 [Tableau Prep](https://www.tableau.com/zh-tw/products/prep/download) 免費試用版和 Tableau Desktop Free Edition。
您還需要下載三個資料檔案。建議將這些檔儲存在 我的 Tableau Prep 存放庫 > Datasources 資料夾中。
\- [Beds.xlsx](https://mkt.tableau.com/PrepTutorials/Beds.xlsx)
\- [Hours.xlsx](https://mkt.tableau.com/PrepTutorials/Hours.xlsx)
\- [Patient Beds.xlsx](https://mkt.tableau.com/PrepTutorials/Patient%20Beds.xlsx)
## 資料
對於我們的四個床位 A、B、C 和 D,我們將跟蹤哪個患者佔用了床位,以及他們佔用床位的開始和結束時間。資料看起如下所示:

## 初步分析
如果我們將此資料引入 Tableau Desktop,我們可以建立一個甘特圖來顯示患者何時佔用床位。

這是一種有用的視覺元素。我們可以看到,床位 A 和 B 的使用間隔時間很短,但床位 C 使用得非常少。床位 D 的患者沒有結束時間,但我們將利用一些計算來解決該情況。這為我們提供了一個關於床位使用情況的視覺概覽。
但是,如果我們想要計算床位空置的小時數,該怎麼辦?或者,如果我們要比較實施新原則前後的開放床位時間,該怎麼辦?透過採用目前結構方式的資料無法輕鬆地達到目的。
## 所需的資料結構
透過建立一些非常基本的資料集並在 Tableau Prep 中將其合併,我們可以將此資料集修改為允許我們執行更深入分析並建立更有用的視覺化項的形式。
在進入 Tableau Prep 之前,讓我們回顧一下,想一想我們需要建立什麼才能回答以下問題:「每個床位空置了多少小時?」
我們需要能夠查看每小時的每個床位,並瞭解是否有患者佔用床位。目前,資料僅僅是患者何時佔用床位;我們還未向 Tableau 提供有關_空置_小時數的資訊。
為了建立包含所有床位和所有小時的完整矩陣,我們將建立兩個新資料集。一個資料集是床位的清單(A、B、C、D),另一個資料集是小時的清單(1、2、3、…、23、24)。透過執行交叉聯結(將一個資料集中的每一列與另一個資料集中的每一列聯結),我們將最終獲得床位和小時的每種可能組合。
提示 問題 要執行的動作 明確表達您的意圖 Tableau Agent 會盡力推斷意圖,但並不總是正確。 如果知道希望 Tableau Agent 拆分某個欄位,請告訴它希望它建立哪些欄位。或者,如果想要 Tableau Agent 建立計算,請在請求者嘗試以短語「建立可以...的計算」開始。 隱藏未不相關欄位 資料集中類似命名的欄位可能會讓 Tableau Agent 感到困惑。 隱藏不需要的欄位,Tableau Agent 將不會使用這些隱藏欄位。 小心使用同義詞 Tableau Agent 可以很好地理解常見同義詞。例如,它會知道「標題」與「電影」可以套用於名為「電影」的欄位。但是,它不知道您可能使用的公司特定術語或首字母縮寫。 請參閱感興趣的特定欄位幫助 Tableau Agent 更加準確。 在請求中使用特定術語 Tableau Agent 掃描資料來源以尋找欄位名稱和這些欄位中的資料,但它並不能像人類那樣真正理解資料。 請求描述得越詳細,Tableau Agent 就越能提供正確的答案。 分解複雜的任務 Tableau Agent 可以建立逐步計劃,但它可能難以在一個大計劃中完成多個複雜作業。 只詢問有關資料的問題 Tableau Agent 不是通用聊天機器人。它無法回答諸如「我應該如何清理我的資料?」之類的諮詢問題。或一般性問題,例如「哪種貓品種是最好的寵物?」 提出針對對資料執行特定清理動作並迭代結果的問題。
接著,我們將引入**「Patient Beds」**(患者床位)資訊,以是否有特定患者的形式標記每個床位-小時組合。我們最終會得到一個資料集,該資料集中每個床位-小時組合佔一列,並且,如果患者佔用了床位,則包含患者的編號及開始和結束時間。Null 值指明床位未被佔用。

利用此結構中的資料,我們可以執行像這樣的分析,讓我們能夠像調查患者床位一樣輕鬆地調查未佔用的床位。

## 重構資料
那麼如何使用 Tableau Prep 達到該目的?我們將分兩個部分組建流程,首先組建「Bed Hours」(床位小時)矩陣,然後將其與「Patient Beds」(患者床位)資料合併。確保下載全部三個 Excel 檔(**Beds.xlsx**、**Hours.xlsx** 和 **Patient Beds.xlsx)**以便繼續操作。
### 床位小時矩陣
首先,我們將連線到 **Beds.xlsx** 檔案。
1. 開啟 Tableau Prep。
2. 從開始螢幕中選取「連線至資料」。
3. 在「連線」窗格上選取「Microsoft Excel」。巡覽到 **Beds.xlsx** 的儲存位置,並選取「開啟」。
4. 「Beds」(床位)工作表應會自動顯示在「流程」窗格中。
**提示:**有關連線至資料的詳細資訊,請參閱[連線至資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_connect.htm)。
接著,我們需要建立一個可用於與**「Hours」**(小時)資料集執行交叉聯結的欄位。我們將新增一個僅僅為值 **1** 的計算。
1. 在「流程」窗格中選取「Beds」(床位),然後選取建議的「清潔步驟」。
2. 隨我們剛剛新增的「清理」步驟一起,「設定檔」窗格將出現。選取工具列中的「建立計算欄位」。
3. 將欄位命名為**「Cross Join」**(交叉聯結),並輸入值 **1**。
4. 「資料」網格應會更新為顯示資料的目前狀態。
欄和「Bed」(床位)欄的資料網格圖示")
現在,我們將使用「Hours」(小時)資料集重複該過程。
展開查看方向
1. 在「連線」窗格上選取「新增連線」按鈕以新增另一個資料連線。
2. 選取「Microsoft Excel」,然後選取 **Hours.xlsx** 檔案並按一下「開啟」。
3. 在「流程」窗格中選取「Hours」(小時),然後選取建議的「清潔步驟」,以將其新增到流程中。
4. 透過「設定檔」窗格中的工具列建立一個名為**「Cross Join」**(交叉聯結)的計算欄位,並輸入值 **1**。
欄和「Hour」(小時)欄的資料網格圖示")
兩個資料集現在有一個共同欄位**「Cross Join」**(交叉聯結),因此可以聯結。
1. 透過將**「Clean 2」**(清理 2)拖到**「Clean 1」**(清理 1)並放在「聯結」選項上來聯結兩個清理步驟。

2. 在以下的「聯結設定」中,聯結設定應會自動填充。
- 由於我們將兩個欄位都命名為**「Cross Join」**(交叉聯結),因此 Tableau Prep 自動將它們識別為共同欄位,並建立適當的「已應用聯結子句」。
- 預設「聯結類型」為內部聯結,正是我們所需要的。
- 此聯結會將**「Beds」**(床位)中的所有列與**「Hours」**(小時)中的所有列匹配,如「資料」網格中所示。

A. 聯結子句
B. 聯結類型
C. 資料格結果
**提示:**有關聯結的詳細資訊,請參閱[聯結資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_combine.htm#Join)。
我們不再需要**「Cross Join」**(交叉聯結)欄位,因此可以將這些欄位移除。
1. 在「流程」窗格中,選取**「Join 1」**(聯結 1),並選取加號  圖示,並新增「清潔清理步驟」。
2. 選取欄位**「Cross Join-1」**(交叉聯結-1)和**「Cross Join」**(交叉聯結),並選取「移除欄位」。
3. 按兩下**「Clean 3」**(清理 3)標籤,並將該步驟重命名為**「Bed Hour Matrix」**(床位小時矩陣)。
我們現在有了「Bed Hour Matrix」(床位小時矩陣)資料集,其中包含所有床位和所有小時,並且我們已完成組建資料集的第一部分。
### 患者床位使用
第二部分是引入患者床位使用情況。首先,我們將連線至資料。
1. 在「連線」窗格上選取「新增連線」按鈕以新增另一個資料連線。
2. 選取「Microsoft Excel」,然後選取 **Patient Beds.xlsx** 檔案,並選取「開啟」。
3. 在「流程」窗格中選取**「Patient Beds」**(患者床位),然後選取建議的「清潔步驟」,以將其新增到流程中。
由於「床位小時矩陣」檔案基於_小時,_但「患者床位」以_實際時間_基礎,因此我們需要從「患者床位」開始和結束時間中擷取小時。此外,對於結束時間,我們想要確保,如果患者在一天結束時(午夜,24 時)仍然佔用床位,則我們指明床位被佔用,即使資料集中沒有結束時間也是如此。我們將在此新步驟中新增計算欄位。
1. 在工具列中,按一下「建立計算欄位」。
2. 將欄位命名為**「Start Hour」**(開始小時)。對於計算,輸入 `DATEPART('hour',[Start Time])`。
3. 這將獲取開始時間的小時並將其擷取出來。因此,「1/1/18 9:35 AM」將變為「9」。
4. 建立另一個名為**「End Hour」**(結束小時)的計算欄位。對於計算,輸入 `IFNULL(DATEPART('hour',[End Time]), 24)`。
`DATEPART` 部分獲取結束時間的小時。`IFNULL` 部分將為任何缺少的結束時間指派結束時間 24 時(午夜)。
現在我們已準備好將患者床位使用情況聯結到**「Bed Hour Matrix」**(床位小時矩陣)。與我們之前進行的操作相比,此聯結操作更為複雜一些。內部聯結將只會返回兩個資料集中都存在的值。由於我們想要確保保留所有床位-小時槽位,而不管患者是否佔用床位,因此我們需要執行左聯結。此將產生許多 null 值,但這是適當的。
我們還需要匹配床位-小時槽位被一名(或多名)患者佔用的時間。因此,除了匹配患者佔用的床位外,我們還需要考慮時間。「Bed Hour Matrix」(床位小時矩陣)資料集只有**「Hour」**(小時)欄位,而**「Patient Beds」**(患者床位)資料集有**「Start Hour」**(開始小時)和**「End Hour」**(結束小時)。我們使用一些基本邏輯來確定是否應將患者指派到給定床位-小時槽位:_如果其開始小時小於或等於 (<=) 床位-小時槽位,並且其結束小時大於或等於 (>=) 床位-小時槽位,則患者被視為佔用床位。_
因此,需要三個聯結子句來將這兩個資料集相應地匹配在一起。
1. 將**「Clean 3」**(清理 3)步驟與「**Bed Hour Matrix**」(床位小時矩陣)步驟聯結。
2. 在「已應用聯結子句」區域中,預設值應為****「Hour = End Hour」****。選取聯結子句,將運算子從**「=」**改為**「<=」**。

3. 選取「已應用聯結子句」區域右上角的加號  按鈕,以新增另一個聯結子句。將其設定為**「Hour >= Start Hour」。**為**「Bed = Hospital Bed」**新增第三個聯結子句。
4. 在「聯結類型」部分選取**「Bed Hour Matrix」**(床位小時矩陣)旁邊圖形的無陰影區域,將聯結類型變更為**「左」**聯結。

**附註:**如果將**「Bed Hour Matrix」**(床位小時矩陣)拖到**「Clean 3」**(清理 3),而不是相反,則透過使用右聯結(而不是左聯結)可以獲得期望的結果。對於聯結的方向,拖動步驟的順序很重要。聯結子句也將按相反順序 — 一定要保持比較小時的正確邏輯。
資料現在已聯結,但我們應從聯結中清理一些構件,並確保欄位保持整齊。我們不再需要**「Start Hour」**(開始小時)和**「End Hour」**(結束小時)。**「Hospital Bed」**(醫院床位)和**「Bed」**(床位)也是多餘的。最後,**「Patient」**(患者)欄位中的值 null 實際上表示床位未被佔用。
1. 在「流程」窗格中,新增一個清理步驟以便能對聯結的資料進行整理。
2. 按住 Ctrl 按一下(在 Mac 上按住 Command 按一下)以多選方式選取欄位**「End Hour」**(結束小時)、**「Start Hour」**(開始小時)和**「Hospital Bed」**(醫院床位),然後在工具列中選取「移除欄位」。
3. 在**「Patient」**(患者)欄位設定檔卡上,按兩下**「null」**值並鍵入**「Unoccupied」**(未佔用)。
我們現在有了每個床位-小時占一列的資料結構;如果在該小時期間有患者佔用床位,則我們也有了患者資訊。餘下的工作就是新增輸出步驟和產生資料集本身。
1. 在「流程」窗格中選取**「Clean 4」**(清理 4),選取加號  圖示,並新增「新增輸出」。
2. 在「輸出」窗格中,將「輸出類型」變更為 .csv,然後選取「瀏覽」。
3. 為名稱輸入**「Bed Hour Patient Matrix」**(床位小時患者矩陣),在選取「接受」儲存前選取所需的位置。
4. 選取窗格底部的「執行流程」按鈕產生輸出。在狀態對話方塊中選取「完成」關閉對話方塊。
**提示:**有關輸出和執行流程的詳細資訊,請參閱[儲存和共用工作](https://help.tableau.com/v0.0/prep/zh-tw/prep_save_share.htm#Export)。
最終流程應如下所示:

## Tableau Desktop 中的分析
若要在繼續學習本教學課程之前安裝 Tableau Desktop,可以下載 Tableau Desktop Free Edition。
現在我們有了採用所需結構的資料集,我們可以執行比用原始資料更深入的分析。
1. 開啟 Tableau Desktop。在「連線」窗格中選取「文字檔案」,巡覽到 **Bed Hour Patient Matrix.csv** 檔案,並選取「開啟」。
2. 在「資料來源」索引標籤上,預設情況下資料應出現在畫布中。巡覽至**「Sheet 1」**。
3. 在「資料」窗格中,將**「Hour」**(小時)拖到「度量」和「維度」分隔線的上方,將其設為離散維度。

4. 將**「Bed」**(床位)拖到「列」架,並將**「Hour」**(小時)拖到「欄」架。
5. 將**「Patient」**(患者)拖到「色彩」架。

格式設定為可選,但可以幫助使圖示更易於理解。
1. 選取「色彩」架,並選取「編輯色彩」。
2. 在左側的區域中,選取**「Unoccupied」**(未佔用)。從右側的下拉清單中,選取「西雅圖灰」調色板。
3. 選取第四個最淺的灰色,並按一下「確定」。
4. 再次選取「色彩」架,然後按一下「邊框」下拉式清單。選取最右側的第二個灰色選項。
5. 在工具列中,透過「大小」下拉式清單將「標準」變更為「適合寬度」。

6. 選取「設定格式」功能表,然後選取「邊框」。
7. 如果是「欄分隔符號」,選取「窗格」下拉式清單並選擇一種非常淺的灰色。
8. 將「層級」滑塊調整到第二個刻度標記。
9. 為「欄分隔符號」重複這些步驟。將「區」色彩設定為淺灰色,並將「層級」調整到第二個刻度標記。

10. 按兩下底部的工作表標籤,並將其重命名為**「Bed Use by Hour」**(按小時列出的床位使用情況)。
此檢視讓我們能快速查看給定床位何時處於佔用或空置狀態。

但我們可以更進一步,並計算每個床位未被佔用的小時數。
1. 選取底部的新工作表標籤  開啟一個空白工作表。
2. 將**「Patient」**(患者)拖到「列」。
3. 將**「Hour」**(小時)拖到「欄」。右鍵按一下「小時」膠囊,以開啟功能表。選取「度量」\>「計數」。
4. 將**「患者」**欄位的另一個副本從「資料」窗格拖曳到「色彩」架。
5. 以滑鼠右鍵按一下軸,並選取「編輯軸」。將標題變更為**「Hours」**(時數)並關閉對話方塊。
6. 將工作表標籤重新命名為**「患者佔用床位時數」**。

此檢視使我們能夠確定我們有多少未佔用床位時數,而這是使用原始資料集做不到的。您可以建立哪些其他圖示或儀表板?既然您的資料結構正確,不妨試一下。
## 總結和資源
為了使用 Tableau Prep 組建此資料結構,我們需要執行以下操作:
1. 針對我們想要分析的各個方面(本例中為**床位**和**小時**)組建資料集。
2. 交叉聯結這些資料集,建立一個包含床位和小時每種可能組合的**「Bed Hour Matrix」**(床位小時矩陣)資料集。
3. 將**「Bed Hour Matrix」**(床位小時矩陣)與**「Patient Bed」**(患者床位)資料聯結,同時確保聯結保留所有床位-槽位小時,並且聯結子句恰當地將患者床位資料與床位-小時槽位匹配。
我們使用以下計算來建立可以聯結的欄位。第二個和第三個計算從原始日期時間欄位中擷取小時資訊。
- **Cross Join**(交叉聯結)= `1`
- 此計算只是為每一列指派值 1
- **Start Hour**(開始小時)= `DATEPART('hour',[Start Time])`
- 這將獲取開始時間的小時並將其擷取出來。因此,「1/1/18 9:35 AM」將變為「9」。
- **End Hour**(結束小時)= `IFNULL(DATEPART('hour',[End Time]), 24)`
- 我們可以使用 `DATEPART('hour',[End Time])`,就像我們為**「Start Time」**(開始時間)所做的一樣。這將獲取結束時間的小時並將其擷取出來。因此,「1/1/18 4:34 AM」將變為 「4」。
- 但我們想要指明仍被佔用(沒有結束時間)的患者床位在使用中,而不是空置。為此,我們將使用 `IFNULL` 函數為任何缺少的結束時間指派結束時間 24 時(午夜)。如果第一個參數 `DATEPART('hour',[End Time])` 為 null,則計算將改為返回「24」。
**附註:**想要檢查您的工作?下載 Tableau Prep 已封裝流程檔案 ([Hospital Beds.tflx](https://mkt.tableau.com/PrepTutorials/Hospital%20Beds.tflx)) 和 Tableau Desktop 已封裝工作簿檔案 ([Hospital Beds.twbx](https://mkt.tableau.com/PrepTutorials/Hospital%20Beds.twbx))。
**資源:**需要更多訓練?參加[現場訓練](https://www.tableau.com/zh-tw/learn/classroom/prep)課程。想知道我們涵蓋的功能?請查看 Tableau Prep 線上說明中的其他主題。在尋找其他資源?[Master Tableau Prep with this list of learning resources(利用此學習資源清單掌握 Tableau Prep)](https://www.tableau.com/zh-tw/about/blog/2018/7/master-tableau-prep-list-learning-resources-92064)部落格正適合於您。
[跳至主要內容](#main-content)
# 使用 Tableau Prep 查找第二個日期
分析中的一項常見需求是確定_第二個_事件(例如客戶進行第二次購買並從而成為常客,或者駕駛員第二次交通違章時)的日期。查找第一個事件的日期很容易,它只是最小日期。查找第二個日期則較為複雜。
在這個由兩部分組成的教程中,我們將調整交通違章資料並回答以下問題:
1. 每個駕駛員第一次和第二次違章相隔多長時間(以天數為單位)?
2. 比較第一次和第二次違章的罰款金額。這些金額是否相關?
3. 總體而言,哪個駕駛員支付的罰款最多?誰支付的最少?
4. 有多少駕駛員有過多種類型的違章?
5. 從未上過交通法規學習班的駕駛員的平均罰款金額是多少?
在第一個階段中,我們將使用 Tableau Prep 重構資料以進行分析。在第二個階段[Tableau Desktop 中包含第二個日期的分析](https://help.tableau.com/v0.0/prep/zh-tw/prep_tutorial_2nddateB.htm)中,我們將轉而講述 Tableau Desktop 中的分析。
本教程的目標是在一個真實場景的內容中呈現各種概念並演練各個選項 — 而不是規定式地確定哪一個是最好的。最後,您應該會對資料結構對計算和分析的影響有更深的認識,並更加熟悉 Tableau Prep 的各項功能以及 Tableau Desktop 中的計算。
**附註**:為完成本教程中的工作,需要(安裝或透過瀏覽器使用)Tableau Prep Builder,並下載相關資料。對於第二部分,還需要安裝 Tableau Desktop。
資料集為 [Traffic Violations.xlsx](https://mkt.tableau.com/PrepTutorials/Traffic%20Violations.xlsx)。建議將其儲存在 我的 Tableau Prep 存放庫 > Datasources 資料夾中。
若要在繼續本教程之前安裝 Tableau Prep Builder 和 Tableau Desktop,請參閱 [Tableau Desktop 和 Tableau Prep 部署指南](https://help.tableau.com/current/desktopdeploy/zh-tw/desktop_deploy_welcome.htm#)。否則,您可以下載 [Tableau Prep](https://www.tableau.com/zh-tw/products/prep/download) 和 [Tableau Desktop](https://www.tableau.com/zh-tw/products/desktop/download) 免費試用版。
## 資料
對於此範例,我們將探討交通違章資料。每條違章為一列。將記錄駕駛員、日期、違章類型、駕駛員是否需要參加交通法規學習班以及罰款金額。

## 所需的資料結構
資料目前的構造方式是每條_違章_為一列。有多次違章的駕駛員將出現在多列中,並且無法輕鬆分辨哪條違章是他們的第一次或第二次違章。
為了調查屢屢違章的駕駛員,我們需要一個能夠分出第一次和第二次違章日期的資料集、與其中每條違章關聯的資訊,並且需要每一列為一個_駕駛員_。

## 重構資料
那麼如何使用 Tableau Prep 達到該目的?我們將分階段組建流程,首先抽取第一次違章日期,然後抽取第二次違章日期,接著根據需要調整最終資料。確保已下載了 Excel 檔案 ([Traffic Violations.xlsx](https://mkt.tableau.com/PrepTutorials/Traffic%20Violations.xlsx)) 以便繼續操作。
### 第一次違章日期的初始彙總
首先,我們將連線到 **Traffic Violations.xlsx** 檔案。
1. 開啟 Tableau Prep Builder。
2. 從開始螢幕中,按一下「連線至資料」。
3. 在「連線」窗格中,按一下「Microsoft Excel」。巡覽到 **Traffic Violations.xlsx** 的儲存位置,並按一下「開啟」。
4. **「Infractions」**(違章)工作表應會自動顯示在「流程」窗格中。
有關連線至資料的詳細資訊,請參閱[連線至資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_connect.htm)。
接著,我們需要標識每個駕駛員的第一次違章日期。我們將使用「彙總」步驟來執行此操作,同時建立一個包含**「Driver ID」**(駕駛員 ID)和**「Minimum Infraction Date」**(最早違章日期)的微型資料集。
在 Tableau Prep 中使用「彙總」步驟時,任何應定義列組成內容的欄位為「分組欄位」。(對我們來說,該欄位為**「Driver ID」**(駕駛員 ID)。)任何將彙總並顯示在分組欄位層級的欄位為「彙總欄位」。(對我們來說,該欄位為**「Infraction Date」**(違章日期)。)
1. 在「流程」窗格中,選取**「Infractions」**(違章),按一下加號  圖示,並選取「彙總」。
2. 將**「Driver ID」**(駕駛員 ID)拖到「分組欄位」放置區域。
3. 將**「Infraction Date」**(違章日期)拖到「彙總欄位」區域。預設彙總為 CNT(計數)。按一下「CNT」,並將彙總變更為「Minimum」。

這將標識最小(最早)日期,即每個駕駛員的第一次違章日期。
有關彙總的詳細資訊,請參閱[清理和調整資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_clean.htm#Group)。
1. 在「流程」窗格中,選取「Aggregate 1」(彙總 1),按一下加號  圖示,並選取「清理步驟」,以便我們能夠清理彙總的輸出。
2. 在「設定檔」窗格中,按兩下欄位名**「Infraction Date」**(違章日期),並將其變更為**「1st Infraction Date」**(第一次違章日期)。
_在此階段,流程和設定檔窗格應如下所示:_

從此「清理」步驟的「設定檔」窗格中,我們可以看到資料現在包含 39 列,並且只包含 2 個欄位。未用於分組或彙總的任何欄位已丟失。但我們想要能夠保留一些原始資訊。我們可將這些欄位新增到分組或彙總中(但這樣做會變更詳細資料層級或者需要對欄位進行彙總),或者將此微型資料集聯結回原始資料集(本質上是為**「1st Infraction Date」**(第一次違章日期)向原始資料中新增一個新列)。讓我們執行聯結。
1. 在「流程」窗格中,選取**「Infractions」**(違章),按一下加號  圖示,並選取「清理步驟」。
請確保直接將游標暫留在「違章」步驟上,而不是暫留在該步驟和「彙總」步驟之間的行上。若新的「清理」步驟插入在兩個步驟之間,而不是建立分支,請使用工具列中的「復原」箭頭,然後重試。功能表應顯示_「新增」_,而不是_「插入」_。

這會將流程與所有原始資料分開。我們會將彙總的結果聯結到完整資料的這一副本。透過依據**「Driver ID」**(駕駛員 ID)進行聯結,我們會將彙總中的最小日期新增到原始資料中。
1. 選取步驟**「清理 2」**,並將其拖到步驟**「清理 1」**上,放在「聯結」上。
2. 預設聯結設定應該是正確的:基於**「Driver ID = Driver ID」**的內部聯結。

有關聯結的詳情,請參閱[聯結資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_combine.htm#Join)。
由於在聯結過程中某些欄位可能會重複,例如聯結子句中的欄位,因此在執行聯結之後清理無關的欄位通常是個好主意。
1. 在「流程」窗格中,選取**「Join 1」**(聯結 1),按一下加號  圖示,並選取「清理步驟」。
2. 在「設定檔」窗格中,右鍵按一下或按住 Ctrl 並按一下 (MacOS)**「Driver ID-1」**(駕駛員 ID-1)卡,然後選取「移除」。
3. 若要變更欄位順序,請將**「1st Infraction Date」**(第一次違章日期)卡拖到**「Driver ID」**(駕駛員 ID)和**「Infraction Date」**(違章日期)之間您看到黑色行出現的位置。
_在此階段,流程應如下所示:_

查看下面的資料網格,我們可以看到新的合併資料集。我們有了新增到資料集中每一列的每個駕駛員的最小(即第一次)違章日期。

### 第二次違章日期的第二個彙總
我們還需要確定第二次違章日期。為此,我們需要篩選出違章日期等於最小日期的任何列 — 從而移除第一個日期。我們隨後可以使用另一個彙總步驟獲取剩餘日期的最小值,剩下的就是第一次違章日期,為了清楚起見,我們將重命名該日期。
**附註**:由於我們稍後在流程中將需要使用**「清理 3」**中目前狀態的資料,所以我們將新增另一個**「清理」**步驟,以取得第二次違章日期。這樣,我們稍後就能夠使用「清理 3」中目前狀態的資料。
1. 在「流程」窗格中,選取**「Clean 3」**(清理 3),按一下加號  圖示,並選取「清理步驟」。
2. 在「設定檔」窗格中的工具列上,選取「篩選值」。建立一個篩選器 `[Infraction Date] != [1st Infraction Date]`。
3. 移除欄位**「1st Infraction Date」**(第一次違章日期)。
4. 在「流程」窗格中,選取**「Clean 4」**(清理 4),按一下加號  圖示,並選取「彙總」。
5. 將**「Driver ID」**(駕駛員 ID)拖到「分組欄位」放置區域。將**「Infraction Date」**(違章日期)拖到「彙總欄位」區域,並將彙總變更為「Minimum」。
6. 在「流程」窗格中,選取**「Aggregate 2」**(彙總 2),按一下加號  圖示,並選取「清理步驟」。將**「Infraction Date」**(違章日期)重命名為**「2nd Infraction Date」**(第二次違章日期)。
_在此階段,流程應如下所示:_

我們現在為每個駕駛員標識了第二次違章日期。為了獲取與每次違章關聯的所有其他資訊(類型、罰款、交通法規學習班),我們需要再次將此項聯結回整個資料集。
1. 選取**「清理 5」**,並將其拖到步驟**「清理 3」**,放在「聯結」上。
2. 同樣,預設聯結設定應該是正確的:基於**「Driver ID = Driver ID」**的內部聯結。
3. 在「流程」窗格中,選取「**Join 2**」(聯結 2),按一下加號  圖示,並選取「清理步驟」。刪除欄位**「Driver ID-1」**(駕駛員 ID-1)和**「1st Infraction Date」**(第一次違章日期),因為不再需要這些欄位。
_在此階段,流程應如下所示:_

### 為第一次和第二次違章建立完整資料集
在執行任何進一步操作之前,讓我們回顧一下,想一想我們已有的所有內容以及要如何將它們結合在一起。我們期望的最終狀態是一個像這樣的資料集:包含一個**「Driver ID」**(駕駛員 ID)欄,然後包含日期、類型、交通法規學習班欄,以及第一次和第二次違章的罰款金額。

我們怎樣從這裡實現該目標?
在步驟**「Clean 3」**(清理 3)中,我們有完整的資料集,其中有一列重複顯示每個駕駛員的第一次違章日期。

我們想要清除不是第一次違章的駕駛員的所有列,同時組建一個隻包含第一次違章的資料集。也就是說,我們只想保留**「第一次違章日期」與「違章日期」相等**時給定駕駛員的資訊。篩選為只保留第一次違章的列之後,我們可以移除**「Infraction Date」**(篩選日期)欄位,並整理欄位名稱。
同樣,在進行第二次彙總和聯結之後,我們有了完整的資料集,其中有一清單示第二次違章日期。

我們可以執行類似的篩選器**「2nd Infraction Date = Infraction Date」**以僅保留每個駕駛員的第二次違章的資訊列。同樣,我們也可以移除現在多餘的**「Infraction Date」**(違章日期)並整理欄位名稱。
我們將從第一個違章資料集開始。
1. 在「流程」窗格中,選取**「Clean 3」**(清理 3),按一下加號  圖示,並選取「清理步驟」。
如上面的步驟 10 中一樣,我們需要為新的清理步驟新增分支,而不是將其插入清理 3 和清理 4 之間。
2. 在這個新的「清理」步驟處於選定狀態的情況下,在「設定檔」窗格的工具列中按一下「篩選值」。建立一個篩選器 `[1st Infraction Date] = [Infraction Date]`。
3. 移除欄位**「Infraction Date」**(違章日期)。
4. 將**「Infraction Type」**(違章類型)、**「Traffic School」**(交通法規學習班)和**「Fine Amount」**(罰款金額)欄位重命名為以「1st」開頭。
5. 在「流程」窗格中的步驟下按兩下名稱**「Clean 7」**(清理 7),並將其重命名為**「Robust 1st」**。
現在為第二個違章資料集執行操作。
1. 在「流程」窗格中,在最後一個聯結後選取**「Clean 6」**(清理 6)。
2. 在工具列中按一下「篩選值」。建立一個篩選器 `[2nd Infraction Date] = [Infraction Date]`。
3. 移除欄位**「Infraction Date」**(違章日期)。
4. 將**「Infraction Type」**(違章類型)、**「Traffic School」**(交通法規學習班)和**「Fine Amount」**(罰款金額)欄位重命名為以「2nd」開頭。
5. 在「流程」窗格中的步驟下按兩下名稱**「Clean 6」**(清理 7),並將其重命名為**「Robust 2nd」**。
_在此階段,流程應如下所示:_

### 建立完整資料集
既然我們有了這兩個包含各個駕駛員第一次和第二次違章完整資訊的兩個整齊資料集,我們就可以以**「Driver ID」**(駕駛員 ID)為基礎將它們重新聯結在一起,並最終產生我們期望的資料結構。
1. 選取**「Robust 2nd」**,並將其拖到**「Robust 1st」**,放在「聯結」上。
2. 預設聯結子句**「Driver ID = Driver ID」**應該是正確的。
3. 由於我們不想刪除沒有第二次違章的駕駛員,我們需要將此聯結設為左聯結。在「聯結類型」區域中,按一下**「Robust 1st」**旁邊圖表的無陰影區域,將其轉換為**「左」**聯結。
4. 在「流程」窗格中,選取**「Join 3」**(聯結 3),按一下加號  圖示,並選取「清理步驟」。移除重複欄位**「Driver ID-1」**(駕駛員 ID-1)。
資料處於期望狀態,因此我們可以建立輸出並繼續進行分析。
1. 在「流程」窗格中,選取新新增的**「Clean 6」**(清理 6),按一下加號  圖示,並選取「新增輸出」。
2. 在「輸出」窗格中,將「輸出類型」變更為 .csv,然後按一下「瀏覽」。為名稱輸入**「Driver Infractions」**(駕駛員違章),並在按一下「接受」儲存之前選取所需的位置。
3. 按一下窗格底部的「執行流程」 按鈕產生輸出。在狀態對話方塊中按一下「完成」關閉對話方塊。
**提示:**有關輸出和執行流程的詳細資訊,請參閱[儲存和共用工作](https://help.tableau.com/v0.0/prep/zh-tw/prep_save_share.htm#Export)。
_最終流程應如下所示:_

**附註**:您可以下載完成的流程檔案來檢查您的工作:[Driver Infractions.tflx](https://mkt.tableau.com/PrepTutorials/Driver%20Infractions.tflx)
## 總結
對於此教程的第一個階段,我們的目標是獲取原始資料集,並準備將其用於涉及第一次和第二次違章日期的分析。該過程由三個階段組成:
確定第一次和第二次違章日期:
1. 建立用於保留**「Driver ID」**(駕駛員 ID)和「**MIN Infraction Date**」(最小違章日期)的彙總。將此彙總與原始資料集聯結,建立一個「中間資料集」,其中包含為每一列重複的第一次(最小)違章日期。
2. 在新步驟上,篩選出**「1st Infraction Date」**(第一次違章日期)與**「Infraction Date」**(違章日期)相同的所有列。從該篩選的資料集中,建立用於保留**「Driver ID」**(駕駛員 ID )和**「MIN Infraction date」**(最小違章日期)的彙總。將此彙總與第一個步驟中的中間資料集聯結。這將標識第二次違章日期。
為第一次和第二次違章組建乾淨的資料集:
1. 返回並依據中間資料集建立一個分支,並篩選為僅包含**「1st Infraction Date」**(第一次違章日期)與**「Infraction Date」**(違章日期)相同的列。這將只會為第一次違章組建資料集。透過移除任何不必要的欄位對其進行整理,並重命名所有所需欄位(**「Driver ID」**(駕駛員 ID)除外),以指明它們用於第一次違章。這是**「Robust 1st」**資料集。
2. 針對第二次違章日期整理資料集。透過篩選為僅保留**「2nd Infraction Date」**(第二次違章日期)與**「Infraction Date」**(違章日期)相同的列,對步驟 2 中的聯結結果進行清理。移除任何不必要的欄位,並重命名所有所需欄位(**「Driver ID」**(駕駛員 ID)除外),以指明它們用於第二次違章。這是**「Robust 2nd」**資料集。
將第一次和第二次違章資料合併為一個資料集:
1. 聯結**「Robust 1st」**和**「Robust 2nd」**資料集,同時確保保留**「Robust 1st」**中的所有記錄以防止丟失沒有第二次違章的任何駕駛員。
接著,我們想要探索如何能在 Tableau Desktop 中分析此資料。
###
繼續閱讀[Tableau Desktop 中包含第二個日期的分析](https://help.tableau.com/v0.0/prep/zh-tw/prep_tutorial_2nddateB.htm)。
**附註:**特別感謝 Ann Jackson 的 Workout Wednesday 主題 [Do Customers Spend More on Their First or Second Purchase?(客戶在第一次或第二次購買時是否花費更多?)](https://www.workout-wednesday.com/2018/06/13/week-24-do-customers-spend-more-on-their-first-or-second-purchase/)以及 Andy Kriebel 的 Tableau Prep 技巧 [Returning the First and Second Purchase Dates(返回第一次和第二次購買日期)](https://www.vizwiz.com/2018/06/first-second-purchase.html?m=1),這些文章為本教程提供了最初的靈感。按一下這些連結會使您離開 Tableau 網站。Tableau 對於外部提供者所維護之頁面的準確性或新鮮度不擔負任何責任。如果您對內容有疑問,請聯絡其擁有者。
[跳至主要內容](#main-content)
# 使用累加式重新整理重新整理流程資料
**附註**:從版本 2020.4.1 開始,現在可以在 Tableau Server 和 Tableau Cloud 中建立和編輯流程。除非特別說明,否則本主題中的內容適用於所有平台。有關在 Web 上製作流程的詳情,請參閱 Tableau Server 說明中的 [Web 版 Tableau Prep](https://help.tableau.com/current/server/zh-tw/prep_web_auth.htm)。
從 Tableau Prep Builder 版本 2020.2.1 和 Web 版本開始,您可以將流程輸入和輸出設定為透過累加方式進行重新整理,以便在執行流程時僅檢索和處理新列,從而節省時間和資源。
例如,若流程包含每天更新的交易資料,則可以設定累加式重新整理,每天僅檢索和處理新交易,然後每週或每月執行一次完整的重新整理以重新整理所有流程資料。
## 累加式重新整理要求和限制
### 需求
若要使用累加式重新整理執行流程,Tableau Prep 需要以下資訊:
- 偵測輸入資料表中新列的欄位。
- 使用該欄位對流程輸出中最後一個處理值和輸入中的值進行比較,以確定哪些是新的列。有關詳情,請參閱[使用「附加」進行累加式重新整理](#refreshAppend)。
- 如何將新資料寫入資料表。可以在現有資料表中新增資料,也可以用新資料覆寫資料表資料,或從 Tableau Prep Builder 版本 2020.3.1 和 Web 版本開始,可取代現有資料表中的資料。
### 限制
- 使用 Salesforce 連接器對流程輸入執行累加式重新整理時,需要 Tableau Prep 版本 2021.1.2 或更高版本。
- 目前,將流程輸出寫入 Microsoft Excel、Amazon S3、CRM Analytics 或 Databricks 時不支援累加式重新整理。
- 輸出 .csv 檔案僅支援「建立資料表」。
- 輸出到本機或已發佈的 .hyper 擷取僅支援「附加至資料表」。
## 流程重新整理選項
Tableau Prep 可讓您選擇如何重新整理資料以及如何使用流程輸出更新資料表。下表說明不同選項及其優點。
Beds.xlsx 資料集看起來如下所示: Hours.xlsx 資料集看起來如下所示: 而交叉聯結的結果看起來如下所示: 


## 設定累加式重新整理
要將流程設定為使用累加式重新整理,需要在輸入步驟和輸出步驟中指定要使用此選項的設定。在輸入步驟中,指定 Tableau Prep 如何尋找新列。在輸出步驟中指定如何將新列寫入資料表。執行流程時,可以選擇完整或累加式重新整理類型。
> [!TIP]
>
> **提示**:設定輸入和輸出步驟以進行累加式重新整理後,可以保留組態並再次使用。複製並貼上步驟,以便在目前流程或 Tableau Prep Builder 中的其他位置使用,或者使用「將步驟儲存為流程」將所選步驟儲存至本機檔案或伺服器,以便在其他流程中再次使用這些步驟。有關複製、貼上或再次使用步驟的詳情,請參閱[複製步驟、動作和欄位](https://help.tableau.com/v0.0/prep/zh-tw/prep_copy_reuse_steps.htm)。
1. 在「流程」窗格中,選取您要為累加式重新整理設定的輸入步驟。
2. 在「設定」標籤頁「輸入」窗格的「累加式重新整理」(舊版在「設定累加式重新整理」區段中),設定下列選項:
- 選擇「啟用累加式重新整理」(舊版為「啟用」)。
- 「輸入欄位」(舊版為「使用欄位識別新列」):選取要在輸入資料中重新整理的欄位。此欄位必須指派數字(整數)、日期或日期與時間的資料類型。目前只能選取單一欄位。
**附註**:可以稍後在流程中刪除或重新命名此欄位,只要在「輸出欄位」(舊版為(「輸出中的欄位名稱」)中指定的欄位可用於將此欄位與最新輸出比較以尋找新列。
- 輸出:選擇與您的輸入相關的輸出,其中包括將用於比較列的欄位。
- 「輸出欄位」(舊版為「輸出中的欄位名稱」):選擇欄位,以用來比較流程輸出中最後一個處理值和輸入中的值以尋找新列。此欄位必須與您在輸入欄位中指定的欄位具有相同的資料類型和名稱(在早期版本中, 使用欄位識別新列)。

### 使用「附加」進行累加式重新整理
累加式重新整理首先會在輸出中搜尋累加式欄位的現有最大值。然後,它會篩選輸入中的列,以僅新增累加式欄位中值較大的列。例如:
現有表:
重新整理組合 已處理的資料 資料表更新 優點 完整重新整理 + 建立資料表 全部 使用完整資料集建立或覆寫現有資料表。 完整重新整理 + 附加至資料表 全部 新增列至現有資料表。 追蹤每個執行流程中的新資料和現有資料。附加至資料表不適用於 .csv 輸出類型。 完整重新整理 + 取代資料 全部 取代現有資料表中的列。 保留現有資料表架構結構,但取代每次執行流程的所有資料。 遞增重新整理 + 建立表 僅限新列 僅使用新列建立或覆寫現有資料表。 僅使用新列作為完整資料集,來建立新資料表。 遞增重新整理 + 附加至表 僅限新列 新增新列至現有資料表。 累加式重新整理 + 取代資料 僅限新列 僅使用新列取代現有資料表中的所有列。 保留現有資料表架構結構,但僅使用新列取代所有資料,使新列成為完整資料集。
根據 col1 將新列附加到表中:
Col1 Col2 識別碼 5 第 5 列
- 未新增 NewRow1。
- 已新增 NewRow6。
## 設定寫入選項
要完成設定累加式重新整理,請設定輸出的「寫入選項」,以指定如何將新列寫入資料表。與設定的輸入步驟相關的所有輸出,都選擇預設寫入選項,但您可以將其變更為受支援的選項。
可以將列輸出到檔案(僅限 Tableau Prep Builder)、已發佈的資料來源或資料庫中。某些資料庫設有資料限制或要求。有關資料庫限制和要求的更多資訊,請參閱[「將流程輸出資料儲存到外部資料庫」](https://help.tableau.com/current/prep/zh-tw/prep_save_share.htm#save-flow-output-data--to-external-databases)。
本機或已發佈的 .hyper 擷取的輸出,在預設情況下會設定為「附加至資料表」。對 .csv 檔案類型的輸出會設定為「建立資料表」。
1. 在「流程」窗格中,選取您要為累加式重新整理設定的輸出步驟。
2. 在「輸出」窗格的「寫入選項」區段中,查看預設寫入選項並根據需要進行任何變更。
- 建立資料表:這個選項可建立新資料表或將現有資料表取代為新輸出。
- 附加至資料表:此選項會將新資料新增到現有資料表中。如果表不存在,則在首次執行流程時將建立一個新表,並在後續執行將為此表新增列。不適用於 .csv 輸出類型。有關受支援的重新整理組合的詳情,請參閱[流程重新整理選項](#refresh-options)
- 取代資料(Tableau Prep Builder 版本 2020.3.1 和更高版本以及 Web 版本):要將輸出寫回到資料庫中的現有資料表時,可使用此選項。它會用流程資料取代資料庫資料表中的資料,但是保留資料表架構結構。

## 執行流程
可以在 Tableau Prep Builder 中、Web 上或從命令列使用累加式重新整理執行單個流程。有關使用命令列執行流程的資訊,請參閱[在啟用累加式重新整理的情況下執行流程](https://help.tableau.com/v0.0/prep/zh-tw/prep_run_commandline.htm#incremental-refresh)。
若有已啟用 Tableau Prep Conductor 的 資料管理,則可以透過在 Tableau Server 或 Tableau Cloud 中設定排程來使用累加式重新整理執行流程。
**附註**:在先前的版本中,寫入選項是在 Tableau Prep Builder 中設定,在 Tableau Server 或 Tableau Cloud 中執行流程時無法變更。從 Tableau Server 和 Tableau Cloud 版本 2020.4 開始,可以直接在 Web 中編輯流程。有關在 Web 上使用 Tableau Prep 的詳情,請參閱 Tableau Server 說明中的 [Web 版 Tableau Prep](https://help.tableau.com/current/server/zh-tw/prep_web_auth.htm)。
在使用累加式重新整理執行流程之前,需要先執行完整重新整理以在輸出位置中建立輸出資料來源。除非缺少累加式重新整理設定資料或已刪除現有輸出,否則後續執行流程會使用累加式重新整理過程,僅檢索和處理新列。
若要執行完整重新整理,請從頂端功能表或「輸出」窗格上的下拉式按鈕中選取「完整重新整理」,或按一下 執行流程 流程上的按鈕。
- 若要使用累加式重新整理在 Tableau Prep 中執行流程,請從以下位置之一選取「累加式重新整理」:
- 在頂端功能表中按一下「執行」按鈕上的下拉選項。

- 在「輸出」窗格中按一下「執行流程」按鈕上的下拉選項。

- 在「流程」窗格中按一下「輸出」步驟旁「執行」按鈕上的下拉選項。

如果一項啟用累加式重新整理的輸入與多項輸出相關聯,則必須使用相同的重新整理類型同時執行這些輸出。在 Tableau Prep 中執行重新整理時,將顯示一個對話方塊,告知您必須同時執行這兩項輸出。

[跳至主要內容](#main-content)
# 使用資料角色以驗證您的資料
**附註**:資料來源擁有者和 Tableau 管理員可以針對「資料問答」(Ask Data) 的特定資料欄位名稱和值新增同義字。有關使用「資料問答」資料角色的資訊,請參閱 Tableau Desktop 說明中的[針對「資料問答」新增同義字](https://help.tableau.com/current/pro/desktop/zh-tw/ask_data_synonyms.htm)。
> [!WARNING]
>
> **附註**:Tableau 的「資料問答」功能於 2024 年 2 月在 Tableau Cloud 和 Tableau Server 版本 2024.2 中已淘汰。
使用資料角色以快速識別欄位中的值是否有效。Tableau Prep 提供一組標準的資料角色,您可以從中選取資料角色,也可以使用資料集中的唯一欄位值建立自己的角色。
指派資料角色時,Tableau Prep 會將為該資料角色定義的標準值與欄位中的值進行比對。任何不相符的值會以紅色驚嘆號標記。您可以將欄位篩選為僅檢視有效或無效的值,然後採取適當的動作以修正這些值。將資料角色指派給欄位後,就可以使用「分組值」選項根據拼字和發音對無效值與有效值進行分組和比對。
**附註**:從版本 2020.4.1 開始,現在可以在 Tableau Server 和 Tableau Cloud 中建立和編輯流程。除非特別說明,否則本主題中的內容適用於所有平台。有關在 Web 上製作流程的詳情,請參閱 Tableau Server 說明中的 [Web 版 Tableau Prep](https://help.tableau.com/current/server/zh-tw/prep_web_auth.htm)。
## 為資料指派標準資料角色
以與指派資料類型相同的方式,為欄位指派 Tableau Prep 提供的資料角色。此資料角色可識別您的資料值所代表的意義,以便 Tableau Prep 能夠自動驗證值並反白顯示對於該角色無效的值。

舉例來說,如果您具有地理資料的欄位值,則可以指派資料角色「城市」,並且 Tableau Prep 會將欄位中的值與一組已知的網域值進行比較,以識別不相符的值。
**附註**:系統會對每個欄位進行單獨分析,因此國家/地區「美國」中的州「華盛頓」中的城市值「波特蘭」可能不是有效的城市和州組合,但並不會將其標識為無效,因為它是有效的城市名稱。
Tableau Prep Builder 提供以下資料角色:
- 電子郵件
- URL
- 地理角色(基於目前地理資料,並且與 Tableau Desktop 使用的資料相同)
- 機場
- 地區代碼 (美國)
- CBSA/MSA
- 城市
- 國會選區(美國)
- 國家/地區
- 郡/縣
- 歐洲 NUTS
- 州/省
- 郵遞區號
> [!TIP]
>
> **提示**:在 Tableau Prep Builder 版本 2019.1.4 和更高版本以及 Web 版本中,如果將地理角色指派給欄位,則也可以使用該資料角色將值與資料角色所定義的標準值進行比對和分組。有關使用資料角色分組值的詳細資訊,請參閱[清理和調整資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_clean.htm#Group_datarole)。
若要為欄位指派資料角色,請執行以下操作:
1. 在「設定檔」窗格、「結果」窗格或資料網格中,按一下欄位的資料類型。
2. 為欄位選取資料角色。

Tableau Prep 會將欄位的資料值與所選資料角色的已知網域值或模式(對於電子郵件或 URL)進行比較,並用紅色驚嘆號標記任何不相符的值。
3. 按一下欄位的下拉式箭頭,並從「顯示值」部分選取一個選項,以顯示所有值或僅顯示對於資料角色有效或無效的值。
Col1 Col2 識別碼 1 NewRow1 識別碼 6 NewRow6
4. 使用欄位的「更多選項」 功能表中的清除選項來更正無效的任何值。有關如何清理欄位值的詳細資訊,請參閱[關於清除操作](https://help.tableau.com/v0.0/prep/zh-tw/prep_clean.htm#Edit)。
## 建立自訂資料角色
> [!WARNING]
>
> **重要資訊**:自訂資料角色將於 2024 年 2 月在 Tableau Server 版本 2024.2 中淘汰。
從 Tableau Prep Builder 版本 2019.3.1 和 Web 版本開始,可以使用資料集中的欄位值建立自己的自訂資料角色,以建立一組標準值,然後您或其他人可以在清理資料時使用這些值來驗證欄位。選取您要使用的欄位,並視需要套用任何清除操作,然後將其發布至 Tableau Server 或 Tableau Cloud,以在您的流程中使用,或與其他人共用資料角色。
若在 Web 上編輯流程時建立自訂資料角色,則可以將自訂資料角色直接發佈到登入的伺服器。
### 需求
- 您可以從資料集中的單一欄位建立自訂資料角色。不支援從欄位組合建立自訂資料角色。
- 不支援將資料角色發佈到具有鎖定權限的專案。
- 您只能為指派給「字串」和「數字(整數)」資料類型的欄位建立自訂資料角色。
- 建立自訂資料角色時,Tableau Prep 會在流程中建立專用於發佈資料角色的輸出步驟。
- 不支援將自訂資料角色發布至相同流程中的多個站點。如果發佈流程,必須將自訂資料角色發佈至與發佈流程相同的站點或伺服器。
- 自訂資料角色專用於您將其發布的站點、伺服器及專案。具有位置權限的所有使用者都可以使用自訂資料角色,但是必須登入站點或伺服器才能加以選取或套用。已向自訂資料角色指派新專案所有使用者群組的預設權限,而不是無。
- 自訂資料角色並非特定用於某些版本。套用自訂資料角色時,會套用最新版本。
- 發布至 Tableau Server 或 Tableau Cloud 之後,具有站點、伺服器和專案存取權的使用者皆可檢視該位置的所有資料角色。
- 具有適當權限的使用者可以移動、刪除或編輯資料角色的權限。
- 您可以在自訂資料角色中設定的權限和採取的動作,與您可以使用流程執行的操作類似。有關詳情,請參閱 Tableau Server 說明中的[管理流程](https://help.tableau.com/current/server/zh-tw/prep_conductor_manage_flow.htm) 和 [發佈流程](https://help.tableau.com/current/server/zh-tw/permissions.htm#permission-capabilities)。
- 若要編輯資料角色,必須在 Tableau Prep Builder 中或 Web 上的流程中進行變更,然後使用相同的名稱重新發佈該資料角色,以進行覆寫。此流程類似於編輯已發佈的資料來源。
### 建立自訂資料角色
1. 在「設定檔」窗格、資料網格或「結果」窗格中,選取您要用來建立自訂資料角色的欄位。
2. 針對欄位按一下「更多選項」,並選取「發布為資料角色」。

3. 選取伺服器以及要在其中發布資料角色的專案。

4. 按一下「執行流程」以建立資料角色。發布程序順利完成後,即可在 Tableau Server 或 Tableau Cloud 中檢視您的資料角色。根據 Tableau Server 或 Tableau Cloud 站點上的負載,處理資料角色可能需要一點時間。如果您的資料角色無法立即使用,請稍候幾分鐘,然後再次嘗試選取。

### 套用自訂資料角色
1. 在「設定檔」窗格、「結果」窗格或資料網格中,按一下要在其中套用自訂資料角色之欄位的資料類型。
2. 選取「自訂」,然後選取要套用至欄位的資料角色。
> [!IMPORTANT]
>
> **重要提示**:在 Tableau Prep Builder 中,請確認已登入發佈此資料角色的站點或伺服器,否則無法看到此選項。

Tableau Prep 會將欄位的資料值與所選資料角色的已知網域值進行比較,並用紅色驚嘆號標記任何不相符的值。

3. 按一下欄位的下拉式箭頭,並從「顯示值」部分選取一個選項,以顯示所有值或僅顯示對於資料角色有效或無效的值。

4. 使用欄位的「更多選項」 功能表中的清除選項來更正無效的任何值。有關如何清理欄位值的詳細資訊,請參閱[關於清除操作](https://help.tableau.com/v0.0/prep/zh-tw/prep_clean.htm#Edit)。
### 檢視及管理自訂資料角色
您可以在 Tableau Server 和 Tableau Cloud 上檢視及管理已發佈的自訂資料角色。您可以檢視已發佈至站點或伺服器的所有自訂資料角色。針對選取的資料角色按一下「更多動作」,將其移至不同的專案、變更權限或刪除該資料角色。

## 按資料角色分組類似值
**附註:**在 Tableau Prep Builder 版本 2019.1.4 和 2019.2.1 中,此選項會標示為「資料角色比對」。
如果您指派地理資料角色到欄位,則可以使用資料角色中的值,根據拼字或發音來分組並匹配資料欄位中的值。可以使用「拼字」或「拼字 + 發音」對無效值與有效值進行分組和比對。
這些選項使用資料角色定義的標準值。如果資料集樣本中沒有標準值,Tableau Prep 會自動新增該值,並將該值標記為不在原始資料集中。有關將資料角色指派到欄位的詳情,請參閱[為資料指派標準資料角色](#datarole)。
若要使用資料角色分組值,請完成下列步驟。
1. 在「設定檔」窗格、「結果」窗格或資料網格中,按一下欄位的資料類型。
2. 為欄位選取下列其中一個資料角色:
- 機場
- 城市
- 國家/地區
- 郡/縣
- 州/省
從 Tableau Prep Builder 版本 2019.3.2 和 Web 版本開始,還可以從自訂資料角色中選取。


Tableau Prep 會將欄位的資料值與所選資料角色的已知網域值進行比較,並用紅色驚嘆號標記任何不相符的值。
3. 按一下「更多選項」,選取「分組值」(在以前的版本中為「分組和取代」),然後選取以下選項之一:
- 「拼字」:透過新增、移除或替代字元,將無效值匹配至不同的最接近有效值。
- 「發音 + 拼字」:根據拼字和發音將無效值匹配至最類似的有效值。

您也可按一下欄位上的「建議」 圖示,藉此將建議套用至群組並取代有效值中的無效值。此選項使用「發音 + 拼字」分組值選項。
Tableau Prep 會按拼字或拼字與發音來比較值,然後根據資料角色的標準值對類似值分組。如果標準值不在資料集中,將會新增該值並用紅點標記該值。

[跳至主要內容](#main-content)
# 儲存和共用工作
> [!WARNING]
>
> 自 2025 年 10 月 14 日起,Data Cloud 已更名為 Data 360。在此過渡期間,您可能會在我們的應用程式和文件中看到對 Data Cloud 的引用。雖然名稱已變更,但功能和內容保持不變。
可以在流程中的任何時候手動儲存工作,或者在 Web 上建立或編輯流程時讓 Tableau 為您自動儲存工作。在 Web 上處理流程時,有一些不同。
有關在 Web 上製作流程的詳情,請參閱 [Tableau Server](https://help.tableau.com/current/server/zh-tw/prep_web_auth.htm) 和 [Tableau Cloud](https://help.tableau.com/current/online/zh-tw/prep_web_auth.htm) 說明中的 **Web 版 Tableau Prep**。
標準資料角色(版本 2019.1.4 及更新版本) 自訂資料角色(版本 2019.3.2 及更新版本) 

若要將資料保持為最新狀態,可以從 Tableau Prep Builder 或命令列手動執行流程。還可以手動執行發佈在 Tableau Server 或 Tableau Cloud 上的流程或按排程執行流程。有關執行流程的詳情,請參閱[將流程發佈至 Tableau Server 或 Tableau Cloud](https://help.tableau.com/v0.0/prep/zh-tw/prep_conductor_publish_flow.htm#run_flows)。
## 儲存您的流程
在 Tableau Prep Builder 中,可以手動儲存流程,以在執行任何其他操作之前備份您的工作。流程會以 Tableau Prep 流程 (.tfl) 檔案格式儲存。
您也可以隨流程一起封裝本機檔案(Excel、文字檔和 Tableau 資料擷取)以與其他人共用,就像在 Tableau Desktop 中已封裝工作簿用於共用一樣。只能隨流程一起已封裝本機檔案。舉例來說,不會包括來自資料庫連線的資料。
在 Web 製作中,本機檔案會自動隨流程一起封裝。尚不支援直接檔案連線。
在儲存已封裝流程時,流程將儲存為已封裝 Tableau 流程檔 (.tflx)。
- 若要手動儲存流程,請從頂部功能表中選取「檔案」 > 「儲存」。
- 在 Tableau Prep Builder 中,若要隨流程一起封裝資料檔案,請從頂部功能表中執行以下操作之一:
- 選取「檔案」\>「匯出已封裝流程」
- 選取「檔案」\>「另存新檔」。然後,在「另存新檔」對話方塊中,從「另存新檔類型」下拉式功能表中選取「已封裝 Tableau 流程檔案」。
### 在 Web 上自動儲存流程
若在 Web 上建立或編輯流程,對流程進行變更(連線到資料來源、新增步驟等)後,工作會每隔幾秒鐘自動儲存為草稿,因此不會丟失。
只能將流程儲存到目前登入的伺服器。無法在一台伺服器上建立草稿流程,然後嘗試將其儲存或發佈到另一台伺服器。若要將流程發佈到伺服器上的其他專案,請使用「檔案」 > 「發佈為」功能表選項,然後從對話方塊中選取專案。
在您發佈草稿流程並將其提供給有權存取伺服器上專案的任何人使用之前,草稿流程僅您可見。處於草稿狀態的流程會由「草稿」徽章進行標記,因此您可以輕鬆地找到正在進行中的流程。若流程從未發佈過,則「草稿」徽章旁邊會顯示「從未發佈」徽章。

在發佈流程、編輯並重新發佈流程之後,交建立一個新版本。可以在「修訂歷程記錄」對話方塊中查看流程版本的清單。在「瀏覽」頁面中,按一下  **「動作」**功能表,然後選取「修訂歷程記錄」。
有關管理修訂歷程記錄的詳情,請參閱 Tableau Desktop 說明中的[處理內容修訂](https://help.tableau.com/current/pro/desktop/zh-tw/qs_revision_history.htm)。
**附註**:預設情況下,自動儲存功能處於啟用狀態。管理員可以(但不建議)停用站台上的自動儲存功能。若要關閉自動儲存,請使用 Tableau Server REST API 方法「更新站點」,並將 `flowAutoSaveEnabled` 屬性設定為 false。有關詳細資訊,請參閱 [Tableau Server REST API 站台方法:更新站台](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref_sites.htm#update_site)。
### 自動檔案恢復
依照預設,若應用程式凍結或損毀,Tableau Prep Builder 會自動儲存任何開啟流程的草稿。草稿流程儲存在 我的 Tableau Prep 存放庫 的 Recovered Flows 資料夾中。下次開啟應用程式時,會顯示對話方塊並提供已恢復流程的清單供您選擇。可以開啟已恢復流程並從上次離開的狀態繼續操作,或如果不需要了,可刪除已恢復流程檔案。
**附註**:如果 Recovered Flows 資料夾中存有已恢復流程,此對話方塊會在您每次開啟應用程式時顯示,直到資料夾清空為止。

如果不希望啟用此功能,身為管理員,您可以在安裝期間或安裝後將其關閉。有關如何關閉此功能的詳情,請參閱 Tableau Desktop 和 Tableau Prep 部署指南中的[關閉檔案恢復](https://help.tableau.com/current/desktopdeploy/zh-tw/desktop_deploy_setting_changes.htm#turn-off-autosave-tableau-desktop-only)。
### 復原已刪除的流程
_在 Tableau Cloud 和 Tableau Server 版本 2025.3 及更高版本中,Tableau Prep Web 製作支援。_
在 Web 製作中,可以從資源回收桶中檢索以前刪除的流程。若資源回收桶已開啟,流程不會被永久刪除,而是會暫時移至資源回收桶,可以在其中檢索或永久刪除它們。處於草稿狀態的流程仍會被永久刪除。有關資源回收桶詳情,請參閱[資源回收筒](https://help.tableau.com/current/online/zh-tw/recycle_bin.htm)。
**請注意**:此功能於 Tableau Prep Builder 中不可用。
使用此功能需要滿足以下條件:
- **權限**:必須被指派站台管理員、伺服器管理員、Creator 或 Explorer(可以發佈)角色。
- **站台設定**:站台資源回收桶已開啟
- **流程狀態**:流程必須已發佈。
流程在資源回收桶中存放的時間長度由管理員設定。
#### 恢復流程
1. 在首頁頁面中,展開側邊窗格,然後選取資源回收桶。
2. 在資源回收桶頁面上,從內容類型下拉式功能表中選取流程。

3. 對要還原的流程選取更多動作功能表,然後選取還原。

4. 選取一個專案作為還原位置。

5. 選取還原。
## 在 Tableau Desktop 中檢視流程輸出
**請注意**:此選項在 Web 上不可用。
當您清理資料時,有時您可能希望透過在 Tableau Desktop 中檢視資料來檢查進度。在 Tableau Desktop 中開啟流程時,Tableau Prep Builder 會建立一個永久的 Tableau .hyper 檔案和一個 Tableau 資料來源 (.tds) 檔案。這些檔案會儲存在「資料來源」檔案中的 Tableau 存放庫中,因此您可以隨時實驗資料。
在 Tableau Desktop 中開啟流程時,可以看到流程中正在處理的資料範例,其已套用到所選步驟為止的作業。
**附註**:當您可以使用自己的資料進行實驗時,Tableau 只會顯示您的資料範例,而您將無法將工作簿儲存已封裝工作簿 (.twbx)。準備在 Tableau 中使用資料時,請在流程中建立輸出步驟,並將輸出資料儲存至檔案或儲存為已發佈資料來源,然後連線到 Tableau 中的完整資料來源。
若要在 Tableau Desktop 中檢視資料樣本,請執行以下操作:
1. 以滑鼠右鍵按一下要在其中檢視資料的步驟,並從內容功能表中選取「在 Tableau Desktop 中預覽」。

2. Tableau Desktop 將開啟「工作表」標籤頁。
## 建立資料擷取檔案和已發佈的資料來源
若要建立流程輸出,請執行流程。執行流程時,所做的變更會套用於整個資料集。執行流程會產生 Tableau 資料來源 (.tds) 和 Tableau 資料擷取 (.hyper) 檔案。
**附註**:包含空間資料的流程只能輸出為 .hyper 檔案或作為已發佈資料來源。目前不支援其他輸出類型。有關使用空間資料的詳情,請參閱 [建立空間計算和聯結。](https://help.tableau.com/current/prep/zh-tw/prep_spatial_calculations_and_joins.htm)
#### Tableau Prep Builder
您可以依據流程輸出建立擷取檔案,以便在 Tableau Desktop 中使用,或與協力廠商共用資料。建立以下格式的擷取檔案:
- Hyper 擷取 (.hyper):這是最新的 Tableau 擷取檔案類型。
- 逗號分隔值 (.csv):將擷取儲存到 .csv 檔以與協力廠商共用資料。匯出的 CSV 檔的編碼將為帶 BOM 的 UTF-8。
- Microsoft Excel (.xlsx):Microsoft Excel 試算表。
#### Tableau Prep Builder 和 Web 版
將流程輸出發佈為已發佈的資料來源或輸出到資料庫。
- 將流程輸出作為資料來源儲存到 Tableau Server 或 Tableau Cloud,以共用資料並提供對已清理、調整和合併資料的集中存取。
- 將流程輸出儲存到資料庫,以使用乾淨、準備好的流程資料建立、取代或附加表資料。有關詳情,請參閱[將流程輸出資料儲存到外部資料庫](#write_to_DB)。
在執行流程時使用累加式重新整理,通過僅重新整理新資料而不是完整資料集來節省時間和資源。有關如何使用累加式重新整理設定和執行流程的資訊,請參閱[使用累加式重新整理重新整理流程資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_incremental_refresh.htm)。
**附註**:若要將 Tableau Prep Builder 輸出發佈到 Tableau Server,必須啟用 Tableau Server REST API。有關詳細資訊,請參閱 Tableau REST API 說明中的 [REST API 需求](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_requ.htm)。若要發佈到使用安全通訊端層 (SSL) 加密憑證的伺服器,還要在執行 Tableau Prep Builder 的電腦上執行一些額外設定步驟。有關詳情,請參閱 Tableau Desktop 和 Tableau Prep Builder 部署指南中的[安裝前說明](https://help.tableau.com/current/desktopdeploy/zh-tw/desktop_deploy_intro.htm)。
#### 在流程輸出中包含參數
_從版本 2021.4 開始在 Tableau Prep Builder 和 Web 上受支援_
在流程輸出檔案名稱、路徑、表名稱或自訂 SQL 指令碼(版本 2022.1.1 及更新版本)中包含參數值,以輕鬆針對不同資料集執行流程。有關更多資訊,請參閱[在流程中建立和使用參數](https://help.tableau.com/v0.0/prep/zh-tw/prep_parameters.htm)。
### 建立檔案擷取
**附註**:在 Web 上建立或編輯流程時,此輸出選項不可用。
1. 按一下步驟上的加號圖示 ,並選取「新增輸出」。
如果以前執行過流程,請按一下輸出步驟上的執行流程  按鈕。這會執行流程並更新輸出。
「輸出」窗格將開啟,並顯示資料的快照。

2. 在左窗格中,從「將輸出儲存到」下拉式清單中選取「檔案」。在先前的版本中,選取「儲存到檔案」。
3. 按一下「瀏覽」按鈕,然後在「將擷取另存新檔」對話方塊中輸入檔案的名稱,並按一下「接受」。
4. 在「輸出類型」欄位中選取下列輸出類型:
- Tableau 資料擷取 (.hyper)
- 逗號分隔值 (.csv)
5. (Tableau Prep Builder) 在「寫入選項」區段中,檢視預設寫入選項,以將新資料寫入檔案並根據需要進行任何變更。有關詳情,請參閱[設定寫入選項](https://help.tableau.com/v0.0/prep/zh-tw/prep_incremental_refresh.htm#flow-writeoptions)。
- 建立資料表:這個選項可建立新資料表或將現有資料表取代為新輸出。
- 附加至資料表:此選項會將新資料新增到現有資料表中。若資料表尚未存在,會建立一個新資料表,並且後續執行會將新列新增至此資料表。
**附註**:.csv 輸出類型不支援附加至資料表。有關受支援的重新整理組合的詳情,請參閱[流程重新整理選項](https://help.tableau.com/v0.0/prep/zh-tw/prep_incremental_refresh.htm#refresh-options)。
6. 按一下「執行流程」以執行流程並產生擷取檔。
### 建立到 Microsoft Excel 工作表的擷取資料
_支援 Tableau Prep Builder 版本 2021.1.2 及以上。在 Web 上建立或編輯流程或為包含空間資料的流程建立輸出時,此輸出選項不可用。_
將流程資料輸出到 Microsoft Excel 工作表時,可以建立新工作表或在現有工作表中附加或取代資料。適用條件如下:
- 僅支援 Microsoft Excel .xlsx 檔案格式。
- 工作表列從儲存格 A1 開始。
- 附加或取代資料時,第一列會被假定為標頭。
- 建立新工作表時會新增標頭名稱,但在將資料新增到現有工作表時不會新增。
- 現有工作表中的任何格式設定或公式都不會套用於流程輸出。
- 目前不支援寫入已命名資料表或範圍。
- 當前不支援累加式重新整理。
**將流程資料輸出到 Microsoft Excel 工作表檔案**
1. 按一下步驟上的加號圖示 ,並選取「新增輸出」。
如果以前執行過流程,請按一下輸出步驟上的執行流程  按鈕。這會執行流程並更新輸出。
「輸出」窗格將開啟,並顯示資料的快照。

2. 在左窗格中,從「將輸出儲存到」下拉式清單中選取「檔案」。
3. 按一下「瀏覽」按鈕,然後在「將擷取另存新檔」對話方塊中輸入或選取檔案名稱,並按一下「接受」。
4. 在「輸出類型」欄位中,選取 Microsoft Excel (.xlsx)。

5. 在「工作表」欄位中,選取要向其中寫入結果的工作表,或在該欄位中輸入新名稱,然後按一下「建立新資料表」。
6. 在「寫入選項」區段中,選取下列其中一個寫入選項:
- 建立資料表:使用流程資料建立或重新建立(若檔案已存在)工作表。
- 附加到資料表:將新列新增到現有工作表中。若工作表不存在,則會建立一個工作表,並且隨後的流程執行會向該工作表新增列。
- 取代資料:使用流程資料取代現有工作表中第一列以外的所有現有資料。
欄位比較會顯示流程中與工作表中欄位相符的欄位(若工作表已存在)。若工作表是新的,則會顯示一對一相符欄位。任何不相符的欄位都會被忽略。

7. 按一下「執行流程」以執行流程並產生 Microsoft Excel 擷取檔案。
### 建立已發佈的資料來源
1. 按一下步驟上的加號圖示 ,並選取「新增輸出」。
**附註**:Tableau Prep Builder 會重新整理以前發佈的資料來源,並維持資料來源中可能包含的任何資料建模(例如,計算欄位、數字格式等)。如果無法重新整理資料來源,則將取代資料來源,包括資料建模。
2. 「輸出」窗格將開啟,並顯示資料的快照。

3. 從「將輸出儲存到」下拉式清單中,選取「已發佈的資料來源」(在先前的版本中為「發佈為資料來源」)。請填妥下列欄位:
- 伺服器(僅適用於 Tableau Prep Builder):選取要在其中發佈資料來源和資料擷取的伺服器。如果未登入到伺服器,則會提示您登入。
**附註**:從 Tableau Prep Builder 版本 2020.1.4 起,在登入伺服器後,Tableau Prep Builder 會在關閉應用程式時記住您的伺服器名稱和認證。下次開啟應用程式時,您已經登入伺服器。
在 Mac 上,可能會提示您提供對 Mac 金鑰鏈的存取權限,以便 Tableau Prep Builder 能夠安全地使用 SSL 憑證來連線到 Tableau Server 或 Tableau Cloud 環境。
如果要輸出到 Tableau Cloud,請在「serverUrl」中包括託管您網站的 Pod。例如,「https://eu-west-1a.online.tableau.com」而不是「https://online.tableau.com」。
- 專案:選取要在其中載入資料來源和擷取的專案。
- 名稱:輸入檔案名稱。
- 說明:輸入資料來源的說明。
4. (Tableau Prep Builder) 在「寫入選項」區段中,檢視預設寫入選項,以將新資料寫入檔案並根據需要進行任何變更。有關詳情,請參閱[設定寫入選項](https://help.tableau.com/v0.0/prep/zh-tw/prep_incremental_refresh.htm#flow-writeoptions)
- 建立資料表:這個選項可建立新資料表或將現有資料表取代為新輸出。
- 附加至資料表:此選項會將新資料新增到現有資料表中。若資料表尚未存在,會建立一個新資料表,並且後續執行會將新列新增至此資料表。
5. 按一下「執行流程」以執行流程並發佈資料來源。
## 將流程輸出資料儲存到外部資料庫
_為包含空間資料的流程建立輸出時,此輸出選項不可用。_
> [!IMPORTANT]
>
> **重要資訊**:此功能使您能夠永久刪除和取代外部資料庫中的資料。請確保您具有寫入資料庫的權限。
> 為了防止資料遺失,您可以使用「自訂 SQL」選項複製資料表資料,並在將流程資料寫入資料表之前加以執行。
可以從 Tableau Prep Builder 或 Web 支援的任何連結器連線到資料,並將資料輸出到外部資料庫。這樣做可讓您在每次執行流程時,利用流程已清理、準備完成的資料,新增或更新資料庫中的資料。除非另有說明,在累加式重新整理和完整重新整理選項中均可使用此功能。有關設定累加式重新整理的詳情,請參閱[使用累加式重新整理重新整理流程資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_incremental_refresh.htm)。
將流程輸出儲存到外部資料庫時,Tableau Prep 會執行以下操作:
1. 產生列並針對資料庫執行任何 SQL 命令。
2. 將資料寫入輸出資料庫中的臨時資料表(如果輸出到 Snowflake 則寫入暫存區域)。
3. 如果操作成功,資料將從臨時資料表(Snowflake 則是暫存區域)移動到目標資料表中。
4. 執行將資料寫入資料庫後要執行的任何 SQL 命令。
如果 SQL 指令碼失敗,流程將會失敗。但是,您的資料仍將載入資料庫資料表中。您可以嘗試再次執行流程,或者在資料庫上手動執行 SQL 指令碼進行套用。
### 輸出選項
將資料寫入資料庫時,可以選擇以下選項。如果資料表不存在,會在首次執行流程時建立該資料表。
- 附加至資料表:這個選項將資料新增到現有資料表中。如果資料表不存在,會在第一次執行流程時建立該資料表,並將每次後續流程執行時,將資料新增至該資料表。
- 建立資料表:這個選項會以來自流程的資料建立新資料表。如果該資料表已存在,會刪除資料表和為資料表定義的任何現有資料結構或屬性,並替換為使用流程資料結構的新資料表。流程中存在的任何欄位,都會新增到新的資料庫資料表中。
- 取代資料:這個選項會刪除現有資料表中的資料,並將其取代為流程中的資料,不過會保留資料庫資料表的結構和屬性。如果資料表不存在,會在第一次執行流程時建立該資料表,並將每次後續流程執行時取代資料表資料。
### 其他選項
除了寫入選項之外,您還可以包含自訂 SQL 指令碼或新增資料表至資料庫。
- **自訂 SQL 指令碼**:輸入自訂 SQL 並選取要在將資料寫入數據庫表之前、之後還是之前和之後都要執行指令碼。可以使用這些指令碼在將流程資料寫入表之前建立資料庫表的副本、新增索引、新增其他表屬性等等。
**注意**:從版本 2022.1.1 開始,還可以在 SQL 指令碼中插入參數。有關詳細資訊,請參閱[將使用者參數套用於輸出步驟](https://help.tableau.com/v0.0/prep/zh-tw/prep_parameters.htm#output_parameters)。
- **新增資料表**:將使用唯一名稱的新資料表新增至資料庫,而不是從現有資料表清單中選擇。如果要套用預設架構以外的架構(Microsoft SQL Server 和 PostgreSQL),可以使用語法 `[schema name].[table name]` 指定。
### 支援的資料庫和資料庫要求
Tableau Prep 支援將流程資料寫入選定數量的資料庫中的表。在 Tableau Cloud 中按排程執行的流程,只有在雲端託管時才能寫入這些資料庫。
如果連線至內部部署資料來源,從版本 2025.1 開始,可使用 Tableau Bridge 用戶端連線到 Tableau Cloud 並重新整理其中的資料。這需要在 Bridge 用戶端集區中設定 Tableau Bridge 用戶端,並將網域新增至私人網路允許清單。在 Tableau Prep Builder 和 Web 上,連線到資料來源時,請確保伺服器 URL 與 Bridge 集區中的網域相符。有關詳細資訊,請參閱[從 Tableau Prep Builder 發佈流程](https://help.tableau.com/current/prep/zh-tw/prep_conductor_publish_flow.htm#publish-a-flow-from-tableau-prep-builder)中 Tableu Cloud 部分中的「資料庫」。
某些資料庫設有資料限制或要求。Tableau Prep 可能還會施加一些限制,以在將資料寫入支援的資料庫時保持最佳效能。下表列出了可以儲存流程資料和任何資料庫限制或要求的資料庫。不符合這些要求的資料在執行流程時可能會導致錯誤。
**請注意**:尚不支援為欄位設定字元限制。但是,您可以在資料庫中建立包含字元限制約束的資料表,然後使用「取代資料」取代資料,同時保留資料庫中的資料表結構。
Tableau Prep Builder Web 版 Tableau Prep
### 將流程資料儲存到資料庫
**附註**:您可以在發佈流程時內嵌資料庫認證。有關內嵌認證的更多資訊,請參閱[從 Tableau Prep Builder 發佈流程](https://help.tableau.com/v0.0/prep/zh-tw/prep_conductor_publish_flow.htm#Publish)中的**資料庫**部分
1. 按一下步驟上的加號圖示 ,並選取「新增輸出」。
2. 從「儲存輸出至」下拉式清單中,選取「資料庫與雲端儲存」。
3. 在「設定」標籤頁中輸入下列資訊:
- 在「連線」下拉清單中,選擇您想要在該處寫入流程輸出的資料庫連線器。僅顯示支援的連線器。可以是用於流程輸入的相同連線器或其他連線器。如果選擇其他連線器,系統將提示您登入。
> [!IMPORTANT]
>
> **重要資訊:**請確保您擁有所選資料庫的寫入權限。否則,流程可能只能處理部分資料。

- 在「資料庫」下拉清單中,選擇要在此儲存流程輸出資料的資料庫。結構描述或資料庫中至少必須有一個表才能在下拉式清單中可見。
- 在「資料表」下拉清單中,選擇要在此儲存流程輸出資料的資料表。根據選取的「寫入選項」,將會建立新資料表、流程資料會取代資料表中的任何現有資料,或者流程資料會新增至現有資料表中。
若要在資料庫中建立新資料表,請改在欄位中輸入唯一的資料表名稱,然後按「建立新資料表」。第一次執行流程時,無論您選擇哪一個寫入選項,都會使用與流程相同的架構在資料庫中建立資料表。

4. 「輸出」窗格將開啟,並顯示資料的快照。欄位比較會顯示流程中與資料表欄位相符的欄位(若資料表已存在)。如果資料表是新的,則顯示一對一相符欄位。

如果存在任何不符欄位,狀態說明會顯示任何錯誤。
- **不相符:忽略欄位**:流程中存在該欄位,但資料庫中沒有。除非選擇「建立資料表」寫入選項並執行完整重新整理,否則欄位不會新增至資料庫資料表。然後,流程欄位會新增至資料庫資料表,並使用流程輸出架構。
- **不相符:欄位會包含 Null 值**:資料庫中存在該欄位,但流程中沒有。流程會將 Null 值傳遞到欄位的資料庫資料表。如果該欄位確實存在流程中,但由於欄位名稱不同而不相符,您可以導航到清理步驟並編輯欄位名稱,以符合資料庫欄位名稱。有關如何編輯欄位名稱的詳細資訊,請參閱[套用清理作業](https://help.tableau.com/v0.0/prep/zh-tw/prep_clean.htm#clean_list)。
- **錯誤:欄位資料類型不相符**:指派給流程及寫入輸出的資料庫資料表欄位的資料類型必須相符,否則流程會失敗。您可以導航到清理步驟並編輯欄位資料類型以解決此問題。有關變更資料類型的更多資訊,請參閱[查看指派給資料的資料類型](https://help.tableau.com/v0.0/prep/zh-tw/prep_explore.htm#reviewdatatypes)。
5. 選擇寫入選項。您可以選擇其他選項進行完全重新整理和累加式重新整理,並在選擇流程執行方法時套用該選項。有關使用累加式重新整理執行流程的詳情,請參閱[使用累加式重新整理重新整理流程資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_incremental_refresh.htm)。
- 附加至資料表:這個選項將資料新增到現有資料表中。如果資料表不存在,會在第一次執行流程時建立該資料表,並將每次後續流程執行時,將資料新增至該資料表。
- 建立資料表:這個選項會建立新資料表。如果相同名稱的資料表已存在,會刪除現有資料表並以新資料表取代。為資料表定義的任何現有資料結構或屬性也將被刪除,並以流程資料結構取代。流程中存在的任何欄位,都會新增到新的資料庫資料表中。
- 取代資料:這個選項會刪除現有資料表中的資料,並將其取代為流程中的資料,不過會保留資料庫資料表的結構和屬性。
6. (選擇性)點選「自訂 SQL」標籤頁並輸入 SQL 指令碼。您可以輸入在資料寫入資料表之前和之後執行的指令碼。

7. 點選「執行流程」以執行流程,並將資料寫入選取的資料庫。
## 將流程輸出資料儲存到 CRM Analytics 中的資料集
_從版本 2022.3 開始,在 Tableau Prep Builder 和 Web 上受支援。_
**注意**:在整合來自外部來源的資料時,CRM Analytics 有一些要求和限制。為確保可以成功地將流程輸出寫入 CRM Analytics,請參閱 Salesforce 說明中的[將資料整合到資料集之前的注意事項](https://help.salesforce.com/s/articleView?id=sf.bi_integrate_considerations.htm&type=5)。
使用 Tableau Prep 清理資料並在 CRM Analytics 中獲得更好的預測結果。只需從任何 Tableau Prep Builder 或 Web 上的 Tableau Prep 支援的連接器連線到資料。然後,套用轉換來清理資料,並將流程資料直接輸出到有權存取的 CRM Analytics 中的資料集。
無法使用命令列介面執行將資料輸出到 CRM Analytics 的流程。可以使用 Tableau Prep Builder 手動執行流程,也可以通過 Tableau Prep Conductor 使用 Web 上的排程。
### 必要條件
要將流程資料輸出到 CRM Analytics,請檢查您在 Salesforce 和 Tableau 中是否具有以下授權、存取和權限。
#### Salesforce 要求
資料庫 要求或限制 Amazon Redshift Amazon S3(僅輸出) 參閱將流程輸出資料儲存至 Amazon S3 Databricks Google BigQuery Microsoft SQL Server maestro.output.write_to_mssql_using_runas。MySQL Oracle Pivotal Greenplum Database PostgreSQL SAP HANA Snowflake Teradata Vertica
#### Tableau Prep 要求
要求 說明 Salesforce 權限
### 將流程資料儲存至 CRM Analytics
從 Tableau Prep Builder 儲存到 CRM Analytics 時,以下 CRM Analytics 輸入限制套用。
- 外部資料上傳的檔案大小上限:40 GB
- 24 小時內所有外部資料上傳的檔案大小上限:50 GB
1. 按一下步驟上的加號圖示 ,並選取「新增輸出」。
2. 從「將輸出儲存至」下拉式清單中選取「CRM Analytics」。

3. 在「資料集」區段,連線到 Salesforce。
登入 Salesforce 並按一下「允許」以授予 Tableau 對CRM Analytics 應用程式和資料集的存取權限,或選取現有的 Salesforce 連線
4. 在「名稱」欄位中,選取現有資料集名稱。這將用流程輸出覆寫並取代資料集。或者,輸入新名稱並按一下建立新資料集以在選取的 CRM Analytics 應用程式中建立新資料集。
**請注意**:資料集名稱不能超過 80 個字元。

5. 在「名稱」欄位下方,驗證顯示的應用程式是您有權寫入的應用程式。
要變更應用程式,請按一下「瀏覽資料集」,然後從清單中選取應用程式,在「名稱」欄位中輸入資料集名稱,然後按一下「接受」。

6. 在「寫入選項」區段中,「完全重新整理」和「建立資料表」是唯二支援的選項。
7. 點選「執行流程」以執行流程,並將資料寫入 CRM Analytics 資料集。
如果流程執行成功,可以在資料管理器的「監視」索引標籤中驗證 CRM Analytics 中的輸出結果。有關此功能的更多資訊,請參閱 Salesforce 說明中的[監視外部資料載入](https://help.salesforce.com/s/articleView?id=sf.bi_integrate_systemjob_monitoring.htm&type=5)。
## 將流程輸出資料儲存到 Data Cloud
_從版本 2023.3 開始,在 Tableau Prep Builder 和 Web 上受支援。_
使用 Tableau Prep 準備資料,然後將資料與 Data Cloud 中的現有資料集關聯。使用 Tableau Prep Builder 或 Web 上的 Tableau Prep 支援的任何連接器匯入資料、清理和準備資料,然後使用擷取 API 將流程資料直接輸出到 Data Cloud。
### 權限先決條件
要求 說明
### 將流程資料儲存到 Data Cloud
如果您已在使用擷取 API 並手動呼叫 API 將資料集儲存到 Data Cloud,則可以使用 Tableau Prep 簡化該工作流程。Tableau Prep 的先決條件設定相同。
如果這是您第一次將資料儲存到 Data Cloud,請按照 [Data Cloud 設定先決條件](#saveDC_setup)中的設定要求進行動作。
1. 按一下步驟上的加號圖示 ,並選取「新增輸出」。
2. 從「儲存輸出至」下拉式清單中,選取**「Salesforce Data Cloud」**。

4. 從「物件」區段,選取要登入的 Salesforce Data Cloud 組織。

5. 從 Salesforce Data Cloud 功能表,按一下「登入」。
會有個瀏覽器窗格開啟至 _https://login.salesforce.com/_。

8. 使用您的使用者名稱和密碼登入 Data Cloud 組織。
9. 在「允許存取」表格中,按一下**「允許」**。

11. 在「儲存輸出至區段」中輸入擷取 API 連接器和物件名稱。

13. 要找到擷取 API 連接器名稱及對應 物件名稱,請執行以下操作:
- 登入 Salesforce Data Cloud 並導航至「Data Cloud 設定」。

- 在「快速尋找」方塊中,輸入「擷取 API」,然後從結果中選取「擷取 API」。

- 在「擷取 API」頁面中可以看到連接器名稱中列出的可用連接器。

- 找到要使用連接器的對應物件名稱,在該清單中選取一個連接器。在「連接器詳細資訊」頁面的「架構」部分中,會看到在「物件名稱」下列出的對應物件。

14. 「寫入選項」區段指示如果表中已存在指定值,則將更新現有列;如果指定值尚不存在,則將插入新列。
15. 按一下「執行流程」以執行流程,並將資料寫入 Data Cloud。
16. 檢視資料流中的執行狀態和資料總管中的物件來驗證 Data Cloud 中的資料。
#### 注意事項
- 您可以一次執行一個流程。必須先在 Data Cloud 中完成執行,然後才能執行另一個儲存輸出。
- 將流程儲存到Data Cloud 的等待時間可能需要一些時間才能完成。在 Data Cloud 中查看狀態。
- 使用 Upsert 功能將資料儲存到 Data Cloud。如果文件中的記錄與現有記錄相符,則現有記錄將使用資料中的值進行更新。如果未找到相符記錄,則將記錄建立為新實體。
- 對於 Prep Conductor,如果排程自動執行相同的流程,則資料將不會更新。這是因為僅支援 Upsert。
- 在儲存到 Data Cloud 過程中無法中止作業。
- 不對儲存到 Data Cloud 的欄位進行驗證。驗證 Data Cloud 中的資料。
### Data Cloud 設定先決條件
這些步驟是將 Tableau Prep 流程儲存到 Data Cloud 的先決條件。有關Data Cloud 概念以及 Tableau 資料來源和 Data Cloud 之間的對應資料詳情,請參閱[關於 Salesforce Data Cloud](https://help.salesforce.com/s/articleView?id=sf.c360_a_data_cloud.htm)。
#### 設定擷取 API 連接器
上傳具有 .yaml 檔案附檔名的 OpenAPI (OAS) 格式的結構描述檔,從來源物件建立擷取 API 資料流。結構描述檔描述了網站上的資料結構。有關更多資訊,請參閱 [YAML 檔案範例](#YMAL)和[擷取 API](https://help.salesforce.com/s/articleView?id=sf.c360_a_ingestion_api.htm)。
1. 按一下「設定」齒輪圖示,然後按一下 Data Cloud 設定。
2. 按一下「擷取 API」。
3. 按一下「新增」並提供連接器名稱。
4. 在新連接器的詳情頁面上,上傳 OpenAPI (OAS) 格式的結構描述檔,其中包含 `.yaml` 檔案附檔名。結構描述檔描述由 API 傳輸的資料結構。
**附註**:擷取 API 模式有設定的要求。擷取前請參閱[結構描述要求](#saveDC_schemReq)。
6. 按一下「儲存」在預覽結構描述表格上。
#### 建立資料流
資料流是引入 Data Cloud 的資料來源。它由擷取到 Data Cloud 中的連線和關聯資料組成。
1. 前往應用程式啟動器並選取 Data Cloud。
2. 按一下「資料流」索引標籤。
3. 按一下「新增」並選取「擷取 API」,然後按一下「下一步」。
4. 選取擷取 API 和物件。
5. 選取資料空間、類別和主索引鍵,然後按一下「下一步」。
Data Cloud 必須使用真正的主索引鍵。如果不存在,則需要為主索引鍵建立一個公式欄位。
對於類別,請在個人資料、參與度或其他之間進行選擇。對於用於參與類別的物件,必須存在日期時間欄位。個人檔案或其他類型的物件不受此限。有關詳情,請參閱[類別](https://help.salesforce.com/s/articleView?id=sf.c360_a_category.htm)和[主索引鍵](https://help.salesforce.com/s/articleView?id=sf.c360_a_primary_key.htm)。
8. 按一下「部署」。
您現在擁有一個資料流和一個資料湖物件。您的資料流現在可以新增到資料空間。

#### 將資料流新增到資料空間
將資料從任何來源引入Data Cloud 時,可以將資料湖物件 (DLO) 關聯到相關資料空間(帶或不帶篩選器)。
1. 按一下「資料空間」索引標籤。

3. 選擇預設資料空間或您指派到的資料空間的名稱。
4. 按一下「新增資料」。
5. 選取建立的資料湖物件並按一下「下一步」。
6. (可選)為物件選取篩選器。
7. 按一下「儲存」。
#### 將資料湖物件對應到 Salesforce 物件
資料對應將資料湖物件欄位與資料模型物件 (DMO) 欄位相關聯。
1. 前往「資料流」索引標籤並選取您建立的資料流。

2. 從「資料對應」區段,按一下「開始」。
欄位對應畫佈在左側顯示來源 DLO,在右側顯示目標 DMO。有關詳情,請參閱[地圖資料模型物件](https://help.salesforce.com/s/articleView?id=sf.c360_a_map_custom_data_model_objects.htm)。
#### 為 Data Cloud 擷取 API 建立外部用戶端應用程式或已連線應用程式
在使用擷取 API 將資料傳送到 Data Cloud 前,必須將 Salesforce 設定為使用外部用戶端應用程式(推薦)或已連線應用程式(已棄用)。有關更多詳細資訊,請參閱 Salesforce 說明中的以下內容:
- 如果是外部用戶端應用程式: [設定外部用戶端應用程式 OAuth 設定](https://help.salesforce.com/s/articleView?id=xcloud.configure_external_client_app_oauth_settings.htm&type=5)與[建立外部用戶端應用程式](https://help.salesforce.com/s/articleView?id=xcloud.create_a_local_external_client_app.htm&type=5)
- 如果是已連線應用程式:[為 API 整合啟用 OAuth 設定](https://help.salesforce.com/s/articleView?language=zh_TW&id=sf.connected_app_create_api_integration.htm)與[為 Data Cloud 擷取 API 建立已連線應用程式](https://help.salesforce.com/s/articleView?language=zh_TW&id=sf.c360_a_create_ingestion_api_connected_app.htm)
作為適用於擷取 API 的外部用戶端應用程式或已連線應用程式設定一部分,必須選取以下 OAuth 範圍:
- 存取和管理 Data Cloud 擷取 API 資料 (cdp\_ingest\_api)
- 管理 Data Cloud 個人檔案資料 (cdp\_profile\_api)
- 在 Data Cloud 資料上執行 ANSI SQL 查詢 (cdp\_query\_api)
- 透過 API (api) 管理使用者資料
- 隨時代表您執行請求 (refresh\_token、offline\_access)
#### 結構描述要求
要在 Data Cloud 中建立擷取 API 來源,您上傳的結構描述檔必須滿足特定要求。請參閱[擷取 API 結構描述要求](https://help.salesforce.com/s/articleView?id=sf.c360_a_ingestion_api_schema_req.htm)。
- 上傳的結構描述必須採用有效的 OpenAPI 格式,並帶有 .yml 或 .yaml 副檔名。支援 OpenAPI 版本 3.0.x。
- 物件不能有巢狀物件。
- 每個模式必須至少有一個物件。每個物件必須至少有一個欄位。
- 物件不能有超過 1000 個欄位。
- 物件的長度不能超過 80 個字元。
- 物件名稱只能包含 a-z、A-Z、0–9、\_、-。不能有 unicode 字元。
- 欄位名稱只能包含 a-z、A-Z、0–9、\_、-。不能有 unicode 字元。
- 欄位名稱不能是以下任何保留字:date\_id、location\_id、dat\_account\_currency、dat\_exchange\_rate、pacing\_period、pacing\_end\_date、row\_count、version。欄位名稱不能包含字串 \_\_。
- 欄位名稱不能超過 80 個字元。
- 欄位滿足以下類型和格式:
- 對於文字或布林類型:字串
- 對於數字類型:數字
- 對於日期類型:字串;格式:日期-時間
- 物件名稱不能重複;不區分大小寫。
- 物件不能有重複的欄位名稱;不區分大小寫。
- 負載中的日期時間資料類型欄位必須採用 ISO 8601 UTC Zulu 格式,格式為 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'。
更新結構描述時,請注意:
- 無法變更現有欄位資料類型。
- 更新物件時,該物件的所有現有欄位都必須存在。
- 更新後的結構描述檔僅包含變更的物件,因此不必每次都提供完整的物件清單。
- 對於用於參與類別的物件,必須存在日期時間欄位。`profile` 或者 `other` 類型的物件不受此限。
#### YAML 檔案範例
openapi: 3.0.3
components:
schemas:
owner:
type: object
required:
- id
- name
- region
- createddate
properties:
id:
type: integer
format: int64
name:
type: string
maxLength: 50
region:
type: string
maxLength: 50
createddate:
type: string
format: date-time
car:
type: object
required:
- car\_id
- color
- createddate
properties:
car\_id:
type: integer
format: int64
color:
type: string
maxLength: 50
createddate:
type: string
format: date-time
## 將流程輸出資料儲存至 Amazon S3
_Tableau Prep Builder 2024.2 及之後版本、Web 製作以及 Tableau Cloud 提供此功能。Tableau Server 中尚未提供此功能。_
可以聯線至 Tableau Prep Builder 或 Web 支援的任何連接器的資料,並以 .parquet 或 .csv 檔案在 Amazon S3 儲存流程輸出。該輸出可以儲存為新資料儲存,也可以覆蓋現有的 S3 資料。為了防止資料遺失,您可以使用「自訂 SQL」選項複製資料表資料,並在將流程資料寫入資料表之前加以執行。
正在儲存流程輸出並連線至 S3 連接器是相互獨立的作業。無法重複使用作為 Tableau Prep 輸入連線的現有 S3 連線。
可以在 Amazon S3 中儲存的資料總量和物件數量是無限的。獨立 Amazon S3 物件的大小範圍可以從最小 0 個位元組到最大 5 TB。單次 PUT 可以上傳的最大物件為 5 GB。如果物件大於 100 MB,客戶應考慮使用分段上傳功能。參看[使用分段上傳功能上傳與複製物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)。
#### 權限
要寫入 Amazon S3 貯體,需要您的貯體區域、貯體名稱、存取金鑰 ID 與秘密存取金鑰。若要取得這些金鑰,需要在 AWS 中建立身分與存取管理 (IAM) 使用者。請參閱[管理 IAM 使用者的存取金鑰](https://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/id_credentials_access-keys.html)。
### 將流程資料儲存至 Amazon S3
1. 按一下步驟中的加號圖示 ,並選取「新增輸出」。
2. 從「儲存輸出至」下拉式清單中,選取**「資料庫與雲端儲存」**。
3. 在「資料表 > 連線」部分選取「Amazon S3(僅限輸出)」。
4. 在「Amazon S3(僅限輸出)」表格中新增以下資訊:
- **存取密鑰 ID**:用於簽署傳送至 Amazon S3 請求的金鑰 ID。
- **秘密存取密鑰**:用於驗證您是否有權限存取 AWS 資源的安全憑證(密碼、存取金鑰)。
- **貯體區域**:Amazon S3 貯體位置(AWS 區域終端節點)。例如:us-east-2。
- **貯體名稱**:要寫入流輸出的 S3 貯體名稱。同一區域內任意兩個 AWS 帳戶的貯體名稱不能相同。
**附註**:要尋找您的 S3 區域和貯體名稱,請登入您的 AWS S3 帳戶並導覽至 AWS S3 主控台。
5. 按一下「登入」。
6. 在 S3 URI 欄位中輸入 `.csv` 或者 `.parquet` 檔案。預設情況下,會使用 `s3://資料空間權限 Salesforce 個人檔案 Tableau Prep 授權與權限 Creator 授權作為 Creator,您必須先登入 Salesforce 組織帳戶並驗證,然後才能選取應用程式和資料集來輸出流程資料。
對資料進行變更時,將會向「流程」窗格中的對應步驟中新增注釋,並會在「變更」窗格中新增一個條目來跟蹤您的動作。如果在「輸入」步驟中進行變更,則注釋會顯示在「流程」窗格中步驟的左側,並也會顯示在欄位清單的「輸入設定」中。
您應用變更的順序很重要。在「彙總」、「樞紐」、「聯結」和「聯集」步驟類型中進行的變更會在這些清除動作之前或之後執行,具體情況取決於您進行變更時欄位的位置。進行變更的位置顯示在步驟的「變更」窗格中。
以下範例顯示了在聯結步驟中對幾個欄位所做的變更。在聯結動作前執行變更,以提供更正後的結果。

### 操作順序
以下表顯示了「彙總」、「樞紐」、「聯結」和「聯集」步驟中清理動作的執行位置,具體情況取決於欄位在步驟中的何處。
輸入 清理 彙總 樞紐 聯結 聯集 新行 輸出 篩選器 X X X X X X X 分組值 X X X X 清理 X X X X X 轉換日期 X X X X X X 拆分值 X X X X X 重命名欄位 X X X X X X 重新命名欄位(大量) X 複製欄位 X X X X X 僅保留欄位 X X X X X X X 移除欄位 X X X X X X X 建立計算欄位 X X X X X 編輯值 X X X X X 變更資料類型 X X X X X X X
**附註:**對於聯結,如果欄位是使用一個表中的欄位建立的計算欄位,則在聯結之前應用變更。如果欄位是同時使用兩個表中的欄位建立的,則在聯結之後應用變更。
## 套用清理作業
要對欄位套用清除操作,請使用工具列選項,或在欄位設定檔卡、資料格或「結果」窗格上按一下「更多選項」,開啟功能表。
在「彙總」、「樞紐」、「聯結」和「聯集」步驟類型中,可以在「結果」窗格和對應的資料網格中的設定檔卡上找到「更多選項」功能表。如果您會在整個流程中不斷重複執行同樣的清除操作或動作,可以複製並貼上步驟、動作或甚至是欄位。如需詳細資訊,請參閱[複製步驟、動作和欄位](https://help.tableau.com/v0.0/prep/zh-tw/prep_copy_reuse_steps.htm)。
動作/ 步驟類型: 彙總 彙總 樞紐 樞紐 聯結 聯結 聯集 聯集 新行 欄位位置: 分組欄位 彙總欄位 不在樞紐中 從樞紐建立 包含在單一資料表中* 包含在兩個資料表中* 不匹配欄位 合併欄位 用來生成行的欄位 篩選器 彙總之前 彙總之後 樞紐之前 樞紐之後 聯結之前 聯結之後 聯集之前 聯集之後 新行之後 分組值 不適用 不適用 樞紐之前 樞紐之後 聯結之前 聯結之後 聯集之前 聯集之後 新行之後 清理 不適用 不適用 樞紐之前 樞紐之後 聯結之前 聯結之後 聯集之前 聯集之後 新行之後 轉換日期 彙總之前 彙總之後 樞紐之前 樞紐之後 聯結之前 聯結之後 聯集之前 聯集之後 新行之後 拆分值 不適用 不適用 樞紐之前 樞紐之後 聯結之前 聯結之後 聯集之前 聯集之後 新行之後 重命名欄位 不適用 不適用 樞紐之前 樞紐之後 聯結之前 聯結之後 聯集之前 聯集之後 新行之前 複製欄位 不適用 不適用 樞紐之前 樞紐之後 聯結之前 聯結之後 聯集之前 聯集之後 新行之後 僅保留欄位 彙總之後 彙總之後 樞紐之前 樞紐之後 聯結之前 聯結之後 聯集之前 聯集之後 新行之後 移除欄位 從彙總中移除 從彙總中移除 樞紐之前 樞紐之後 聯結之前 聯結之後 聯集之前 聯集之後 新行之後 建立計算欄位 不適用 不適用 樞紐之前 樞紐之後 聯結之後 聯結之後 聯集之前 聯集之後 新行之後 編輯值 不適用 不適用 樞紐之前 樞紐之後 聯結之前 聯結之後 聯集之前 聯集之後 新行之後 變更資料類型 彙總之前 彙總之後 樞紐之前 樞紐之後 聯結之前 聯結之前 聯集之前 聯集之後 新行之前
### 選取檢視
您可以在資料網格或清單檢視的設定檔或結果窗格外執行清理作業。使用檢視工具列 變更檢視,然後在欄位上按一下「更多選項」 以開啟清理功能表。
- 顯示設定檔窗格:這是預設檢視。選取此按鈕即可返回「設定檔」窗格或「結果」窗格檢視。

- 顯示資料網格:折疊設定檔或結果窗格以展開並只顯示資料網格。此檢視可讓您檢視更詳細的資料畫面,在您需要處理特定欄位值時非常實用。選取此選項後,您流程的所有步驟都會維持此檢視狀態,但您可以隨時變更。
**附註**:並非所有清理操作都可在資料網格中使用。舉例來說,如果要編輯內嵌值,則必須在「設定檔」窗格。

- 顯示清單檢視  (Tableau Prep Builder在 Web 中):將設定檔窗格或結果窗格轉換為清單。選取此選項後,您流程的所有步驟都會維持此檢視狀態,但您可以隨時變更。
在此檢視中,您可以:
- 使用 X 選項選取和刪除多列。
- 使用  選項選取、隱藏和取消隱藏多列。
- 大量重新命名欄位。
- 使用「更多選項」功能表,以將動作套用至所選欄位。
若為欄位指派資料角色,或是選取「篩選條件」、「分組值」、「清理」或「拆分值」,系統會帶您返回「設定檔」或「結果」檢視以完成這些動作。其他所有選項都可以在清單檢視執行。

### 暫停資料更新以提升效能
對資料執行清理操作時,Tableau Prep 會隨著進展套用變更,以便立即顯示結果。知道要進行的變更且不需要為每次變更提供即時反饋時,為節省寶貴的處理時間,您可以通過暫停資料更新來提高效能。
暫停資料更新時,可以同時進行所有變更,然後恢復更新以查看結果。您可以隨時恢復資料更新並啟用所有可用操作。
需要協助偵錯緩慢的流程嗎?嘗試從說明\>設定和效能功能表開啟啟用查詢記錄。有關詳情,請參閱[啟用查詢記錄](https://help.tableau.com/current/prep/zh-tw/prep_troubleshoot.htm#enable-query-logging)。
**附註**:暫停資料更新後,會停用所有需要查看值的動作。例如,如果要將篩選條件套用至所選值,您則需要查看想排除的值。
1. 在頂端功能表中,按一下「暫停資料更新」以暫停更新。

2. Tableau Prep 會將「設定檔」窗格轉換為「清單」檢視。在「清單」檢視中,使用「更多選項」功能表,以將操作套用至所選欄位。如果操作需要您查看值,則會停用該動作。如果要啟用該操作,則必須恢復資料更新。
有關使用「清單」檢視模式的詳細資訊,請參閱[選取檢視](#select_view)。

3. 如果要查看變更結果或啟用停用的功能,請恢復資料更新。按一下「恢復資料更新」按鈕,再按一下功能表對話方塊或「流程」窗格頂端的訊息橫幅中的「恢復」按鈕。
**附註**:Tableau Prep Builder 提供可直接從功能表恢復更新的選項。若在 Web 上編輯流程,則需要從頂部功能表恢復更新。

### 套用清理作業
若要將清除操作套用至欄位,請執行下列操作:
1. 在「設定檔」窗格、資料網格、「結果」窗格或清單檢視中,選取要進行變更的欄位。
2. 從工具列或欄位的「更多選項」功能表中,選取下列選項:
- 「篩選」或「篩選值」:選取其中一個篩選條件選項,在欄位值上按一下滑鼠右鍵或按住 Ctrl 並按一下 (MacOS),以保留或排除值。您也可以使用「選定值」篩選條件來選擇要篩選的值,包括不在流程樣本中的值。有關篩選條件選項的詳情,請參閱[篩選資料](https://help.tableau.com/v0.0/prep/zh-tw/prep_filter.htm)。
- 分組值(在以前的版本中為「分組和取代」):手動選取值或使用自動分組。也可以在設定檔卡中選取多個值,然後右鍵按一下或按住 Ctrl 並按一下 (MacOS),為值分組或取消分組,或者編輯群組值。有關使用分組值的詳情,請參閱[使用模糊比對將值自動映像到標準值](#fuzzy_match)。
- 清理:從快速清理操作清單中進行選取,以便應用於欄位中的所有值。
- 轉換日期︰針對指派給「日期」或「日期和時間」資料類型的欄位,請從「DATEPART」快速清理操作清單中選取以將日期欄位值轉換為代表年份、季度、月份、星期、日或日期和時間值的整數值。也可以從兩項「DATENAME」快速清理操作中進行選取,也就是星期幾或月份名稱,以轉換日期欄位值。
- 自訂會計年度:如果您的會計年度不是從一月開始,可設定自訂會計月份,使用該月份轉換日期,而不使用預設的一月份。
- 此設定是以欄位為基礎,因此,如果您想要將自訂會計年度套用至其他欄位,請重複相同步驟。
- 要開啟對話方塊,請從「更多選項」功能表,選取「轉換日期」\>「自訂會計年度」。

- 分割值:根據一般分隔符號自動分隔值,或使用自訂分割來指定分割欄位值的方式。自動分割和自訂分割的方式與 Tableau Desktop 中的操作方式相同。有關詳情,請參閱 Tableau Desktop 和 Web 製作說明中的[將欄位拆分為多個欄位](https://help.tableau.com/current/pro/desktop/zh-tw/split.htm)。
- 重新命名欄位:編輯欄位名稱。
- 重複欄位:建立您的欄位和值的副本。
- 僅保留欄位:僅保留選取的欄位,排除步驟中的所有其他欄位。
- 建立計算欄位:在「計算」編輯器中編寫自訂計算,或使用「視覺化計算」編輯器建立詳細資訊、排序或列數計算層級。有關詳情,請參閲[建立詳細資料層級、排名和動態磚計算](https://help.tableau.com/v0.0/prep/zh-tw/prep_calculations.htm)。
- 發佈為資料角色:建立自訂資料角色,然後可將其套用於欄位,以在清理資料時驗證欄位值。有關此選項的詳情,請參閱[建立自訂資料角色](https://help.tableau.com/v0.0/prep/zh-tw/prep_validate_data.htm#custom_data_roles)。
- 隱藏欄位:若想要在流程中保留一些欄位,但是不需要清理,那麼可以隱藏它們,而不是移除它們。有關詳細資訊,請參閱[隱藏欄位](https://help.tableau.com/v0.0/prep/zh-tw/prep_filter.htm#hide_fields)。
- 移除:從流中移除該欄位。
3. 若要編輯值,請在一個或多個值上按一下滑鼠右鍵或按住 Ctrl 並按一下 (MacOS),然後選取「編輯值」,接著輸入新值。您也可以選取「取代為 Null」將值取代為 Null 值,或在單個欄位中按兩下以直接對其進行編輯。有關編輯欄位值的詳情,請參閱[編輯欄位值](#editvalues)。
4. 在「設定檔」窗格、「摘要」窗格或資料網路中查看這些操作的結果。
### 大量重新命名欄位
_支援 Tableau Prep Builder 版本 2021.2.1 及以上。Tableau Server 和 Tableau Cloud 版本 2021.2 及更高版本的 Web 版 Tableau Prep 支援。_
使用「重新命名欄位」選項大量重新命名多個欄位。搜尋欄位名稱的一部分以取代或移除它,或者為資料集中所有或選定欄位新增首碼或尾碼。
在進行變更時選取「自動重新命名新欄位」核取方塊,還可以自動將相同的變更套用於將來新增的任何符合條件的欄位。
**注意**:此選項僅在「清理」步驟類型中可用。
1. 在「清理」步驟中,從工具列中選取「重新命名欄位」。

檢視會自動轉換為顯示流程中所有欄位的「清單檢視」。可以使用工具列中的「搜尋」選項來縮小結果範圍。

所有欄位預設情況下處於選定狀態。清除頂部核取方塊可清除選取所有欄位,從而僅手動選取要變更的欄位。
2. 在「重新命名欄位」窗格中,從以下選項中進行選取:
- 「取代文字」:在「璇找文字」欄位中,使用「搜尋選項調整搜尋內容」尋找相符文字,然後在「取代」欄位中輸入取代文字。要尋找空格,請在「尋找文字」欄位中按空白鍵。
**注意**:重新命名欄位不會導致空白或重複的欄位名稱。

- 新增首碼:將文字新增到所有選定欄位名稱的開頭。
- 新增尾碼:在所有選定欄位名稱的末尾新增文字。
輸入時,結果將顯示在清單檢視窗格中。

3. (可選)選取自動重新命名新欄位以在重新整理資料時自動將這些相同的變更套用到符合取代條件的新欄位。
4. 按一下「重新命名」以套用變更並關閉窗格。「重新命名」按鈕顯示受變更影響的欄位數。

## 查看您所做的變更
不同類型的清理操作由流程中步驟上的圖示表示。如果向步驟應用了超過四種類型的操作,則步驟上會顯示省略號。將游標暫停在這些圖示上即可查看顯示所應用的操作及其執行順序的注釋。
從 Tableau Prep Builder 版本 2019.1.3 和更高版本以及 Web 版本開始,可以按一下「流程」窗格中某一步的變更圖示上的註釋,或者按一下「設定檔」或「結果」窗格中設定檔卡上的變更圖示上的註釋,然後其影響的變更和欄位將會在「變更」窗格以及「設定檔」或「結果」窗格中反白顯示。
「設定檔」窗格工具列 下拉式功能表 

也可以選取步驟,然後展開「變更」窗格以檢視每個變更的詳細資訊、編輯或移除變更,將變更向上或向下拖動以變更其套用順序,並新增說明以向其他使用者提供內容。有關對變更新增說明的詳情,請參閱[對流程步驟和清除動作新增說明](https://help.tableau.com/v0.0/prep/zh-tw/prep_build_flow.htm#descriptions)。


在「彙總」、「樞紐」、「聯結」或「聯集」步驟中查看變更時,變更的應用順序會在調整動作之前或之後顯示。這些變更的順序由系統應用,無法變更。您可以編輯和移除變更。

## 合併欄位
如果欄位包含的值相同,但名稱不同,您可以透過將一個欄位拖到另一個欄位上,輕鬆地將它們合併為單個欄位。在合併欄位時,目標欄位將成為主欄位,並且目標欄位的欄位名稱保持不變。合併到目標欄位的欄位會被移除。
**範例:**
清理注釋 「變更」窗格 

合併欄位時,Tableau Prep 會保留目標欄位中的所有欄位,並將該欄位中的任何 null 值取代為您與目標欄位合併的源欄位中的值。源欄位會被移除。
**範例**
輸入聯集產生 3 個具有相同值的欄位 將 3 個欄位合併為 1 個欄位 

如果將 **Business \_Phone**、**Cell\_Phone** 和 **Home\_Phone** 欄位與 **Contact\_phone** 欄位合併,則會移除其他欄位並產生以下內容:
Name Contact_Phone Business_Phone Cell_Phone Home_Phone Bob 123-4567 123-4567 空 空 Sally 空 空 456-7890 789-0123 Fred 空 空 空 567-8901 Emma 空 234-5678 345-6789 空
若要合併欄位,請執行以下操作之一:
- 將一個欄位拖放到另一個欄位上。將顯示「放置以合併欄位」指示符。
- 選取多個欄位,並在所選範圍內以滑鼠右鍵按一下以開啟內容功能表 ,然後按一下「合併欄位」。
- 選取多個欄位,然後在工具列上按一下「合併欄位」。
有關如何修正聯集所產生的不匹配欄位的資訊,請參閱[修正不匹配的欄位](https://help.tableau.com/v0.0/prep/zh-tw/prep_combine.htm#Fix_union)。
## 使用建議套用清理操作
有時可能很難確定您需要使用哪些清理操作來修正資料中的問題。Tableau Prep 能夠分析資料並建議可自動套用的清理操作,以快速修正資料欄位中的問題,或是找出問題方便您修正。除「輸入」、「輸出」和「聯結」步驟類型外的所有步驟類型中提供了此功能。
**附註**:在 Tableau Prep Builder 中,若不想使用此功能,可以將其關閉。從頂端功能表中,轉到「說明」\>「設定和效能」。然後按一下「啟用建議」以清除設定旁邊的核取記號。
建議類型包括:
- 資料角色
- 篩選器
- 分組值
- 將欄樞紐為列
- 將值取代為 Null 值
- 移除欄位
- 此選項特別適用於固定寬度類型文字檔案中的資料。若要使用具有此檔案類型的分割建議,在連線至資料來源之後,請在「輸入步驟」的 「文字設定」索引標籤中,選取資料中未使用的 「欄位分隔符號」,這樣資料就會以單一欄位的形式載入。)
- 剪裁空格
### 套用建議
1. 執行以下操作之一:
- 按一下設定檔卡右上角中的燈泡  圖示。
- 從工具列中按一下「建議」下拉式清單箭頭,檢視有關您的資料集合的所有建議,並從清單中選取一項建議。
僅當 Tableau Prep 識別建議的變更時,此選項才會出現。
Name Contact_Phone Bob 123-4567 Sally 456-7890 Fred 567-8901 Emma 234-5678
2. 若要應用建議,請將滑鼠指標暫停在「建議」卡上,然後按一下「套用」 。

- 系統會自動應用變更,並向「變更」窗格中新增一個條目。若要移除變更,請在頂端功能表中按一下「復原」,或將滑鼠指標暫停在「變更」窗格中的變更上,並按一下「X」將其移除。
- 如果將建議套用至樞紐欄位,則會自動建立樞紐步驟,您可以在其中執行任何其他樞紐動作(例如重新命名樞紐欄位)或在其他欄位上進行樞紐。
3. 如果 Tableau Prep 因為所做變更而確定了進一步的建議,則燈泡圖示會一直顯示在「設定檔」卡上,直至找不到進一步的建議為止。

重複上面的步驟以套用任何其他變更或忽略建議的變更,並使用其他清理工具來解決資料問題。

| Tableau Prep Builder 中的資料類型 | Python 中的資料類型 |
|---|---|
| 字串 | 標準 UTF-8 字串 |
| Decimal | Double |
| Int | 整數 |
| Bool | 布林值 |
| 日期 | ISO_DATE 格式為「YYYY-MM-DD」的字串,具有可選的時區位移。例如,「2011-12-03」是有效的日期。 |
| DateTime | ISO_DATE_TIME 格式為「YYYY-MM-DDT:HH:mm:ss」的字串,具有可選的時區位移。例如,「2011-12-03T10:15:30+01:00」是有效日期。 |
| Python 中的函數 | 產生的資料類型 |
|---|---|
| prep_string() | 字串 |
| prep_decimal() | Decimal |
| prep_int() | 整數 |
| prep_bool() | 布林值 |
| prep_date() | 日期 |
| prep_datetime() | DateTime |
| Tableau Prep Builder 中的資料類型 | R 中的資料類型 |
|---|---|
| 字串 | 標準 UTF-8 字串 |
| Decimal | Double |
| Int | 整數 |
| Bool | Logical |
| 日期 | ISO_DATE 格式為「YYYY-MM-DD」的字串,具有可選的時區位移。例如,「2011-12-03+01:00」是有效日期。 |
| DateTime | ISO_DATE_TIME 格式為「YYYY-MM-DDT:HH:mm:ss」的字串,具有可選的時區位移。例如,「2011-12-03T10:15:30+01:00」是有效日期。 |
| R 中的函數 | 產生的資料類型 |
|---|---|
| prep_string () | 字串 |
| prep_decimal () | Decimal |
| prep_int () | 整數 |
| prep_bool () | 布林值 |
| prep_date () | 日期 |
| prep_datetime () | DateTime |
| 步驟類型 | 參數位置 |
|---|---|
| 輸入 | 使用者參數:
|
| 輸出 | 使用者或系統參數:
|
| 清理、新列、樞紐、聯結、聯集 | 使用者參數:
|
| 彙總 | 使用者參數:
|
| 指令碼 | 使用者參數:
|
| 預測 | 使用者參數:
|
| 篩選器 | 描述 |
|---|---|
| 檔案名稱 | 為檔案名稱模式選取符合或不符合。例如「訂單*」。 |
| 檔案大小 | 透過選取大小範圍或按大小排序來篩選檔案。 大小範圍:從以下選項中選取:
按大小排序:包括或排除 N 個最大或最小的檔案。 |
| 建立日期 | 透過選取日期範圍、相對日期或按日期排序來篩選檔案。 日期範圍:從以下選項中選取:
相對日期:包括或排除年、季度、月、週或日的精確範圍。還可以設定相對於特定日期的錨點。 附註:「最近」日期時間段包括完整的目前時間單位,即使某些日期尚未發生。例如,若選取「最近一個月」,而目前日期為 1 月 7 日,Tableau 將顯示 1 月 1 日至 1 月 31 日的日期。 按日期排序:包括或排除 N 個最新或最舊的檔案。 |
| 修改日期 | 透過選取日期範圍、相對日期或按日期排序來篩選檔案。 日期範圍:從以下選項中選取:
相對日期:包括或排除年、季度、月、週或日的精確範圍。還可以設定相對於特定日期的錨點。 附註:「最近」日期時間段包括完整的目前時間單位,即使某些日期尚未發生。例如,若選取「最近一個月」,而目前日期為 1 月 7 日,Tableau 將顯示 1 月 1 日至 1 月 31 日的日期。 按日期排序:包括或排除 N 個最新或最舊的檔案。 |
| 要求 | 說明 |
|---|---|
Salesforce 授權 | 以下授權之一:
這些授權須額外付費才可使用。 |
Salesforce 使用者帳戶 | 設定為存取 Einstein Discovery 的帳戶。 若使用 Tableau 中的 Einstein Discovery 授權,使用者帳戶必須指派有透過 Connect API 檢視 Einstein Discovery 建議系統權限。 若使用 Tableau CRM Plus 授權或 Einstein Predictions 授權:
若要設定使用者帳戶,請參閱 Salesforce 說明中的設定 Einstein Discovery。 |
管理員設定 | Salesforce 管理員需要:
|
| 要求 | 說明 |
|---|---|
Tableau Prep 授權與權限 | Creator 授權 作為 Creator,您需要能夠登入 Salesforce 組織帳戶以存取預測定義並新增模型到您的流程中。 |
Tableau 使用者帳戶 | 在 Tableau Server 和 Tableau Cloud 版本 2021.2 及更高版本中,使用者可以將 Salesforce 使用者帳戶認證及其 Tableau 使用者帳戶一起儲存。 有關連線至 Salesforce 資料的詳細資訊,請參閱連線到 Salesforce 資料。 |
| 管理員設定 | Tableau 伺服器管理員需要將 Tableau Server 設定為與Tableau Prep 的 Einstein Discovery 整合。有關詳情,請參閱 Tableau Server 說明中的設定 Einstein Discovery 整合。 |
| 問題 | 預測 | 這是哪裡? |
|---|---|---|
| 該員工留任的可能性有多大? | Einstein Discovery 預測,有 81.38% 的機會,他們將留任。 | 預測欄位 |
| 影響此結果的因素是什麼? | 與現任經理在一起的年數減少了 2.2% 該員工留任的機會。 | 預測值 1 欄位(頂端預測值) 預測值 1 影響(頂端預測值的影響百分比) |
| 什麼可以改善這個預測的結果? | 將員工的月薪提高至 4923 到 5725 之間,員工留任的可能性將增加 3.86%。 | 改善功能 1 欄位(頂端改善功能) 改善功能 1 影響(建議變更的影響百分比) |
| 使用 Data Interpreter 之前 | 使用 Data Interpreter 之後 |
|---|---|
![]() | ![]() |
| 參數 | 描述 | 傳回的值 |
|---|---|---|
| TableauApp | 用來存取資料來源的應用程式。 | Prep Builder Prep Conductor |
| TableauVersion | 應用程式版本號碼。 | Tableau Prep Builder:傳回確切的版本資訊。例如,2020.4.1 Tableau Prep Conductor:傳回已啟用 Tableau Prep Conductor 的主要伺服器版本。例如,2020.4 |
| FlowName | Tableau Prep Builder 中的 .tfl 檔案名稱 | 範例:Entertainment Data_Cleaned |
| 函數 | 語法 | 何時使用 |
| AREA | AREA(Spatial Polygon, 'units') | 計算土地價值 範例:確定房地產宗地的總面積,以推算每平方英尺的價格。 |
| BUFFER | BUFFER(Spatial point, distance, 'units') | 貿易區分析 範例:在新商店位置周圍建立一個 10 英里的「服務範圍」,以確定哪些客戶居住在開車距離之內。 |
| DIFFERENCE | DIFFERENCE(Spatial, Spatial) | 排除區域 範例:採用銷售區域多邊形並「切出」受保護的森林區域或競爭對手的區域,以找到真正的應稅區域。 |
| DISTANCE | DISTANCE(SpatialPoint1, SpatialPoint2, 'units') | 交付最佳化 範例:計算倉庫與運輸中心的距離,以標記超過「本地」運輸費率的任何貨件。 |
| INTERSECTION | INTERSECTION (spatial, spatial) | 尋找重疊區域 範例:找出兩個不同野生動物棲息地相遇的特定重疊區域,以研究物種相互作用。 |
| INTERSECTS | INTERSECTS (geometry1, geometry2) | 篩選資料 範例:傳回 True 或 False。將此用作篩選器,以僅保留位於特定「高增長」學區內的商店位置。 |
| LENGTH | LENGTH (geometry,'units') | 基礎結構規劃 範例:測量光纖電纜線路的總里程,以估算網路擴展的材料成本。 |
| MAKELINE | MAKELINE(SpatialPoint1, SpatialPoint2) | 物流路線 範例:建立出發機場和目的地之間的縮短距離,以視覺化全球航班路徑。 |
| MAKEPOINT | MAKEPOINT(latitude, longitude, [SRID]) | 對原始資料進行地理編碼 範例:將緯度和經度座標的試算表轉換為 Tableau 可以製圖的實際地理點。 |
| OUTLINE | OUTLINE(spatial polygon) | 突顯邊界 範例:擷取複雜城市形狀的邊框,為地圖疊加建立乾淨的「周邊」線條。 |
| SHAPETYPE | SHAPETYPE(geometry) | 稽核資料 範例:確定空間欄是否包含點、線或多邊形,以確保資料集在與其他資料聯結之前保持一致。 |
| SYMDIFFERENCE | SYMDIFFERENCE(spatial, spatial) | 變更偵測 範例:比較 2020 年和 2024 年的洪水區地圖,找到只在一年內發生洪水的區域,而不是同時找到兩者。 |
| 驗證 | VALIDATE(spatial geometry) | 資料清理 範例:檢查點、線串和多邊形(如郵遞區號、城市、州/省等)是否有效或損壞。使用此功能可篩選掉可能導致流程當機的損壞圖形。執行此計算可能需要一些時間。 |
| ![]() |
| 工具列選項 | 描述 |
|---|---|
![]() | 折疊流程巡覽器圖形。處於折疊狀態時,您只會看到百分比指示器。只要將滑鼠遊標停留在指示器上即可展開工具列,再按一下向上箭頭 就能再次展開圖示。 |
![]() | 展開流程巡覽器圖形。 |
![]() | 根據您的螢幕變更流程大小。 |
![]() | 放大及縮小您的流程。您可以按一下百分比指示器,將檢視畫面還原為 100%。 |
| 函數 | 描述 | 結果 |
|---|---|---|
| RANK () | 對每個列指派一個整數順序(從 1 開始),以遞增或遞減順序排列。如果列具有相同值,就會共用指派給該值第一個執行個體的順序。系統會在計算下一個列的順序時新增具有相同順序的列數,因此您可能不會取得連續的順序值。 範例計算: | ![]() |
| RANK_DENSE() | 對每個列指派一個整數順序(從 1 開始),以遞增或遞減順序排列。如果列具有相同值,就會共用指派給該值第一個執行個體的順序,但是不會略過任何順序值,因此您會看到連續的順序值。 範例計算: | ![]() |
| RANK_MODIFIED() | 對每個列指派一個整數順序(從 1 開始),以遞增或遞減順序排列。如果列具有相同值,就會共用指派給該值最後一個執行個體的順序。Rank_Modified 會計算為 範例計算: | ![]() |
| RANK_PERCENTILE() | 對每個列指派一個百分位順序(從 0 到 1),以遞增或遞減順序排列。RANK_PERCENTILE 會計算為 範例計算: 附註:若出現計算結果相等的情況,Tableau Prep 會將 Rank 向下四捨五入,類似於 SQL 中的 PERCENT_RANK()。 | ![]() |
| ROW_NUMBER() | 對每個唯一列指派一個循序列 ID。沒有略過任何列數字值。如果您有重複的列且使用此計算,則列的順序有所變更時,您的結果可能會隨著您每次執行流程而變更。 範例計算: | ![]() |
| 之前 | 之後 |
|---|---|
![]() | ![]() |
| 聯結類型 | 描述 |
|---|---|
左聯結 ![]() | 針對每一列,包含來自左側資料表的所有值,以及右側資料表的任何對應項目。當左側資料表中的值在右側資料表中沒有對應相符項時,您將在聯結結果中看到 null 值。 |
內聯接 ![]() | 針對每一列,包含同時在兩個資料表中有相符項目的值。 |
右聯結 ![]() | 針對每一列,包含來自右側資料表的所有值,以及左側資料表的任何對應項目。當右側資料表中的值在左側資料表中沒有對應相符項時,您將在聯結結果中看到 null 值。 |
僅左聯結 ![]() | 針對每一列,僅包含左側資料表中未與右側資料表的任何值相符的值。右側資料表中的欄位值在聯結結果中顯示為 null 值。 |
僅右聯結 ![]() | 針對每一列,僅包含右側資料表中未與左側資料表的任何值相符的值。左側資料表中的欄位值在聯結結果中顯示為 null 值。 |
非內部聯結 ![]() | 針對每一列,包含右側和左側資料表兩者不符的所有值。 |
完整聯結 ![]() | 針對每一列,包含兩個資料表中的所有值。當任一資料表中的值在另一個資料表中沒有相符項時,您將在聯結結果中看到 null 值。 |
| 選取欄位(Tableau Prep Builder 版本 2019.4.2 和更高版本以及 Web 版本) | 流程步驟功能表(所有版本) |
|---|---|
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
| 流程步驟功能表 | 畫布功能表 |
|---|---|
![]() |
|
| 伺服器連線 | 資料庫連線 | Rserver 或 Tableau Python 連線 |
|---|---|---|
連線區塊名稱:「tableauServerConnections」 在陣列中包含以下資料:
| 連線區塊名稱:「databaseConnections」 在陣列中包含以下資料:
| 僅當流程包含 R 或 TabPy 的指令碼步驟時,才包含此陣列。 連線區塊名稱:「延伸模組」 在陣列中包含以下資料:
|
| 輸入連線 | 輸出連線 | Rserver 或 Tableau Python 連線 |
|---|---|---|
|
| 僅當流程包含需要密碼的 R 或 TabPy 指令碼步驟時,才包括此陣列。
|
| 命令選項 | 描述 | 說明 |
|---|---|---|
-c , --connections <arg> | 認證檔案的連線路徑。 | 需要認證檔案所在的路徑。 |
-d, --debug | 調試流程程序。 | 包括此選項以檢視更多資訊,來幫助調試重新整理流程的問題。記錄檔存放位置:My Tableau Prep Builder Repository\Command Line Repository\Logs |
-dsv, --disableSslValidation | 停用 SSL 驗證 | 執行流程而不執行證書驗證。在 MacOS 上使用命令列執行流程時,會出現一個對話方塊,要求提供金輪鏈使用者和密碼。從 Tableau Prep Builder 2019.3.2 版開始,您可以輸入這個額外參數來停用此鑰匙圈對話方塊。例如,/Applications/Tableau\ Prep\ Builder\ [Tableau Prep Builder version].app/Contents/scripts/./tableau-prep-cli -dsv -c path/to/[your credential file name].json -t path/to/[your flow file name].tfl |
-h, --help | 檢視語法選項的說明。 | 此說明選項或語法錯誤顯示以下資訊: usage: tableau-prep-cli [-c <arg>] [-d] [-h] [-t <arg>] -c,--connections <arg> Path to a file with all connection information -d,--debug This option is for debugging -dsv,--disableSslValidation Disable SSL validation -h,--help Print usage message -inc,--incrementalRefresh Run incremental refresh for all outputs that are configured to support it -t,--tflFile <arg> The Tableau Prep Builder flow file |
-inc, --incrementalRefresh | 為設定為使用累加式重新整理的所有輸出執行累加式重新整理。 | 包括此選項,為設定為使用累加式重新整理的所有輸入執行累加式重新整理。累加式重新整理讓 Tableau Prep Builder 只能檢索和處理新列,而非流程中的所有列。 輸入步驟中的累加式重新整理配置設定可決定以累加方式執行哪些流程輸出。所有其他輸出則將使用完整的重新整理執行,系統將以訊息顯示重新整理方法的詳細資訊。 有關使用累加式重新整理執行流程的詳情,請參閱 使用累加式重新整理重新整理流程資料。 |
-t, --tflFile <arg> | .tfl 流程檔案 | 需要 .tfl 流程檔案所在的路徑。 |
-p, --parameters | 參數覆寫 .json 檔案 | 若要覆寫套用於流程的目前(預設)參數值,請包含此檔案。有關使用流程參數的詳細資訊,請參閱在流程中建立和使用參數。 |