make-series 運算子
沿著指定的軸建立一系列指定的彙總值。
語法
T| make-series
[MakeSeriesParameters] [Column=
] Aggregation [default
=
DefaultValue] [,
...] on
AxisColumn [from
start] [to
end] step
step [by
[Column=
] GroupExpression [,
...]]
深入瞭解 語法慣例。
參數
名稱 | 類型 | 必要 | Description |
---|---|---|---|
資料行 | string |
結果數據行的名稱。 預設值為衍生自運算式的名稱。 | |
DefaultValue | 純量 (scalar) | 要使用的預設值,而不是不存在的值。 如果沒有 具有 AxisColumn 和 GroupExpression 特定值的數據列,則會指派陣列的對應元素 DefaultValue。 預設值為 0。 | |
彙總 | string |
✔️ | 呼叫 聚合函數,例如 count() 或 avg() ,且數據行名稱為自變數。 請參閱彙總函式清單。 只有傳回數值結果的彙總函式可以搭配 make-series 運算子使用。 |
AxisColumn | string |
✔️ | 將排序數列的數據行。 通常數據行值的類型為 datetime 或 , timespan 但會接受所有數值類型。 |
開始 | 純量 (scalar) | ✔️ | 要建置之每個數列 的 AxisColumn 低界限值。 如果未指定 start ,它會是每個數列中具有數據的第一個量化或步驟。 |
end | 純量 (scalar) | ✔️ | AxisColumn 的高界限非內含值。 時間序列的最後一個索引小於此值,而且會開始加上小於結尾之步驟的整數倍數。 如果未指定 end ,則會是最後一個量化或步驟的上限,且每個數列都有數據。 |
步 | 純量 (scalar) | ✔️ | AxisColumn 陣列的兩個連續元素之間的差異或 bin 大小。 如需可能的時間間隔清單,請參閱時間範圍。 |
GroupExpression | 提供一組相異值之數據行的表達式。 通常是已提供有限的一組值的資料行名稱。 | ||
MakeSeriesParameters | 以名稱= 值的形式分隔零個或多個空格分隔參數,可控制行為。 請參閱 支援的make series 參數。 |
注意
開始、結束和步驟參數是用來建置 AxisColumn 值的陣列。 陣列是由 開始 和 結束之間的值所組成,而 步驟 值代表一個陣列元素與下一個陣列元素之間的差異。 所有 Aggregation 值都會分別針對此陣列進行排序。
支援的Make系列參數
名稱 | 描述 |
---|---|
kind |
當 make-series 運算子的輸入空白時,就會產生預設結果。 值:nonempty |
hint.shufflekey=<key> |
此 shufflekey 查詢會使用索引鍵來分割資料,以共用叢集節點上的查詢負載。 請參閱隨機查詢 |
注意
由 make-series 產生的陣列限制為 1048576 個值 (2^20)。 嘗試使用 make-series 產生更大的陣列會導致錯誤或截斷的陣列。
替代語法
T| make-series
[Column=
] Aggregation [default
=
DefaultValue] [,
...] on
AxisColumnin
range(
start,
stop,
step)
[by
[Column=
] GroupExpression [,
...]]
從替代語法產生的數列與主要語法有兩個不同之處:
- stop 值包含在內。
- 索引軸分箱是以 bin() (而不是 bin_at()) 產生,這表示 start 可能不會包含在所產生的數列中。
建議使用make-series的主要語法,而不是替代語法。
傳回
輸入資料列會各自分組到具有相同 by
運算式和 bin_at(
AxisColumn,
step,
start)
運算式值的群組。 然後指定的彙總函式會針對每個群組進行計算,以便為每個群組產生資料列。 結果會包含 by
資料行、AxisColumn 資料行,而且每個經過計算的彙總至少會有一個資料行。 不支援對多個數據行或非數值結果進行匯總 (。)
此中繼結果具有的資料列數與相異的 by
和 bin_at(
AxisColumn,
step,
start)
值組合一樣多。
最後,中繼結果中的資料列會各自分組到具有相同 by
運算式值的群組,而且所有彙總值都會排列成陣列(dynamic
類型的值)。 針對每個匯總,有一個數據行包含具有相同名稱的陣列。 最後一個資料行是一個陣列,其中包含根據指定步驟分類的 AxisColumn。
注意
雖然您可以為彙總與群組運算式提供任意運算式,但更有效率的方法是使用簡單的資料行名稱。
彙總函式清單
函式 | 描述 |
---|---|
avg() | 傳回整個群組的平均值 |
avgif() | 使用群組的述詞傳回平均值 |
count() | 傳回群組的計數 |
countif() | 傳回包含群組述詞的計數 |
dcount() | 傳回群組元素的近似相異計數 |
dcountif() | 使用群組的述詞傳回近似相異計數 |
max() | 傳回整個群組的最大值 |
maxif() | 使用群組的述詞傳回最大值 |
min() | 傳回整個群組的最小值 |
minif() | 使用群組的述詞傳回最小值 |
percentile() | 傳回整個群組的百分位數值 |
take_any() | 傳回群組的隨機非空白值 |
stdev() | 傳回整個群組的標準差 |
sum() | 傳回群組內元素的總和 |
sumif() | 使用群組的述詞傳回元素的總和 |
variance() | 傳回整個群組的變異數 |
數列分析函式清單
函式 | 描述 |
---|---|
series_fir() | 套用有限脈衝響應濾波器 |
series_iir() | 套用無限脈衝響應濾波器 |
series_fit_line() | 尋找是輸入最佳近似的一條直線 |
series_fit_line_dynamic() | 尋找是輸入最佳近似的一條線,並傳回動態物件 |
series_fit_2lines() | 尋找是輸入最佳近似的兩條線 |
series_fit_2lines_dynamic() | 尋找是輸入最佳近似的兩條線,並傳回動態物件 |
series_outliers() | 將數列中的異常點評分 |
series_periods_detect() | 尋找存在於時間序列中的最重要週期 |
series_periods_validate() | 檢查時間序列是否包含指定長度的定期模式 |
series_stats_dynamic() | 傳回具有一般統計資料 (最小值/最大值/變異數/標準差/平均值) 的多個資料行 |
series_stats() | 產生具有一般統計資料 (最小值/最大值/變異數/標準差/平均值) 的動態值 |
如需數列分析函式的完整清單,請參閱: 數列處理函式
數列插補函式清單
函式 | 描述 |
---|---|
series_fill_backward() | 對數列中的遺漏值執行向後填滿插補 |
series_fill_const() | 以指定的常數值取代數列中的遺漏值 |
series_fill_forward() | 對數列中的遺漏值執行向前填滿插補 |
series_fill_linear() | 對數列中的遺漏值執行線性插補 |
- 注意:插補函式預設會將
null
假定為遺漏值。 因此,如果您想要使用數列的插補函式,請在make-series
中指定default=
double(null
)。
範例
有一個資料表,其中顯示每個供應商每種水果的數量和平均價格陣列 (依指定範圍內的時間戳記排序)。 對於水果與供應商的每種相異組合,輸出中都會有一個資料列。 輸出資料行會顯示水果、供應商,以及計數、平均和整個時間軸 (從 2016-01-01 到 2016-01-10) 的陣列。 所有陣列都會依各自的時間戳記排序,而所有空白處都會填入預設值 (在此範例中為 0)。 其他所有輸入資料行則會遭到忽略。
T | make-series PriceAvg=avg(Price) default=0
on Purchase from datetime(2016-09-10) to datetime(2016-09-13) step 1d by Supplier, Fruit
let data=datatable(timestamp:datetime, metric: real)
[
datetime(2016-12-31T06:00), 50,
datetime(2017-01-01), 4,
datetime(2017-01-02), 3,
datetime(2017-01-03), 4,
datetime(2017-01-03T03:00), 6,
datetime(2017-01-05), 8,
datetime(2017-01-05T13:40), 13,
datetime(2017-01-06), 4,
datetime(2017-01-07), 3,
datetime(2017-01-08), 8,
datetime(2017-01-08T21:00), 8,
datetime(2017-01-09), 2,
datetime(2017-01-09T12:00), 11,
datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| make-series avg(metric) on timestamp from stime to etime step interval
avg_metric | timestamp |
---|---|
[ 4.0, 3.0, 5.0, 0.0, 10.5, 4.0, 3.0, 8.0, 6.5 ] | [ "2017-01-01T00:00:00.0000000Z", "2017-01-02T00:00:00.0000000Z", "2017-01-03T00:00:00.0000000Z", "2017-01-04T00:00:00.0000000Z", "2017-01-05T00:00:00.0000000Z", "2017-01-06T00:00:00.0000000Z", "2017-01-07T00:00:00.0000000Z", "2017-01-08T00:00:00.0000000Z", "2017-01-09T00:00:00.0000000Z" ] |
當 的輸入 make-series
是空的時,的預設行為 make-series
會產生空的結果。
let data=datatable(timestamp:datetime, metric: real)
[
datetime(2016-12-31T06:00), 50,
datetime(2017-01-01), 4,
datetime(2017-01-02), 3,
datetime(2017-01-03), 4,
datetime(2017-01-03T03:00), 6,
datetime(2017-01-05), 8,
datetime(2017-01-05T13:40), 13,
datetime(2017-01-06), 4,
datetime(2017-01-07), 3,
datetime(2017-01-08), 8,
datetime(2017-01-08T21:00), 8,
datetime(2017-01-09), 2,
datetime(2017-01-09T12:00), 11,
datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| take 0
| make-series avg(metric) default=1.0 on timestamp from stime to etime step interval
| count
輸出
計數 |
---|
0 |
在 make-series
中使用 kind=nonempty
將會產生預設值的非空白結果:
let data=datatable(timestamp:datetime, metric: real)
[
datetime(2016-12-31T06:00), 50,
datetime(2017-01-01), 4,
datetime(2017-01-02), 3,
datetime(2017-01-03), 4,
datetime(2017-01-03T03:00), 6,
datetime(2017-01-05), 8,
datetime(2017-01-05T13:40), 13,
datetime(2017-01-06), 4,
datetime(2017-01-07), 3,
datetime(2017-01-08), 8,
datetime(2017-01-08T21:00), 8,
datetime(2017-01-09), 2,
datetime(2017-01-09T12:00), 11,
datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| take 0
| make-series kind=nonempty avg(metric) default=1.0 on timestamp from stime to etime step interval
輸出
avg_metric | timestamp |
---|---|
[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ] |
[ "2017-01-01T00:00:00.0000000Z", "2017-01-02T00:00:00.0000000Z", "2017-01-03T00:00:00.0000000Z", "2017-01-04T00:00:00.0000000Z", "2017-01-05T00:00:00.0000000Z", "2017-01-06T00:00:00.0000000Z", "2017-01-07T00:00:00.0000000Z", "2017-01-08T00:00:00.0000000Z", "2017-01-09T00:00:00.0000000Z" ] |
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應