Docs Menu
Docs Home
/
Atlas Charts
/ /

집계 파이프라인 지원

이 페이지의 내용

  • 예시
  • 인코딩
  • 쿼리 추가
  • 계산된 필드 추가
  • 필터 추가하기

차트 를 렌더링하는 데 필요한 데이터를 가져오기 위해 Charts 는 MongoDB 집계 파이프라인을 만들고 MongoDB database 서버 에서 파이프라인 을 실행합니다. 파이프라인 은 여러 단계로 구성되며, 각 단계는 차트 작성자가 지정한 다양한 설정을 기반으로 생성됩니다.

이 문서 에서는 다양한 차트 빌더 설정을 사용하여 집계 파이프라인을 구성하는 방법을 설명합니다. 오른쪽 상단에 있는 차트 빌더의 줄임표 드롭다운에서 View Aggregation Pipeline 옵션을 선택하여 차트 를 만드는 데 사용된 파이프라인 을 볼 수 있습니다.

Atlas Charts 는 다음 세그먼트로 구성된 파이프라인 을 순서대로 구성합니다.

  1. Atlas Charts 뷰

  2. 임베딩 차트의 사전 필터

  3. 대시보드 필터

  4. 차트 쿼리

  5. 조회 필드

  6. 계산된 필드

  7. 삽입된 필터를 포함한 임베딩 필터

  8. 차트 필터

  9. 인코딩된 필드

  10. 정렬

  11. 최대 문서 한도

참고

차트 를 만들 때 이전 차트 세그먼트의 전부는 아니지만 일부를 구성할 수 있습니다. Charts 는 집계 파이프라인 을 생성할 때 지정되지 않은 세그먼트를 건너뜁니다.

다음 차트는 한 사무용품 회사의 총 판매 금액을 구매 방법별로 분류한 것입니다. 데이터 collection의 각 문서는 단일 판매를 나타냅니다.

이 차트를 예로 사용하여 위의 각 설정에 대한 사양이 Atlas Charts에서 생성된 집계 파이프라인을 어떻게 변경하는지 살펴보겠습니다.

필터가 없는 집계 파이프라인 예시입니다.
클릭하여 확대

Data Source 파이프라인, Query 막대 쿼리, 계산된 필드 및 필터를 Filter 창에 추가하지 않은 경우 Atlas Charts는 다음과 같은 집계 파이프라인을 생성합니다.

1{
2 "$addFields": { // Encoding
3 "__alias_0": {
4 "$sum": "$items.price"
5 }
6 }
7},
8{
9 "$group": {
10 "_id": {
11 "__alias_1": "$purchaseMethod"
12 },
13 "__alias_0": {
14 "$sum": "$__alias_0"
15 }
16 }
17},
18{
19 "$project": {
20 "_id": 0,
21 "__alias_1": "$_id.__alias_1",
22 "__alias_0": 1
23 }
24},
25{
26 "$project": {
27 "x": "$__alias_1",
28 "y": "$__alias_0",
29 "_id": 0
30 }
31},
32
33{
34 "$addFields": { // Sorting
35 "__agg_sum": {
36 "$sum": [
37 "$y"
38 ]
39 }
40 }
41},
42{
43 "$sort": {
44 "__agg_sum": -1
45 }
46},
47{
48 "$project": {
49 "__agg_sum": 0
50 }
51},
52{
53 "$limit": 5000
54}

이 점의 파이프라인은 Encode 패널의 그룹, 기본 정렬 순서 단계, 최대 문서 제한(Atlas Charts에서 5000개로 설정)으로 구성됩니다.

아래 쿼리는 saleDateitems 배열에 요소가 5개 이상 있고 January 1, 2017 이상이고 이(가) 있는 문서로만 표시되는 문서를 제한합니다. items 은(는) 각 요소가 판매 중에 구매한 품목인 배열입니다.

쿼리:

{
$and: [
{
saleDate: { $gte: new Date("2017-01-01") }
},
{
'items.4': { $exists: true }
} ]
}

Query 표시줄에 위 쿼리를 적용하면 다음과 같은 차트와 집계 파이프라인이 생성됩니다.

쿼리가 포함된 집계 파이프라인 예시입니다.
클릭하여 확대

집계 파이프라인:

1{
2 "$match": { // Query
3 "$and": [
4 {
5 "saleDate": {
6 "$gte": {
7 "$date": "2017-01-01T00:00:00Z"
8 }
9 }
10 },
11 {
12 "items.4": {
13 "$exists": true
14 }
15 }
16 ]
17 }
18},
19{
20 "$addFields": {
21 "__alias_0": {
22 "$sum": "$items.price"
23 }
24 }
25},
26{
27 "$group": {
28 "_id": {
29 "__alias_1": "$purchaseMethod"
30 },
31 "__alias_0": {
32 "$sum": "$__alias_0"
33 }
34 }
35},
36{
37 "$project": {
38 "_id": 0,
39 "__alias_1": "$_id.__alias_1",
40 "__alias_0": 1
41 }
42},
43{
44 "$project": {
45 "x": "$__alias_1",
46 "y": "$__alias_0",
47 "_id": 0
48 }
49},
50{
51 "$addFields": {
52 "__agg_sum": {
53 "$sum": [
54 "$y"
55 ]
56 }
57 }
58},
59{
60 "$sort": {
61 "__agg_sum": -1
62 }
63},
64{
65 "$project": {
66 "__agg_sum": 0
67 }
68},
69{
70 "$limit": 5000
71}

