本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
新增計算欄位
透過使用以下一項或多項建立計算欄位以轉換資料:
您可以在資料準備期間或從分析頁面,將計算欄位新增至資料集。當您在資料準備期間將計算欄位新增至資料集時,所有使用該資料集的分析都可以使用此計算欄位。當您將計算欄位新增至分析中的資料集時,只有在該分析中才可使用此計算欄位。
分析同時支援單一資料列操作和彙總操作。單一資料列操作是對於每個資料列提供 (可能) 不同結果的操作。彙總操作為整個資料列集提供一律相同的結果。例如,如果您使用無任何條件的簡單字串函數,這會變更每個資料列。如果您使用彙總函數,這會套用到群組中的所有資料列。如果您要求美國的總銷售額,相同的字數會套用到整個集。如果您要求特定狀態的資料,總銷售金額會變更,以反映新的分組。這仍然會對於整個集提供一個結果。
透過在分析中建立彙總計算欄位,即可深入檢視資料。系統會適當地針對每個層集重新計算該彙總欄位的值。這類彙總無法在資料集準備期間進行。
例如,假設您想要找出每個國家、區域和州的營利百分比。您可以將計算欄位新增到分析 (sum(salesAmount - cost)) / sum(salesAmount)
。您的分析深入探索地理位置時,系統會對於每個國家、區域和州計算此欄位。
新增計算欄位至分析
當您新增資料集至分析時,資料集中的每個計算欄位都會新增至分析。您可以在分析層級新增其他計算欄位,以建立僅在該分析中可用的計算欄位。
若要新增計算欄位至分析
-
開啟 QuickSight 主控台
。 -
開啟您要變更的分析。
-
在 [資料] 窗格中,選擇左上角的 [新增],然後選擇 [+ 計算欄位]。
-
在開啟的計算編輯器中,執行下列動作:
-
輸入計算欄位的名稱。
-
使用資料集、函數和運算子中的欄位輸入公式。
-
-
完成時,選擇儲存。
若要取得有關如何使用中的可用函數建立公式的更多資訊 QuickSight,請參閱Amazon 的計算欄位函數和運算子參考 QuickSight 。
新增計算欄位至資料集
Amazon QuickSight 作者可以在資料集建立的資料準備階段對計算欄位進行產生類別化。當您為資料集建立計算欄位時,該等欄位會變成資料集中的新資料欄。使用資料集的所有分析,都會繼承資料集的計算欄位。
如果計算欄位在資料列層級運作,且資料集儲存在中SPICE,則會在中計 QuickSight 算並實現結果。SPICE如果計算欄位依賴於彙總函數,則會在產生分析時 QuickSight 保留公式並執行計算。這類計算欄位稱為未具體化的計算欄位。
若要新增或編輯資料集的計算欄位
-
開啟您要使用的資料集。如需詳細資訊,請參閱 編輯資料集。
-
在資料準備頁面上,執行下列動作之一:
-
若要建立新欄位,選擇左側的新增計算欄位。
-
若要編輯現有計算欄位,從左側的計算欄位中選擇對應欄位,然後從上下文 (按一下滑鼠右鍵) 選單中選擇編輯。
-
-
在計算編輯器的新增標題中輸入一個描述性的名稱,為新計算欄位命名。此名稱出現在資料集的欄位清單中,因此看起來應該與其他欄位類似。在此範例中,我們將欄位命名為
Total Sales This Year
。 -
(選用) 新增註解,例如將文字括在斜杠和星號中來說明運算式的作用。
/* Calculates sales per year for this year*/
-
確定要使用的指標、函數和其他項目。在此範例中,我們需要確定以下內容:
-
要使用的指標
-
函數:
ifelse
和datediff
我們想要建置一個陳述式,例如「如果銷售發生在今年,則顯示總銷售額,否則顯示 0。」
若要新增
ifelse
函數,開啟函數清單。選擇全部以關閉所有函數的清單。現在您應該會看到函數群組:彙總、有條件、日期等。選擇有條件,然後按兩下
ifelse
將其新增至工作區。ifelse()
-
-
將游標放置於工作區中的括弧內,然後新增三個空白行。
ifelse( )
-
將游標置於第一個空白行,找到
dateDiff
函數。它列在日期下的函數中。您也可以透過在搜尋函數中輸入date
來尋找它。dateDiff
函數會返回名稱中包含
的所有函數。它不會傳回日期下列出的所有函數;例如,搜尋結果中缺少date
now
函數。連按兩下
dateDiff
以將其新增至ifelse
陳述式的第一個空白行。ifelse( dateDiff() )
新增
dateDiff
使用的參數。將游標放置於dateDiff
括弧內以開始新增date1
、date2
和period
:-
對於
date1
:第一個參數是內含日期的欄位。在欄位下找到它,然後按兩下或輸入其名稱以將其新增至工作區。 -
對於
date2
,新增逗號,然後為函數選擇truncDate()
。在其括弧內新增句點和日期,如下所示:truncDate( "YYYY", now() )
-
對於
period
:在date2
後新增逗號並輸入YYYY
。這是一年的期間。若要查看所有支援期間的清單,請在函數清單中尋找dateDiff
,然後選擇進一步了解開啟文件。如果您正在檢視文件,就像現在一樣,請參閱 dateDiff。
如果您願意,可以新增一些空格以提高可讀性。運算式應如下所示。
ifelse( dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" ) )
-
-
指定傳回值。在我們的範例中,
ifelse
中的第一個參數需要傳回TRUE
或FALSE
的值。因為我們想要目前的年份,並且正在將其與今年進行比較,所以指定dateDiff
陳述式應傳回0
。對於銷售年份與目前年份之間沒有差異的資料列,ifelse
的if
部分評估為 true。dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" ) =
0
若要建立去年
TotalSales
的欄位,可以將0
變更為1
。實現這個目標的另外一種做法是使用
addDateTime
而不是truncDate
。然後,對於每個前一年,您可以變更addDateTime
的第一個參數來表示每個年份。為此,您為去年使用-1
,為前年使用-2
,依此類推。如果使用addDateTime
,則每年的dateDiff
函數都保留為= 0
。dateDiff( {Discharge Date},
addDateTime(-1, "YYYY", now() )
,"YYYY" ) = 0 /* Last year */ -
將游標移至第一個空白行
dateDiff
的正下方。新增逗號。對於
ifelse
陳述式的then
部分,我們需要選擇包含銷售金額的量值 (指標)TotalSales
。若要選擇欄位,請開啟欄位清單,然後按兩下某個欄位以將其新增至螢幕。也可以輸入名稱。在包含空格的名稱周圍新增大括弧
{ }
。您的指標可能有不同的名稱。您可以透過欄位前面的數字符號 (#) 知道哪個欄位是指標。陳述式應如下所示。
ifelse( dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" ) = 0 ,{TotalSales} )
-
新增
else
子句。子句對於ifelse
函數而言並非必需,但我們想要新增。出於報告目的,您通常不希望有任何 Null 值,因為有時包含 null 值的資料列會被略過。我們將 ifelse 的其他部分設定為
0
。結果是對於包含前幾年之銷售額的資料列,此欄位為0
。為此,在空白行依序新增一個逗號和
0
。如已在開頭新增註解,則完成的ifelse
運算式應如下所示。/* Calculates sales per year for this year*/ ifelse( dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" ) = 0 ,{TotalSales} ,0 )
-
選擇右上角的儲存以儲存您的工作。
如果運算式中有錯誤,編輯器底部會顯示錯誤訊息。檢查您的運算式是否有紅色波浪線,然後將游標懸停在該行上方以查看錯誤訊息為何。常見錯誤包括缺少標點符號、缺少參數、拼字錯誤和資料類型無效。
若要避免進行任何變更,請選擇取消。
若要新增參數值至計算欄位
-
您可以引用計算欄位中的參數。透過新增參數加入至運算式,您可以新增該參數的目前值。
-
若要新增參數,請開啟參數清單,然後選取您想要納入其值的參數。
-
(選用) 若要手動新增參數至運算式,請鍵入參數名稱。然後用大括弧
{}
括住它,並新增前綴$
,例如${parameterName}
。
您可以變更資料集中任何欄位的資料類型,包括計算欄位的類型。您只能選擇與欄位中的資料相符的資料類型。
若要變更計算欄位的資料類型
-
對於計算欄位 (左側),選擇要變更的欄位,然後從上下文 (按一下滑鼠右鍵) 選單中選擇變更資料類型。
與資料集中的其他欄位不同,計算欄位無法停用。可以刪除它們。
若要刪除計算欄位
-
對於計算欄位 (左側),選擇要變更的欄位,然後從上下文 (按一下滑鼠右鍵) 選單中選擇刪除。
處理計算欄位中的小數值
當您的資料集使用「直接查詢」模式時,小數資料類型的計算由來源引擎 (資料集的來源) 的行為決定。在某些特定情況下,會 QuickSight 套用特殊處理來決定輸出計算的資料類型。
當您的資料集使用 SPICE 查詢模式且計算欄位被具體化時,結果的資料類型取決於特定函數運算子和輸入的資料類型。下表顯示某些數值計算欄位的預期行為。
一元運算子
下表顯示根據您使用的運算子以及所輸入值的資料類型輸出的資料類型。例如,如果您在 abs
計算中輸入整數,則輸出值的資料類型為整數。
運算子 | 輸入類型 | 輸出類型 |
---|---|---|
abs |
小數-定點 | 小數-定點 |
Int | Int | |
小數-浮點 | 小數-浮點 | |
ceil |
小數-定點 | Int |
Int | Int | |
小數-浮點 | Int | |
exp |
小數-定點 | 小數-浮點 |
Int | 小數-浮點 | |
小數-浮點 | 小數-浮點 | |
floor |
小數-定點 | Int |
Int | Int | |
小數-浮點 | Int | |
ln |
小數-定點 | 小數-浮點 |
Int | 小數-浮點 | |
小數-浮點 | 小數-浮點 | |
log |
小數-定點 | 小數-浮點 |
Int | 小數-浮點 | |
小數-浮點 | 小數-浮點 | |
round |
小數-定點 | 小數-定點 |
Int | 小數-定點 | |
小數-浮點 | 小數-定點 | |
sqrt |
小數-定點 | 小數-浮點 |
Int | 小數-浮點 | |
小數-浮點 | 小數-浮點 |
二元運算子
下表顯示根據您輸入的兩個值的資料類型輸出的資料類型。例如,對於算術運算子,如果您提供兩種整數資料類型,則計算輸出的結果為整數。
對於基本運算子 (+、-、*):
整數 | 小數-定點 | 小數-浮點 | |
---|---|---|---|
整數 |
Integer |
小數-定點 |
小數-浮點 |
小數-定點 |
小數-定點 |
小數-定點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
對於除法運算子 (/):
整數 | 小數-定點 | 小數-浮點 | |
---|---|---|---|
整數 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
小數-定點 |
小數-浮點 |
小數-定點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
對於指數運算子和模數運算子 (^、%):
整數 | 小數-定點 | 小數-浮點 | |
---|---|---|---|
整數 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
小數-定點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |
小數-浮點 |