表計算函數

本文介紹表計算函數及其在 Tableau 中的用法。它還示範如何使用計算編輯器建立表計算。

為何使用表計算函數

表計算函數允許您對表中的值執行計算。

例如,您可以計算某個年度和若干年度個別銷售額占總額的百分比。

Tableau 中可用的表計算函數

FIRST( )


返回從目前列到分區中第一列的列數。例如,以下的檢視顯示每季度銷售額。在 Date 分區中計算 FIRST() 時,第一列與第二列之間的偏移為 -1。

範例

目前列索引為 3 時,FIRST() = -2

INDEX( )


返回分區中目前列的索引,不包含與值有關的任何排序。第一個列索引從 1 開始。例如,下表顯示每季度銷售額。當在 Date 分區中計算 INDEX() 時,各列的索引分別為 1、2、3、4 等。

範例

對於分區中的第三列,INDEX() = 3

LAST( )


返回從目前列到分區中最後一列的列數。例如,下表顯示每季度銷售額。在 Date 分區中計算 LAST() 時,最後一列與第二列之間的偏移為 5。

範例

目前列索引為 3(共 7 列)時,LAST() = 4

LOOKUP(expression, [offset])


返回目標列(指定為與目前列的相對偏移)中運算式的值。使用 FIRST() + n 和 LAST() - n 作為相對於分區中第一列/最後一列的目標偏移量定義的一部分。如果省略了 offset,則可以在欄位功能表上設定要比較的列。如果無法確定目標列,則此函數返回 NULL。

以下的檢視顯示每季度銷售額。當在 Date 分區中計算 LOOKUP (SUM(Sales), 2) 時,每列都會顯示接下來 2 個季度的銷售額值。

範例

LOOKUP(SUM([Profit]), FIRST()+2) 計算分區第三列中的 SUM(Profit)。

MODEL_EXTENSION_BOOL(model_name、引數、運算式)


傳回由部署在 TabPy 外部服務上的命名模型計算的運算式的布林結果。

Model_name 是要使用的已部署分析模型的名稱。

每個參數都是一個字串,用於設定部署模型接受的輸入值,並由分析模型定義。

使用運算式定義從 Tableau 傳送到分析模型的值。請務必使用彙總函數(SUM、AVG 等)來彙總結果。

使用函數時,運算式的資料類型和順序必須與輸入參數的資料類型和順序相符。

範例

MODEL_EXTENSION_BOOL ("isProfitable","inputSales", "inputCosts", SUM([Sales]), SUM([Costs]))

MODEL_EXTENSION_INT(model_name、引數、運算式)


傳回由部署在 TabPy 外部服務上的命名模型計算的運算式的整數結果。

Model_name 是要使用的已部署分析模型的名稱。

每個參數都是一個字串,用於設定部署模型接受的輸入值,並由分析模型定義。

使用運算式定義從 Tableau 傳送到分析模型的值。請務必使用彙總函數(SUM、AVG 等)來彙總結果。

使用函數時,運算式的資料類型和順序必須與輸入參數的資料類型和順序相符。

範例

MODEL_EXTENSION_INT ("getPopulation", "inputCity", "inputState", MAX([City]), MAX ([State]))

MODEL_EXTENSION_REAL(model_name、引數、運算式)


傳回由部署在 TabPy 外部服務上的命名模型計算的運算式的實數結果。

Model_name 是要使用的已部署分析模型的名稱。

每個參數都是一個字串,用於設定部署模型接受的輸入值,並由分析模型定義。

使用運算式定義從 Tableau 傳送到分析模型的值。請務必使用彙總函數(SUM、AVG 等)來彙總結果。

使用函數時,運算式的資料類型和順序必須與輸入參數的資料類型和順序相符。

範例

MODEL_EXTENSION_REAL ("profitRatio", "inputSales", "inputCosts", SUM([Sales]), SUM([Costs]))

MODEL_EXTENSION_STRING(model_name、引數、運算式)


