沿著指定的座標軸建立一系列指定的匯總值。
語法
T| make-series
[MakeSeriesParameters] [數據行=
] 匯總 [ default
=
DefaultValue] [,
...] on
AxisColumn [ startfrom
] step [to
...]]
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
資料行 | string |
結果數據行的名稱。 預設為衍生自表達式的名稱。 | |
DefaultValue | 純量 | 要使用的預設值,而不是不存在的值。 如果沒有 具有 AxisColumn 和 GroupExpression 特定值的數據列,則會將數位的對應專案指派為 DefaultValue。 預設值為 0。 | |
彙總 | string |
✔️ | 使用資料列名稱做為自變數的 聚合函數呼叫,例如 count() 或 avg() 。
請參閱聚合函數清單。 只有傳回數值結果的 make-series 聚合函數可以搭配 運算符使用。 |
AxisColumn | string |
✔️ | 排序數列的數據行。 數據行值通常屬於 類型 datetime , timespan 但接受所有數值類型。 |
開始 | 純量 | ✔️ | 要建置之每個數列的 AxisColumn 低限值。 如果未指定 start ,則它是每個數列中具有數據的第一個量化或步驟。 |
結束 | 純量 | ✔️ | AxisColumn 的高系結非內含值。 時間序列的最後一個索引小於這個值,而且是 start 加上小於 end 之步驟的整數倍數。 如果未指定 end ,則會是上一個量化或步驟的上限,每個數列都有數據。 |
步 | 純量 | ✔️ | AxisColumn 陣列的兩個連續元素之間的差異或間隔大小。 如需可能的時間間隔清單,請參閱 時間範圍。 |
GroupExpression | 提供一組相異值之數據行的表達式。 一般而言,它是已經提供一組限制值的數據行名稱。 | ||
MakeSeriesParameters | 以名稱控制行為之零個或多個空格分隔參數。 請參閱 支援的make series 參數。 |
注意
、 與參數可用來建置 start
值的陣列。end
step
陣列是由和start
之間的end
值所組成,其step
值代表一個陣列元素到下一個陣列元素之間的差異。 所有 匯總 值都會分別排序為此陣列。
支援的數列參數
姓名 | 描述 |
---|---|
kind |
當make-series運算子的輸入是空的時,會產生默認結果。 值:nonempty |
hint.shufflekey=<key> |
查詢 shufflekey 會使用索引鍵來分割數據,在叢集節點上共用查詢負載。 請參閱 隨機查詢 |
注意
make-series 所產生的陣列限製為1,048,576個值(2^20)。 嘗試產生具有make-series的較大陣列會導致錯誤或截斷的陣列。
替代語法
T| make-series
[ ] =
[ ] [default
...] =
,
on
in
range(
[ [,
] [,
...]]
從替代語法產生的數列,在兩個方面與主要語法不同:
- 停止值是內含的。
- 量化索引軸是以 bin() 產生,而不是bin_at(),這表示 開始 可能不會包含在產生的數列中。
我們建議您使用make-series的主要語法,而不是替代語法。
傳回
輸入數據列會排列成具有相同表達式值和by
bin_at(
步驟,
開始,
表達式的群組。)
然後會針對每個群組計算指定的聚合函數,為每個群組產生一個數據列。 結果包含數據 by
行、 AxisColumn 資料 行,以及每個計算匯總至少一個數據行。 (不支援對多個數據行或非數值結果的匯總。
這個中繼結果具有與 AxisColumnby
的數據列數目。
最後,中繼結果中的數據列會排列成具有相同表達式值的 by
群組,而所有匯總值都會排列成陣列(類型的值 dynamic
)。 針對每個匯總,有一個數據行包含具有相同名稱的陣列。 最後一個數據行是陣列,其中包含根據指定步驟量化的AxisColumn值。
注意
雖然您可以同時為匯總和群組表達式提供任意表達式,但使用簡單數據行名稱會更有效率。
聚合函數清單
函式 | 描述 |
---|---|
avg() | 傳回整個群組的平均值 |
avgif() | 傳回具有群組述詞的平均值 |
count() | 傳回群組的計數 |
countif() | 傳回具有群組述詞的計數 |
共變數() | 傳回兩個隨機變數的範例共變數 |
covarianceif() | 傳回兩個具有述詞之隨機變數的範例共變數 |
共變數() | 傳回兩個隨機變數的母體共變數母體 |
covariancepif() | 傳回具有述詞之兩個隨機變數的母體共變數母體 |
dcount() | 傳回群組元素的近似相異計數 |
dcountif() | 傳回具有群組述詞的近似相異計數 |
max() | 傳回整個群組的最大值 |
maxif() | 傳回具有群組述詞的最大值 |
min() | 傳回整個群組的最小值 |
minif() | 傳回具有群組述詞的最小值 |
percentile() | 傳回整個群組的百分位數值 |
take_any() | 傳回群組的隨機非空白值 |
stdev() | 傳回整個群組的標準差 |
sum() | 傳回群組內元素的總和 |
sumif() | 傳回具有群組述詞的專案總和 |
變異數() | 傳回整個群組的樣本變異數 |
varianceif() | 傳回具有述詞之群組的樣本變異數 |
變異數() | 傳回整個群組的母體變異數 |
variancepif() | 傳回具有述詞之群組的母體變異數 |
數列分析函式清單
函式 | 描述 |
---|---|
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() | 傳回具有一般統計數據的多個數據行(min/max/variance/stdev/average) |
series_stats() | 產生具有一般統計數據的動態值(min/max/variance/stdev/average) |
如需數列分析函式的完整清單,請參閱: 數列處理函式
數列插補函數清單
函式 | 描述 |
---|---|
series_fill_backward() | 在數列中執行遺漏值的回溯填入 |
series_fill_const() | 以指定的常數值取代數列中的遺漏值 |
series_fill_forward() | 執行數列中遺漏值的正向填滿插補點 |
series_fill_linear() | 執行數列中遺漏值的線性插補 |
- 注意:插補函式預設會假設
null
為遺漏值。 因此,如果您想要針對數列使用插補函數,請在 中default=
指定null
(make-series
)。
範例
數據表,顯示每個供應商依指定範圍的時間戳排序之每個水果的數位和平均價格陣列。 每個不同水果和供應商組合的輸出中有一個數據列。 輸出數據行會顯示水果、供貨商和陣列:count、average 和整個時間軸(從 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 | 時間戳 |
---|---|
[ 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 |
在 中使用 kind=nonempty
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 kind=nonempty avg(metric) default=1.0 on timestamp from stime to etime step interval
輸出
avg_metric | 時間戳 |
---|---|
[ 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” ] |
使用 make-series
和 mv-expand
來填滿遺漏記錄的值:
let startDate = datetime(2025-01-06);
let endDate = datetime(2025-02-09);
let data = datatable(Time: datetime, Value: int, other:int)
[
datetime(2025-01-07), 10, 11,
datetime(2025-01-16), 20, 21,
datetime(2025-02-01), 30, 5
];
data
| make-series Value=sum(Value), other=-1 default=-2 on Time from startDate to endDate step 7d
| mv-expand Value, Time, other
| extend Time=todatetime(Time), Value=toint(Value), other=toint(other)
| project-reorder Time, Value, other
輸出
時間 | 價值觀 | 其他 |
---|---|---|
2025-01-06T00:00:00Z | 10 | -1 |
2025-01-13T00:00:00Z | 20 | -1 |
2025-01-20T00:00:00Z | 0 | -2 |
2025-01-27T00:00:00Z | 30 | -1 |
2025-02-03T00:00:00Z | 0 | -2 |