이 가이드에서는 목록 필터 문법과 다양한 필터링 방법을 설명합니다. 리소스 유형
일부 API 메서드는 있습니다.
요약
이 섹션에서는 목록 필터 구문 구조를 간략히 설명합니다.
필터는
expression
가 포함된 문자열입니다.expression
는 불리언 비교 조합:expression = ["NOT"] comparison { ("AND" | "OR") ["NOT"] comparison } expression = ( expression )
comparison
는 리소스 필드와 값을 일치시킵니다. 모든 일반적인 비교 연산자입니다.comparison = name OP value OP = "<=" | "<" | ">=" | ">" | "!=" | "=" | ":"
has
연산자인 콜론 (:
)은 문자열에 사용할 수 있으며 있습니다. 자세한 내용은 Has 연산자 섹션을 참고하세요.필터에 다음 유형의 값을 사용할 수 있습니다.
- 숫자
- 문자열
- 괄호로 묶인 표현식
value = number| string | "*" | "(" expression ")"
문자열은 다음을 나타낼 수 있습니다.
- 임의 텍스트
- 부울
- Enum 값
- 타임스탬프
부울 표현식
expression = ["NOT"|"-"] comparison {["AND" | "OR"] ["NOT"|"-"] comparison}
작업은 다음 순서로 실행됩니다.
NOT
OR
AND
예를 들어 다음 표현식은 동일합니다.
a OR NOT b AND NOT c OR d
(a OR (NOT b)) AND ((NOT c) OR d)
비교 사이에 AND
연산자를 생략할 수 있습니다. 예를 들어
필터는 동일합니다.
c=d AND e=f
c=d e=f
NOT
대신 하이픈 (-
)을 사용할 수 있습니다. 한 쌍의
하이픈 (-
)과 다음 비교 사이의 공백 예를 들어
다음 필터는 동일합니다.
NOT e=f
-e=f
비교
이 섹션에서는 다음과 같은 "name OP value"
비교를 설명합니다.
comparison = name OP value
어디서
OP = "<=" | "<" | ">=" | ">" | "!=" | "=" | ":"
name = identifier { "." identifier }
identifier = unquoted_text
value = number | string | "*" | "(" expression ")"
비교의 왼쪽에는 API 리소스 필드의 경로 이름이 있습니다.
이름은 마침표 (.
)로 연결된 일련의 리소스 식별자로 구성됩니다.
각 필드 식별자 뒤에는 해당 필드의 다음 수준 이름이 옵니다. 대상
예를 들어 리소스에 다른 필드가 있는 item
shape
라는 필드가 있는 복잡한 필드 tool
입니다. 이 기준의 필터
도형을 참조하려면 item.tool.shape
이라는 이름을 사용합니다.
오른쪽은 일반적으로 필드의 이를 기준으로 비교합니다. 값 리터럴 유형을 참조하세요. 섹션을 참조하세요.
비교의 오른쪽을 괄호로 묶은 부울로 표현할 수도 있습니다.
다음 문자만 포함하는 리터럴 값 또는 불리언 표현식의 조합
리터럴 값 (앞에 NOT
유무) 왼쪽 이름과
비교 연산자가 각 값에 적용됩니다. 예를 들어
다음 필터는 동일합니다.
deal.name = ("test 1" OR "test 2")
deal.name = "test 1" OR deal.name = "test 2"
다음은 두 개의 동등한 객체 2개의 더 복잡한 예입니다. 필터:
deal.name = ("test 1" OR "test 2" AND (NOT "test3" OR "test4"))
(deal.name = "test 1" OR deal.name = "test 2") AND ( (NOT deal.name = "test3") OR deal.name = "test4")
값 리터럴 유형
비교 연산자의 오른쪽 값은 Number와 문자열 리터럴.
숫자
이 섹션에서는 숫자 리터럴의 표현을 설명합니다.
유형 | 정의 | 예 |
---|---|---|
더블 | 부호('-') 유무와 관계없이 소수점을 포함하는 숫자 Double로 취급됩니다. |
|
정수 | 소수점이 없는 숫자(기호 포함 여부에 관계없음) ('-')는 정수로 취급됩니다. |
|
문자열
이 섹션에서는 필터 문법
유형 | 정의 | 예 |
---|---|---|
불리언 | TRUE 또는 FALSE (대소문자에 관계없이) |
|
열거형 | 열거형 유형 리터럴의 이름입니다. enum은 대소문자를 구분합니다. |
FINALIZED 과(와) Finalized 이(가) 다릅니다.
|
문자열 | UTF-8 인코딩 텍스트 또는 7비트 ASCII 텍스트를 포함하는 문자열. 삽입된 따옴표를 백슬래시로 이스케이프해야 합니다. 공백이 있는 따옴표로 묶이지 않은 문자열은 암시적 `AND`로 처리됩니다. 전체 단어 중에서 선택합니다. |
|
타임스탬프 | ISO8601 표준 형식의 문자열입니다. |
"2014-10-02T15:01:23.045Z"
|
비교 연산자
다음은 비교 연산자입니다.
- 이하:
"<="
- 미만:
"<"
- 이상:
">="
- 초과:
">"
- 같지 않음:
"!="
- 같음:
"="
- 포함:
":"
이 연산자는 Double, Integer, 불리언, enum, 타임스탬프 값에 적용됩니다. 있습니다.
연산자 있음
HAS
연산자 (:
)를 사용하여 다음 특수 연산에 사용할 수 있습니다.
필드:
- 하위 문자열
HAS
연산자를 사용하여 문자열 열의 값을 연산자가 하위 문자열 연산 역할을 합니다. 예를 들어name:"abcd"
는name
이 다음을 포함하는 문자열인 모든 인스턴스를 반환합니다."abcd"
입니다.- 존재 검사
- 특수 문자
*
와 함께HAS
연산자를 사용하는 경우HAS
연산자는 null이 아닌 값을 확인합니다. 예를 들어name:*
는name
이 null이거나 누락되었거나 정의되지 않은 모든 인스턴스를 반환합니다. 를 통해 개인정보처리방침을 정의할 수 있습니다.
- 문자열이 아닌 값에
HAS
연산자를 사용하면EQUALS
(=
) 연산자 예를 들어isCompleted:true
는isCompleted = true
와 같은 방식으로 작동합니다. - 반복되는 입력란
HAS
(:
) 연산자를 사용하여 반복되는 API 리소스를 필터링할 수 있습니다. 필드에 다음 조건을 충족하는 경우에 한해 사용할 수 있습니다.- 필드 식별자 경로에 반복되는 구성요소가 한 개만 있습니다.
- 필드 경로의 마지막 식별자는 스칼라 유형입니다.
중첩된 반복 필드에 대한 필터링은 지원되지 않습니다.
예를 들면 다음과 같습니다.
item
에는"red"
와 같은 문자열 값이 포함된colors
필드가 있습니다."blue"
,"yellow"
item.colors:("red")
는"red"
colors
필드item.colors:("red" "yellow")
는"red"
및"yellow"
를colors
필드에 입력합니다.item.colors:("red" OR "yellow")
는"red"
또는"yellow"
를colors
필드에 입력합니다.
item
에는 스칼라가 있는 복잡한 객체인 반복되는tools
필드도 있습니다. 필드shape
(값은"square"
또는"round"
일 수 있음)item.tools.shape:("square")
는"square"
모양의 모든 항목을 반환합니다. 있습니다.item.tools.shape:("square" "round")
는"square"
도형 도구와"round"
도형 도구item.tools.shape:("square" OR "round")
는"square"
도형 도구 또는"round"
도형 도구
채워지지 않은 중첩 필드
중첩 필드는 루트 수준 필드의 하위 필드입니다(예:shape
item.tools.shape
는 items.tools
의 중첩 필드입니다.
루트 수준 필드의 기본값은 false입니다. 중첩된 필드는 기본적으로 채워지지 않습니다.
채워지지 않은 중첩 필드가 있는 객체는 음수로 반환되지 않음
필터 (!=
개)
예를 들면 다음과 같습니다.
item.tools
에는 값을 "SMALL"
, "MEDIUM"
로 설정할 수 있는 size
enum이 있습니다.
또는 "LARGE"
다음 항목이 있는 경우:
{
"name": "item1",
"tools": {
"size": "MEDIUM"
}
},
{
"name": "item2",
"tools": {
"size": "LARGE"
}
},
{
"name": "item3"
}
제외 필터 "tools.size != SMALL"
를 사용한 items.list
호출이 반환됩니다.
다음과 같습니다.
{
"items": [
{
"name": "item1",
"tools": {
"size": "MEDIUM"
}
},
{
"name": "item2",
"tools": {
"size": "LARGE"
}
}
]
}
item3
에 대해 item.tools.size
가 설정되지 않았으므로 제외 필터는 다음에서 작동하지 않습니다.
item3
객체를 반환합니다.
예
예 | 설명 |
---|---|
externalDealId = "123456789" |
문자열 값이 '123456789'인 externalDealId |
advertiserId:93641 |
정수 값 93641을 갖는 advertiserId 입니다. |
isSetupComplete = true |
isSetupComplete 가 TRUE와 같습니다. |
updateTime > "2018-02-14T11:09:19.378Z" |
updateTime 은 2018년 2월 14일 11:09:19.378(UTC) 이후입니다. |
displayName = "proposal" AND proposalRevision = 3 |
displayName 문자열의 'proposal' 값이 동일합니다. AND 제안서 수정은 3과 같습니다. |
displayName = "proposal" OR proposalRevision = 3 |
displayName 의 문자열 값은 'proposal'입니다. OR 제안서 수정은 3과 같습니다. |
NOT displayName = "proposal" |
displayName 은(는) '제안서'와 같지 않습니다. |
proposalState = (PROPOSED OR BUYER_ACCEPTED) |
proposalState 에 PROPOSED 또는 Buyer_ACCEPTED와 같은 열거형 값이 있습니다. |
proposalState = (PROPOSED AND BUYER_ACCEPTED) |
proposalState 에 PROPOSED 및 Buyer_ACCEPTED와 같은 열거형 값이 있습니다. |
dealName = Test Deal |
INVALID 표현식 |
dealName = "Test Deal" |
dealName 는 'Test Deal'과 같습니다. |
dealName = (Test Deal) |
dealName 는 '테스트'와 같습니다. 'Deal'과 같습니다. |
dealName = ("Test1" OR "Test2") |
dealName 는 'Test1'과 같음 또는 'Test2'와 같습니다. |
dealName:* |
dealName is not null. |
dealName:"test" |
dealName 에는 하위 문자열 'test'가 포함됩니다. |
dealName:("A B") |
dealName 에는 하위 문자열 'A B'가 포함됩니다. |
dealName:(A B) |
dealName 에 하위 문자열 'A'가 포함됨 하위 문자열 'B'가 있습니다. |
dealName:("A" OR "B" AND "C") |
dealName 에는 하위 문자열 'A' 중 하나가 포함됩니다. 또는 'B' AND 하위 문자열 'C'도 포함 |
dealName:("A B" C) |
dealName 에 하위 문자열 'A B'가 포함됨 하위 문자열 'C'도 포함됩니다. |
dealName:("A B" OR C D) |
dealName 에는 하위 문자열 'A B' 중 하나가 포함됩니다. 또는 'C'와 하위 문자열 'D'도 포함됩니다. |
dealName:(NOT "A" B) |
dealName 에 하위 문자열 'A'가 없음 하위 문자열 'B'도 포함됩니다. |
dealName:(NOT "A" OR "B") |
dealName 에 하위 문자열 'A'가 없음 또는 하위 문자열 'B'를 포함합니다. |