傳回由部署在 TabPy 外部服務上的命名模型計算的運算式的字串結果。

Model_name 是要使用的已部署分析模型的名稱。

每個參數都是一個字串,用於設定部署模型接受的輸入值,並由分析模型定義。

使用運算式定義從 Tableau 傳送到分析模型的值。請務必使用彙總函數(SUM、AVG 等)來彙總結果。

使用函數時,運算式的資料類型和順序必須與輸入參數的資料類型和順序相符。

範例

MODEL_EXTENSION_STR ("mostPopulatedCity", "inputCountry", "inputYear", MAX ([Country]), MAX([Year]))

MODEL_PERCENTILE(target_expression, predictor_expression(s))


傳回預期值的概率(介於 0 和 1 之間)小於或等於目標運算式和其他預測值定義的觀測標記。這是後驗預測分佈函數,也稱為累積分佈函數 (CDF)。

此函數是 MODEL_QUANTILE 的反函數。有關預測建模函數的資訊,請參閱預測建模函數在 Tableau 中的運作方式

範例

以下公式可傳回銷售額總合標記的分位數,並根據訂單數進行調整。

MODEL_PERCENTILE(SUM([Sales]), COUNT([Orders]))

MODEL_QUANTILE(quantile, target_expression, predictor_expression(s))


在指定的分位數傳回目標運算式和其他預測值定義的可能範圍內的目標數值。這是後驗預測分位數。

此函數是 MODEL_PERCENTILE 的反函數。有關預測建模函數的資訊,請參閱預測建模函數在 Tableau 中的運作方式

範例

以下公式可傳回預測銷售額總和的中位數 (0.5),並根據訂單數進行調整。

MODEL_QUANTILE(0.5, SUM([Sales]), COUNT([Orders]))

PREVIOUS_VALUE(expression)


返回此計算在上一列中的值。如果目前列是分區的第一列,則返回給定運算式。

範例

SUM([Profit]) * PREVIOUS_VALUE(1) 計算 SUM(Profit) 的執行產品。

RANK(expression, ['asc' | 'desc'])


返回分區中目前列的標準競爭排名。為相同的值指派相同的排名。使用可選的 'asc' | 'desc' 參數指定昇冪或降冪順序。預設為降冪。

利用此函數,將對值集 (6, 9, 9, 14) 進行排名 (4, 2, 2, 1)。

在排名函數中,會忽略 Null。它們不進行編號,且不計入百分位排名計算的總記錄數中。

有關不同排名選項的資訊,請參閱排名計算

範例

下圖顯示對一組值執行各種排名函數(RANK、RANK_DENSE、RANK_MODIFIED、RANK_PERCENTILE 和 RANK_UNIQUE)的效果。資料集包含 14 名學生(StudentA 到 StudentN)的相關資訊;「Age」欄顯示每個學生的目前年齡(所有學生都介於 17 歲和 20 歲之間)。其餘的欄會顯示每個排名函數對年齡值集的影響,並始終假定函數的預設順序(昇冪或降冪)。

RANK_DENSE(expression, ['asc' | 'desc'])


返回分區中目前列的密集排名。為相同的值指派相同的排名,但不會向數字序列中插入間距。使用可選的 'asc' | 'desc' 參數指定昇冪或降冪順序。預設為降冪。

利用此函數,將對值集 (6, 9, 9, 14) 進行排名 (3, 2, 3, 1)。

在排名函數中,會忽略 Null。它們不進行編號,且不計入百分位排名計算的總記錄數中。

有關不同排名選項的資訊,請參閱排名計算

RANK_MODIFIED(expression, ['asc' | 'desc'])


返回分區中目前列的調整後競爭排名。為相同的值指派相同的排名。使用可選的 'asc' | 'desc' 參數指定昇冪或降冪順序。預設為降冪。

利用此函數,將對值集 (6, 9, 9, 14) 進行排名 (4, 3, 3, 1)。