이제 쿼리가 적용된 상태로 집계 파이프라인이 시작되고 Encode 패널과 최대 문서 제한에서 선택한 그룹이 그 뒤를 이습니다.

생성된 총 수익을 구매 방법별로 분류하여 표시하도록 차트를 변경할 수도 있습니다. 이 작업을 수행하기 위해 가격에 수량을 곱하여 총 수익을 계산하는 계산된 필드를 생성하겠습니다. 위의 쿼리에 이 새 계산된 필드를 추가하면 다음과 같은 차트와 파이프라인이 생성됩니다.

계산된 필드 표현식:

계산된 필드가 있는 집계 파이프라인 예시입니다.
클릭하여 확대

집계 파이프라인:

1{
2 "$match": {
3 "$and": [
4 {
5 "saleDate": {
6 "$gte": {
7 "$date": "2017-01-01T00:00:00Z"
8 }
9 }
10 },
11 {
12 "items.4": {
13 "$exists": true
14 }
15 }
16 ]
17 }
18},
19{
20 "$addFields": { // Calculated Field
21 "revenue": {
22 "$reduce": {
23 "input": "$items",
24 "initialValue": 0,
25 "in": {
26 "$sum": [
27 "$$value",
28 {
29 "$multiply": [
30 "$$this.price",
31 "$$this.quantity"
32 ]
33 }
34 ]
35 }
36 }
37 }
38 }
39},
40{
41 "$group": {
42 "_id": {
43 "__alias_0": "$purchaseMethod"
44 },
45 "__alias_1": {
46 "$sum": "$revenue"
47 }
48 }
49},
50{
51 "$project": {
52 "_id": 0,
53 "__alias_0": "$_id.__alias_0",
54 "__alias_1": 1
55 }
56},
57{
58 "$project": {
59 "x": "$__alias_0",
60 "y": "$__alias_1",
61 "_id": 0
62 }
63},
64{
65 "$addFields": {
66 "__agg_sum": {
67 "$sum": [
68 "$y"
69 ]
70 }
71 }
72},
73{
74 "$sort": {
75 "__agg_sum": -1
76 }
77},
78{
79 "$project": {
80 "__agg_sum": 0
81 }
82},
83{
84 "$limit": 5000
85}

이제 업데이트된 파이프라인의 Query 표시줄에 적용된 쿼리 바로 아래에 계산된 필드가 포함되며 나머지 구성 요소의 순서는 변경되지 않습니다.

이 차트는 뉴욕 위치에서 이루어진 매장 판매만 선택하도록 Filter 창에 필터를 추가하여 더욱 세분화할 수 있습니다. 이 필터를 추가하면 다음과 같은 차트와 집계 파이프라인이 생성됩니다.

필터가 있는 집계 파이프라인 예시.
클릭하여 확대

집계 파이프라인:

1{
2 "$match": {
3 "$and": [
4 {
5 "saleDate": {
6 "$gte": {
7 "$date": "2017-01-01T00:00:00Z"
8 }
9 }
10 },
11 {
12 "items.4": {
13 "$exists": true
14 }
15 }
16 ]
17 }
18},
19{
20 "$addFields": {
21 "revenue": {
22 "$reduce": {
23 "input": "$items",
24 "initialValue": 0,
25 "in": {
26 "$sum": [
27 "$$value",
28 {
29 "$multiply": [
30 "$$this.price",
31 "$$this.quantity"
32 ]
33 }
34 ]
35 }
36 }
37 }
38 }
39},
40{
41 "$match": { // Filter
42 "storeLocation": {
43 "$in": [
44 "New York"
45 ]
46 }
47 }
48},
49{
50 "$group": {
51 "_id": {
52 "__alias_0": "$purchaseMethod"
53 },
54 "__alias_1": {
55 "$sum": "$revenue"
56 }
57 }
58},
59{
60 "$project": {
61 "_id": 0,
62 "__alias_0": "$_id.__alias_0",
63 "__alias_1": 1
64 }
65},
66{
67 "$project": {
68 "x": "$__alias_0",
69 "y": "$__alias_1",
70 "_id": 0
71 }
72},
73{
74 "$addFields": {
75 "__agg_sum": {
76 "$sum": [
77 "$y"
78 ]
79 }
80 }
81},
82{
83 "$sort": {
84 "__agg_sum": -1
85 }
86},
87{
88 "$project": {
89 "__agg_sum": 0
90 }
91},
92{
93 "$limit": 5000
94}

이제 파이프라인은 계산된 필드 바로 아래에 storeLocation 필터를 포함하며 나머지 구성 요소의 순서는 변경되지 않습니다.

돌아가기

하위 세트 모드