在排名函數中,會忽略 Null。它們不進行編號,且不計入百分位排名計算的總記錄數中。

有關不同排名選項的資訊,請參閱排名計算

RANK_PERCENTILE(expression, ['asc' | 'desc'])


返回分區中目前列的百分位排名。使用可選的 'asc' | 'desc' 參數指定昇冪或降冪順序。預設為昇冪。

利用此函數對對值集 (6, 9, 9, 14) 進行排名 (0.00, 0.67, 0.67, 1.00)。

在排名函數中,會忽略 Null。它們不進行編號,且不計入百分位排名計算的總記錄數中。

有關不同排名選項的資訊,請參閱排名計算

RANK_UNIQUE(expression, ['asc' | 'desc'])


返回分區中目前列的唯一排名。為相同的值指派相同的排名。使用可選的 'asc' | 'desc' 參數指定昇冪或降冪順序。預設為降冪。

利用此函數,將對值集 (6, 9, 9, 14) 進行排名 (4, 2, 3, 1)。

在排名函數中,會忽略 Null。它們不進行編號,且不計入百分位排名計算的總記錄數中。

有關不同排名選項的資訊,請參閱排名計算

RUNNING_AVG(expression)


返回給定運算式從分區中第一列到目前列的執列平均值。

以下的檢視顯示每季度銷售額。當在 Date 分區中計算 RUNNING_AVG(SUM([Sales]) 時,結果為每個季度的銷售額值的執行平均值。

範例

RUNNING_AVG(SUM([Profit])) 計算 SUM(Profit) 的執行平均值。

RUNNING_COUNT(expression)


返回給定運算式從分區中第一列到目前列的執行計數。

範例

RUNNING_COUNT(SUM([Profit])) 計算 SUM(Profit) 的執行計數。

RUNNING_MAX(expression)


返回給定運算式從分區中第一列到目前列的執行最大值。

範例

RUNNING_MAX(SUM([Profit])) 計算 SUM(Profit) 的執行最大值。

RUNNING_MIN(expression)


返回給定運算式從分區中第一列到目前列的執行最小值。

範例

RUNNING_MIN(SUM([Profit])) 計算 SUM(Profit) 的執行最小值。

RUNNING_SUM(expression)


返回給定運算式從分區中第一列到目前列的執行總計。

範例

RUNNING_SUM(SUM([Profit])) 計算 SUM(Profit) 的執行總計

SIZE()


返回分區中的列數。例如,以下的檢視顯示每季度銷售額。在 Date 分區中有七列,因此 Date 分區的 Size() 為 7。

範例

目前分區包含五列時 SIZE() = 5

SCRIPT_BOOL


返回指定運算式的布林結果。運算式直接傳遞給執行的 Analytics 擴充服務執行個體。

在 R 運算式中,使用 .argn(帶前導句點)參考參數(.arg1、.arg2 等)。

在 Python 運算式中,使用 _argn(帶前導底線)。

範例

在此 R 範例中,.arg1 等於 SUM( [Profit]):

SCRIPT_BOOL("is.finite(.arg1)", SUM([Profit]))

對於華盛頓州中的商店 ID,下一範例返回 True,否則返回 False。此範例可以是標題為 IsStoreInWA 的計算欄位的定義。

SCRIPT_BOOL('grepl(".*_WA", .arg1, perl=TRUE)',ATTR([Store ID]))

Python 的命令將採用以下形式:

SCRIPT_BOOL("return map(lambda x : x > 0, _arg1)", SUM([Profit]))

SCRIPT_INT


返回指定運算式的整數結果。運算式直接傳遞給執行的 Analytics 擴充服務執行個體。

在 R 運算式中,使用 .argn(帶前導句點)參考參數(.arg1、.arg2 等)

在 Python 運算式中,使用 _argn(帶前導底線)。

範例

在此 R 範例中,.arg1 等於 SUM( [Profit]):

SCRIPT_INT("is.finite(.arg1)", SUM([Profit]))

在下一範例中,使用 k-means clustering 建立三個叢集:

SCRIPT_INT('result <- kmeans(data.frame(.arg1,.arg2,.arg3,.arg4), 3);result$cluster;', SUM([Petal length]), SUM([Petal width]),SUM([Sepal length]),SUM([Sepal width]))

Python 的命令將採用以下形式:

SCRIPT_INT("return map(lambda x : int(x * 5), _arg1)", SUM([Profit]))

SCRIPT_REAL


返回指定運算式的實數結果。運算式直接傳遞給執行的 Analytics 擴充服務執行個體。在

R 運算式中,使用 .argn(帶前導句點)參考參數(.arg1、.arg2 等)

在 Python 運算式中,使用 _argn(帶前導底線)。

範例

在此 R 範例中,.arg1 等於 SUM( [Profit]):

SCRIPT_REAL("is.finite(.arg1)", SUM([Profit]))

下一範例將溫度值從攝氏值轉換為華氏值。

SCRIPT_REAL('library(udunits2);ud.convert(.arg1, "celsius", "degree_fahrenheit")',AVG([Temperature]))

Python 的命令將採用以下形式:

SCRIPT_REAL("return map(lambda x : x * 0.5, _arg1)", SUM([Profit]))

SCRIPT_STR


返回指定運算式的字串結果。運算式直接傳遞給執行的 Analytics 擴充服務執行個體。

在 R 運算式中,使用 .argn(帶前導句點)參考參數(.arg1、.arg2 等)

在 Python 運算式中,使用 _argn(帶前導底線)。

範例

在此 R 範例中,.arg1 等於 SUM( [Profit]):

SCRIPT_STR("is.finite(.arg1)", SUM([Profit]))

下一範例將從更複雜的字串(採用原始格式 13XSL_CA, A13_WA)中擷取省名縮寫:

SCRIPT_STR('gsub(".*_", "", .arg1)',ATTR([Store ID]))

Python 的命令將採用以下形式:

SCRIPT_STR("return map(lambda x : x[:2], _arg1)", ATTR([Region]))

TOTAL(expression)


返回表計算分區內運算式的總計。

範例

假定您從此檢視開始:

您可以開啟計算編輯器並建立名為「總額」的新欄位。

然後可以將「總額」拖到「文字」上以替換 SUM(Sales)。您的檢視會發生變更,使其總計值基於預設的「計算依據」值:

這會產生問題,預設的「計算依據」值是什麼?如果在「資料」窗格中以右鍵按一下(在 Mac 上按一下 Control )「總額」,並選取「編輯」,則會提供一點額外的資訊:

預設的「計算依據」值是「表(橫穿)」。結果是,「總額」會匯總每個表列的值。因此,您看到的每一列的值是表原始版本中值的總和。

原始表內 2011/Q1 列中的值為 $8601、$6579、$44262 和 $15006。在「總額」替換 SUM(Sales) 之後,表中的值都為 $74,448,這是四個原始值的總和。

請注意,將「總額」拖到「文字」上之後「總額」旁邊會出現小三角:

這表明該欄位正在使用表計算。您可以以右鍵按一下欄位並選取「編輯表計算」,以將您的函數重定向到不同的「計算依據」值。例如,可以將其設定為「表(向下)」。在此情況下,您的表將如下所示:

WINDOW_AVG(expression, [start, end])


返回視窗中運算式的平均值。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

例如,以下的檢視顯示每季度銷售額。Date 分區中的視窗平均值返回所有日期間的平均銷售額。

範例

WINDOW_AVG(SUM([Profit]), FIRST()+1, 0) 計算從第二列到目前列的 SUM(Profit) 平均值。

WINDOW_CORR(expression1, expression2, [start, end])


返回視窗內兩個運算式的皮爾森相關係數。視窗定義為與目前列的偏移。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了 start 和 end,則使用整個分區。

皮爾森相關係數衡量兩個變數之間的線性關係。結果範圍為 -1 至 +1(包括 -1 和 +1),其中 1 表示精確的正向線性關係,比如一個變數中的正向變更即表示另一個變數中對應量級的正向變更,0 表示變異數之間沒有線性關係,而 −1 表示精確的反向關係。

有一個等效的彙總函式:CORR。請參閱 Tableau 函數(按字母順序)(連結在新視窗開啟)

範例

以下公式返回 SUM(Profit)SUM(Sales) 從前五列到目前列的皮爾森相關係數。

WINDOW_CORR(SUM[Profit]), SUM([Sales]), -5, 0)

WINDOW_COUNT(expression, [start, end])


返回視窗中運算式的計數。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

範例

WINDOW_COUNT(SUM([Profit]), FIRST()+1, 0) 計算從第二列到目前列的 SUM(Profit) 計數

WINDOW_COVAR(expression1, expression2, [start, end])


返回視窗內兩個運算式的樣本共變數。視窗定義為與目前列的偏移。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了 start 和 end 參數,則視窗為整個分區。

樣本共變數使用非空資料點的數量 n - 1 來規範化共變數計算,而不是使用總體共變數(及 WINDOW_COVARP 函數)所使用的 n。當資料是用於估算較大總體的共變數的隨機樣本時,則樣本共變數是合適的選取。

有一個等效的彙總函式:COVAR。請參閱 Tableau 函數(按字母順序)(連結在新視窗開啟)

範例

以下公式返回 SUM(Profit)SUM(Sales) 從前兩列到目前列的樣本共變數。

WINDOW_COVAR(SUM([Profit]), SUM([Sales]), -2, 0)

WINDOW_COVARP(expression1, expression2, [start, end])


返回視窗內兩個運算式的總體共變數。視窗定義為與目前列的偏移。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了 start 和 end,則使用整個分區。

母體共變異數為樣本共變異數乘以 (n-1)/n,其中 n 是非 null 資料點的總數。如果存在可用於所有相關項的資料,則母體共變異數是合適的選取,與之相反,在只有隨機項子集的情況下,樣本共變異數(及 WINDOW_COVAR 函數)較為適合。

有一個等效的彙總函式:COVARP。Tableau 函數(按字母順序)(連結在新視窗開啟)

範例

以下公式返回 SUM(Profit)SUM(Sales) 從前兩列到目前列的總體共變數。

WINDOW_COVARP(SUM([Profit]), SUM([Sales]), -2, 0)

WINDOW_MEDIAN(expression, [start, end])


返回視窗中運算式的中值。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

例如,以下的檢視顯示每季度利潤。Date 分區中的視窗中值返回所有日期的中值利潤。

範例

WINDOW_MEDIAN(SUM([Profit]), FIRST()+1, 0) 計算從第二列到目前列的 SUM(Profit) 中值。

WINDOW_MAX(expression, [start, end])


返回視窗中運算式的最大值。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

例如,以下的檢視顯示每季度銷售額。Date 分區中的視窗最大值返回所有日期間的最大銷售額。

範例

WINDOW_MAX(SUM([Profit]), FIRST()+1, 0) 計算從第二列到目前列的 SUM(Profit) 最大值。

WINDOW_MIN(expression, [start, end])


返回視窗中運算式的最小值。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

例如,以下的檢視顯示每季度銷售額。Date 分區中的視窗最小值返回所有日期間的最小銷售額。

範例

WINDOW_MIN(SUM([Profit]), FIRST()+1, 0) 計算從第二列到目前列的 SUM(Profit) 最小值。

WINDOW_PERCENTILE(expression, number, [start, end])


返回與視窗中指定百分位元相對應的值。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

範例

WINDOW_PERCENTILE(SUM([Profit]), 0.75, -2, 0) 返回 SUM(Profit) 的前面兩列到目前列的第 75 個百分位。

WINDOW_STDEV(expression, [start, end])


返回視窗中運算式的樣本標準差。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

範例

WINDOW_STDEV(SUM([Profit]), FIRST()+1, 0) 計算從第二列到目前列的 SUM(Profit) 標準差。

WINDOW_STDEVP(expression, [start, end])


返回視窗中運算式的有偏差標準差。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

範例

WINDOW_STDEVP(SUM([Profit]), FIRST()+1, 0) 計算從第二列到目前列的 SUM(Profit) 標準差。

WINDOW_SUM(expression, [start, end])


返回視窗中運算式的總計。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

例如,以下的檢視顯示每季度銷售額。Date 分區中計算的視窗總計返回所有季度的銷售額總計。

範例

WINDOW_SUM(SUM([Profit]), FIRST()+1, 0) 計算從第二列到目前列的 SUM(Profit) 總和。

WINDOW_VAR(expression, [start, end])


返回視窗中運算式的樣本變異數。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

範例

WINDOW_VAR((SUM([Profit])), FIRST()+1, 0) 計算從第二列到目前列的 SUM(Profit) 變異數。

WINDOW_VARP(expression, [start, end])


返回視窗中運算式的有偏差變異數。視窗用與目前列的偏移定義。使用 FIRST()+n 和 LAST()-n 表示與分區中第一列或最後一列的偏移。如果省略了開頭和結尾,則使用整個分區。

範例

WINDOW_VARP(SUM([Profit]), FIRST()+1, 0) 計算從第二列到目前列的 SUM(Profit) 變異數。

使用計算編輯器建立表計算

請按照以下步驟學習如何使用計算編輯器建立表計算。

附註:可以透過多種方式在 Tableau 中建立表計算。此範例僅示範其中一種方式。有關詳情,請參閱使用表計算轉換值(連結在新視窗開啟)

步驟 1:建立視覺效果

  1. 在 Tableau Desktop 中,連線到 Tableau 附帶的 [Sample - Superstore] 已儲存資料來源。

  2. 巡覽到工作表。

  3. [資料] 窗格中的 [維度] 下,將 [訂單日期] 拖到 [欄] 架。

  4. 從 [資料] 窗格中的 [維度] 下,將 [Sub-Category] (子類)拖到 [列] 架。

  5. 從 [資料] 窗格中的 [度量] 下,將 [Sales] (銷售額)拖到 [標記] 卡上的 [文字]

    您的視覺效果將更新為文字表。

步驟 2:建立表計算

  1. 選取 [分析] > [建立計算欄位]

  2. 在開啟的計算編輯器中,執行以下操作:

    • 將計算欄位命名為 [Running Sum of Profit] (利潤執行總和)。
    • 輸入以下公式:

      RUNNING_SUM(SUM([Profit]))

      此公式計算利潤銷售額的執行總和。它跨整個表進行計算。

    • 完成後,按一下 [確定]

      新的表計算欄位將出現在 [資料] 窗格中的 [度量] 下。就像其他欄位一樣,您可以在一個或多個視覺效果中使用該欄位。

步驟 3:在視覺效果中使用表計算

  1. 從 [資料] 窗格中的 [度量] 下,將 [Running Sum of Profit] (利潤執行總和)拖到 [標記] 卡上的 [色彩]

  2. 在 [標記] 卡上,按一下 [標記類型] 下拉清單,並選取 [方塊]

    視覺效果將更新為反白顯示表:

步驟 4:編輯表計算

  1. 在 [標記] 卡上,以右鍵按一下 [Running Sum of Profit] (利潤執行總和),並選取 [編輯表計算]
  2. 在開啟的 [表計算] 對話方塊中的 [計算依據] 下,選取 [表(向下)]

    視覺效果將更新為如下:

另請參閱

建立表計算(連結在新視窗開啟)

表計算類型

自訂表計算(連結在新視窗開啟)

快速表計算

Tableau 中的函數

Tableau 函數(按類別)

Tableau 函數(按字母順序)

感謝您的意見反應!已成功提交您的意見回饋。謝謝!