Google Visualization API 쿼리 언어를 사용하면 데이터 소스에 대한 쿼리로 다양한 데이터 조작을 수행할 수 있습니다.
목차
소개
일반적으로 시각화에는 특정 형식의 데이터가 필요합니다. 예를 들어 원형 차트에서는 데이터를 텍스트 라벨과 숫자 값, 이렇게 두 개의 열로 예상할 수 있습니다. 데이터 소스의 데이터가 이 구조와 정확하게 일치하지 않을 수 있습니다. 예를 들어 데이터 소스에 열이 3개 이상 있거나 열 순서가 원형 차트에서 예상하는 순서와 일치하지 않을 수 있습니다.
쿼리 언어를 통해 데이터 조작 및 형식 지정 요청을 데이터 소스로 보내고, 반환된 데이터 구조와 콘텐츠가 예상 구조와 일치하는지 확인할 수 있습니다.
쿼리 언어의 구문은 SQL과 유사합니다. SQL에 익숙한 개발자는 이 쿼리 언어를 빠르게 배우고 사용할 수 있어야 합니다. 웹에서 여러 SQL 튜토리얼을 사용할 수 있습니다. 이 쿼리 언어와 SQL에는 몇 가지 차이점이 있습니다. 자세한 내용은 구문 섹션을 참조하세요.
데이터 소스는 쿼리 언어를 구현하지 않으며, 쿼리 언어를 구현하는 경우 언어의 모든 기능을 구현하는 데 필요하지 않습니다. 다르게 생각하지 않는 한 이 언어의 모든 기능을 구현하기 위해 데이터 소스에 의존해서는 안 됩니다.
쿼리 언어 사용
데이터 소스 요청에 쿼리 문자열을 연결하려면 자바스크립트 코드 내에서 쿼리 문자열을 설정하거나 데이터 소스 URL에서 쿼리 문자열을 매개변수로 설정해야 합니다. 요청에 쿼리 문자열이 포함되어 있지 않은 경우 데이터 소스의 기본 동작은 기본 행/열 순서 및 형식을 사용하여 모든 행과 열을 반환하는 것입니다. 데이터 소스에 대한 요청에 쿼리 문자열을 포함하여 변경할 수 있습니다.
자바스크립트에서 쿼리 설정
자바스크립트 코드 내에서 쿼리 문자열을 설정하려면 google.visualization.Query
클래스의 setQuery
메서드를 호출합니다.
var query = new google.visualization.Query(DATA_SOURCE_URL); query.setQuery('select dept, sum(salary) group by dept'); query.send(handleQueryResponse);
데이터 소스 URL에서 쿼리 설정
쿼리 문자열은 tq
매개변수를 사용하여 데이터 소스 URL에 추가할 수 있습니다.
자바스크립트 대신 URL 매개변수에 쿼리를 설정하면 다른 개발자가 작성한 시각화를 쉽게 사용할 수 있고 쿼리를 계속 맞춤설정할 수 있습니다.
쿼리 문자열은 URL 매개변수로 올바르게 인코딩되어야 합니다.
자바스크립트 encodeURIComponent
함수를 사용하여 URL을 인코딩하거나 이 섹션 끝에 있는 인코딩 도구를 사용하여 직접 인코딩할 수 있습니다.
예:
Google 스프레드시트에 다음과 같은 쿼리 문자열을 사용해 보세요. 스프레드시트의 열 ID는 항상 문자입니다. 게시된 스프레드시트에 표시되는 열 제목 텍스트는 ID가 아닌 라벨입니다. 쿼리 문자열에서 라벨이 아닌 ID를 사용해야 합니다.)
select A, sum(B) group by A
이 쿼리가 인코딩되면 다음과 같이 됩니다.
select%20A%2C%20sum(B)%20group%20by%20A
스프레드시트의 URL을 다음과 같이 가정합니다.
https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4
스프레드시트 URL에 /gviz/tq?tq=
YOUR_QUERY_STRING을 추가하여 최종 쿼리 문자열을 가져옵니다.
https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A
아래 도구를 사용하여 쿼리 문자열을 인코딩하거나 디코딩합니다.
참고: 비공개 스프레드시트 데이터에 액세스하려면 OAuth를 사용하여 명시적인 승인 사용자 인증 정보를 전달해야 합니다. 자세한 내용은 Google 스프레드시트: 승인 섹션을 참조하세요.
언어 구문
개요
Google 시각화 API 쿼리 언어 구문은 SQL 구문과 유사하게 설계되었습니다. 그러나 SQL의 하위 집합이며 몇 가지 자체 기능을 학습해야 합니다. SQL에 익숙하다면 학습하는 것이 어렵지 않습니다.
데이터 표
이 문서에서는 데이터 테이블이라는 용어를 사용하여 쿼리의 결과 집합을 참조합니다. 데이터 테이블은 행과 열로 구성됩니다. 데이터 테이블의 각 열에는 다음과 같은 속성이 있습니다.
- 식별자(또는 열 ID) 쿼리 내의 열을 참조하는 데 사용됩니다. 쿼리에서 라벨별로 열을 참조해서는 안 되며 식별자로만 참조해야 합니다. 도움말: 공백을 포함하는 ID는 사용하지 마세요. 공백은 관리하기 어렵고 코딩에서 작지만 실수하기 어려울 수 있습니다. 또한 공백이 포함된 ID는 작은따옴표로 묶어야 합니다.
- Label(라벨). 일반적으로 최종 사용자에게 표시되는
string
예를 들어 원형 차트의 범례 또는 테이블의 열 헤더 등이 있습니다. - 데이터 유형. 지원되는 데이터 유형은
string
,number
,boolean
,date
,datetime
,timeofday
입니다. 열의 모든 값에는 열 유형과 일치하는 데이터 유형이나null
값이 있습니다. 이러한 유형은 자바스크립트 유형과 비슷하지만 동일하지는 않습니다. 이 페이지의 리터럴 섹션에 설명되어 있습니다. - 서식 지정 패턴. 데이터 소스는 일부 또는 모든 열의 서식 패턴을 정의할 수 있습니다. 형식 절을 포함하여 이 패턴을 재정의할 수 있습니다.
이 섹션 전체에서 모든 쿼리 예시는 다음 표를 참조합니다. 열 헤더는 열 식별자입니다.
이름string |
부서string |
점심시간timeofday |
급여 number |
고용일date |
연령number |
선임boolean |
노약자 시작 시간datetime |
---|---|---|---|---|---|---|---|
존 | 잉 | 12:00:00 | 1000 | 2005-03-19 | 35 | true | 2007-12-02 15:56:00 |
Dave | 잉 | 12:00:00 | 500시간 | 2006-04-19 | 27 | false | null |
샐리 | 잉 | 13:00:00 | 600 | 2005-10-10 | 30 | false | null |
Ben | 영업 | 12:00:00 | 400 | 2002-10-10 | 32 | true | 2005-03-09 12:30:00 |
다나 | 영업 | 12:00:00 | 350 | 2004-09-08 | 25 | false | null |
Mike | 마케팅 | 13:00:00 | 800 | 2005-01-10 | 24 | true | 2007-12-30 14:40:00 |
언어 조항
쿼리 언어의 구문은 다음 절로 구성됩니다. 각 절은 1~2개의 키워드로 시작합니다. 모든 절은 선택사항입니다. 절은 공백으로 구분됩니다. 절의 순서는 다음과 같아야 합니다.
절 | 사용 |
---|---|
select |
표시할 열과 순서를 선택합니다. 생략하면 테이블의 모든 열이 기본 순서로 반환됩니다. |
where |
조건과 일치하는 행만 반환합니다. 생략하면 모든 행이 반환됩니다. |
group by |
여러 행의 값을 집계합니다. |
pivot |
열의 고유한 값을 새 열로 변환합니다. |
order by |
열의 값을 기준으로 행을 정렬합니다. |
limit |
반환된 행의 수를 제한합니다. |
offset |
지정된 첫 번째 행 수를 건너뜁니다. |
label |
열 라벨을 설정합니다. |
format |
지정된 형식 지정 패턴을 사용하여 특정 열에 있는 값의 형식을 지정합니다. |
options |
추가 옵션을 설정합니다. |
from |
from 절이 언어에서 삭제되었습니다. |
선택
select
절은 반환할 열과 그 순서를 지정하는 데 사용됩니다.
이 절을 지정하지 않거나 select *
을 사용하면 데이터 소스 테이블의 모든 열이 원래 순서로 반환됩니다.
열은 라벨이 아닌 식별자에 의해 참조됩니다. 예를 들어 Google 스프레드시트에서 열 식별자는 한두 개의 열 문자 (A, B, C, ...)입니다.
select
절의 항목은 열 식별자 또는 집계 함수, 스칼라 함수, 연산자의 출력일 수 있습니다.
예:
select *
select dept, salary
select max(salary)
다음 예에서 역따옴표는 공백 (이메일 주소)을 포함하거나 예약된 단어 (날짜)가 있는 열 ID를 참조하는 데 사용됩니다.
select `email address`, name, `date`
예시 테이블에서 다음 쿼리 실행:
select lunchTime, name
다음 응답을 반환합니다.
점심시간 | 이름 |
---|---|
12:00:00 | 존 |
12:00:00 | Dave |
13:00:00 | 샐리 |
12:00:00 | Ben |
12:00:00 | 다나 |
13:00:00 | Mike |
위치
where
절은 지정된 조건과 일치하는 행만 반환하는 데 사용됩니다.
간단한 비교 연산자는 <=, <, >, >=, =,
!=, <>
입니다. 두 비교 연산자 != <>
모두 같지 않음을 의미합니다. 문자열은 사전식 값을 기준으로 비교됩니다. 동등성은 대부분의 컴퓨터 언어에서와 같이 ==
가 아닌 =
로 표시됩니다.
null
는 is null
또는 is not null
를 사용하여 비교합니다.
논리 연산자 and
, or
, not
를 사용하여 여러 조건을 조인할 수 있습니다. 괄호를 사용하여 명시적 우선순위를 정의할 수 있습니다.
장소 절은 좀 더 복잡한 문자열 비교 연산자도 지원합니다.
이러한 연산자는 두 문자열을 인수로 사용합니다. 문자열이 아닌 인수 (예: 날짜 또는 숫자)는 비교 전에 문자열로 변환됩니다. 문자열 일치는 대소문자를 구분합니다. 예를 들어 upper()
또는 lower()
스칼라 함수를 사용하면 이 문제를 해결할 수 있습니다.
contains
- 하위 문자열 일치. 전체 내 부분이 전체 내이면 전체가 true입니다. 예:where name contains 'John'
은 'John', 'John Adams', 'Long John Silver'와 일치하지만 'john adams'와는 일치하지 않습니다.starts with
- 프리픽스가 일치합니다. valuestarts with
prefix는 value의 시작 부분에 있는 경우 true입니다. 예:where dept starts with 'engineering'
은 '엔지니어링' 및 '엔지니어링 관리자'와 일치합니다.where dept starts with 'e'
는 'engineering', 'eng', 'e'와 일치합니다.ends with
- 서픽스가 일치합니다. valueends with
suffix는 value의 끝에 있는 경우 true입니다. 예:where role ends with 'y'
는 'cowboy', 'boy', 'y'와 일치합니다.matches
- (preg) 정규 표현식이 일치합니다. haystackmatches
needle의 정규 표현식이 haystack과 일치하면 needle이 true입니다. 예:where country matches '.*ia'
는 인도 및 나이지리아와 일치하지만 인디애나와는 일치하지 않습니다. 이는 전체 검색이 아니므로where country matches 'an'
는 '캐나다'와 일치하지 않습니다.like
- 두 가지 와일드 카드를 지원하는 텍스트 검색. 0은 문자 종류에 상관없이 0개 이상 일치하고, _는 밑줄(하나의 문자)과 일치합니다. SQL Like 연산자와 유사합니다. 예:where name like fre%
는 'fre', 'fred', 'freddy'와 일치합니다.
예:
where salary >= 600 where dept != 'Eng' and date '2005-01-21' < hireDate where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null
예시 테이블에서 다음 쿼리 실행:
select name where salary > 700
다음 응답을 반환합니다.
이름 |
---|
존 |
Mike |
그룹화 기준
group by
절은 여러 행의 값을 집계하는 데 사용됩니다.
그룹화 기준 절에서 고유한 값 조합마다 단일 행이 생성됩니다.
order by
절에 달리 지정되지 않은 한 데이터는 그룹화 열에 따라 자동으로 정렬됩니다.
참고: group by
절을 사용하는 경우 select
절에 나열된 모든 열을 group by
절에 나열하거나 집계 함수로 래핑해야 합니다.
예:
select dept, max(salary) group by dept
예시 테이블에서 다음 쿼리 실행:
select lunchTime, avg(salary), count(age) group by isSenior,lunchTime
다음 응답을 반환합니다.
점심시간 | 평균 급여 | count-age |
---|---|---|
12:00:00 | 425 | 2 |
13:00:00 | 600 | 1 |
12:00:00 | 700 | 2 |
13:00:00 | 800 | 1 |
피봇
pivot
절은 열의 고유한 값을 새 열로 변환하는 데 사용됩니다. 예를 들어 'year' 열을 피벗하면 원래 테이블에 표시되는 연도마다 열이 있는 테이블이 생성됩니다.
이 기능은 예를 들어 선 차트 시각화에서 각 열을 별도의 선으로 그리는 경우에 유용합니다. 연도마다 별도의 선을 그려야 하고 '연도'가 원본 테이블의 열 중 하나인 경우 피벗 작업을 사용하여 필요한 데이터 변환을 수행하는 것이 좋습니다.
참고: pivot
절을 사용하는 경우 select
절에 나열된 모든 열을 group by
절에 나열하거나 집계 함수로 래핑해야 합니다.
여러 행에 피봇 열에 동일한 값이 포함될 수 있으므로 피봇은 집계를 의미합니다. group by
를 사용하지 않고 pivot
를 사용하면 결과 테이블에 정확히 하나의 행이 포함됩니다.
예를 들어 예시 테이블에서 다음 쿼리를 실행합니다.
select sum(salary) pivot dept
다음 응답을 반환합니다.
영어 총급 | 마케팅 총 급여 | 판매 총 급여 |
---|---|---|
2100 | 800 | 750 |
이는 2100은 엔지니어링 부서의 급여, 마케팅 부서의 급여를 800으로 나눈 것이기 때문입니다.
pivot
를 group by
와 함께 사용하면 훨씬 편리할 수 있습니다. 각 셀에 관련 행과 관련 열에 대한 집계 결과가 포함된 테이블이 생성되기 때문입니다. 예를 들어 예시 테이블에서 다음 쿼리를 실행합니다.
select dept, sum(salary) group by dept pivot lunchTime
다음 응답을 반환합니다.
부서 | 12:00:00 총급 | 13:00:00 총급 |
---|---|---|
잉 | 1,500 | 600 |
마케팅 | null | 800 |
영업 | 750 | null |
pivot
열과 group by
열 간에 전환하여 이 열과 행을 '반전'할 수도 있습니다. 예시 테이블에서 다음 쿼리 실행:
select lunchTime, sum(salary) group by lunchTime pivot dept
다음 응답을 반환합니다.
점심시간 | 영어 총급 | 마케팅 총 급여 | 판매 총 급여 |
---|---|---|---|
12:00:00 | 1,500 | null | 750 |
13:00:00 | 600 | 800 | null |
pivot
절에 열을 두 개 이상 사용할 수도 있습니다. 이 경우 응답 테이블의 열은 원본 테이블에 있는 열의 모든 고유한 값 조합으로 구성됩니다. 예를 들어 예시 테이블에서 다음 쿼리를 실행합니다.
select sum(salary) pivot dept, lunchTime
다음 응답을 반환합니다.
영어,12:00:00 총급 | 영어,13:00:00 총급 | 마케팅,13:00:00 총 급여 | 판매,12:00:00 총급 |
---|---|---|---|
1,500 | 600 | 800 | 750 |
원본 테이블에 나타난 조합만 응답 테이블에 있는 열에 제공됩니다. 따라서 마케팅,12:00:00 또는 판매,13:00:00에 해당하는 열이 없는 것입니다.
2개 이상의 집계를 사용할 수도 있습니다. 예를 들어 예시 테이블에서 다음 쿼리를 실행합니다.
select sum(salary), max(lunchTime) pivot dept
다음 응답을 반환합니다.
영어 총급 | 마케팅 총 급여 | 판매 총 급여 | 영어 최대 점심 시간 | 마케팅 max-lunchTime | 판매 max-lunchTime |
---|---|---|---|---|---|
2100 | 800 | 750 | 13:00:00 | 13:00:00 | 12:00:00 |
select
절의 여러 집계, group by
절의 여러 열, pivot
절의 여러 열을 결합할 수 있습니다. 내부적으로 집계는 그룹의 열을 연결하고 피봇 절을 통해 수행됩니다.
pivot
절에 지정된 열은 select
, group by
또는 order by
절에 나타나지 않을 수 있습니다.
pivot
를 사용하면 order by
절에 집계 열이 포함될 수 없습니다. 그 이유는 select
절에 지정된 집계마다 결과 테이블에 여러 열이 생성되기 때문입니다. 하지만 pivot
을 사용하면 집계 열의 형식을 지정할 수 있습니다. 이러한 형식의 결과는 피벗 연산에 의해 생성되는 특정 집계와 관련된 모든 새 열의 형식이 지정된 패턴에 따라 지정됩니다. 위의
예시에서 format sum(salary) "some_format_string"
를 추가하면
영어 총 급여, 마케팅 총 급여, 판매 총 급여가 영향을 받습니다.
집계 열에 라벨을 지정할 수 있습니다. label
절에 라벨이 지정되지 않은 경우 피봇팅의 결과로 생성되는 열의 라벨은 피봇 열의 값 목록, 집계 유형 (최소, 최대, 합계, ...), 집계된 열의 라벨로 구성됩니다.
예: '영어,12:00:00 합계 급여' select
절에 하나의 집계만 지정된 경우 라벨에서 집계 부분이 삭제되고 피벗 열의 값 목록만 유지됩니다. 예: 'Eng,12:00:00' label
절이 집계 열의 라벨을 지정하면 select
절에 집계가 하나만 존재하고 집계가 두 개 이상일 때 요청된 라벨이 값 목록에 추가됩니다. 예를 들어 label sum(salary) "sumsal"
는 열 라벨이 'Eng,12:00:00 sumsal', 'Eng,13:00:00 sumsal' 등입니다.
정렬 기준
order by
절은 지정된 열의 값을 기준으로 행을 정렬하는 데 사용됩니다.
order by
절의 항목은 열 식별자 또는 집계 함수, 스칼라 함수, 연산자의 출력일 수 있습니다.
예:
order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)
한도
limit
절은 반환된 행의 수를 제한하는 데 사용됩니다.
예:
limit 100
오프셋
offset
절은 지정된 첫 번째 행 수를 건너뛰는 데 사용됩니다.
limit
절을 사용하면 offset
가 먼저 적용됩니다. 예를 들어 limit 15 offset
30
는 31~45행을 반환합니다.
예:
offset 10 limit 30 offset 210
라벨
label
절은 하나 이상의 열에 라벨을 설정하는 데 사용됩니다.
쿼리의 ID 대신 라벨 값을 사용할 수 없습니다.
label
절의 항목은 열 식별자 또는 집계 함수, 스칼라 함수, 연산자의 출력일 수 있습니다.
구문:
label column_id label_string [,column_id label_string]
column_id
- 라벨이 할당되는 열의 식별자.
label_string
- 이 열에 할당할 라벨입니다. 많은 시각화에서는 원형 차트의 열 레이블을 최종 사용자에게 표시할 텍스트로 사용합니다(예: 원형 범례). 라벨은 문자열 리터럴이며 이러한 문법 규칙을 따릅니다.
예:
다음 예에서는 dept 열의 라벨을 'Department'로, 이름 열의 라벨은 'Employee Name', 위치 열의 라벨을 'Employee Location'으로 설정합니다.
label dept 'Department', name "Employee Name", location 'Employee Location'
형식
format
절은 하나 이상의 열에 있는 셀에 서식이 지정된 값을 지정하는 데 사용됩니다. 반환된 데이터에는 서식 있는 열에 있는 각 셀의 실제 값과 형식이 지정된 값이 모두 포함되어야 합니다. 많은 시각화는 계산되지 않은 서식 값을 사용하지만 표시에는 형식이 지정된 값을 사용합니다. 이 절에서 지정하는 패턴은 일반적으로 해당 열의 pattern 속성에 반환됩니다.
패턴 구문:
number
,date
,timeofday
,datetime
- ICU에 의해 정의된 날짜 및 숫자 패턴입니다.
-
boolean
- 패턴은 'value-if-true:value-if-false' 형식의
string
입니다.
예:
format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'
옵션
options
절은 쿼리 실행의 추가 옵션을 제어하는 데 사용됩니다. options
절을 따라갈 수 있는 키워드는 다음과 같습니다.
-
no_format
서식이 지정된 값을 결과에서 삭제하고 기본 값만 남깁니다. 특정 시각화가 서식이 지정된 값을 사용하여 응답 크기를 줄이는 경우에 사용할 수 있습니다. -
no_values
결과에서 기본 값을 삭제하고 서식 있는 값만 유지합니다. 특정 시각화에서 서식이 지정된 값만 사용하여 응답 크기를 줄이는 경우에 사용할 수 있습니다.
데이터 조작 함수
단일 열의 데이터를 조작 또는 집계하거나 열 간에 데이터를 비교하거나 결합할 수 있는 여러 가지 종류의 연산자와 함수가 있습니다. 예를 들어 sum() (열에 모든 값을 추가), max (열에서 가장 큰 값 찾기), + (같은 행에 두 열의 값을 더하려는 경우)를 포함합니다.
일부 함수는 모든 절에 표시될 수 있으며 일부 함수는 절의 하위 집합에 표시될 수 있습니다. 이는 아래에 설명되어 있습니다.
예:
이 표에서... | 이 쿼리를 적용하면... | 결과를 얻었습니다. | ||||||||||||||||||||||||
|
select upper(name), year(startDate) |
|
다음 데이터 조작 함수는 Google 시각화 API 쿼리 언어로 정의됩니다.
집계 함수
집계 함수는 단일 열 식별자로 전달되며 각 그룹의 모든 값에 대해 작업을 수행합니다 (그룹은 group by
또는 pivot
절로 지정되거나 절이 사용되지 않는 경우 모든 행으로 지정됨).
예:
select max(salary) // Returns a table with one column and one row. select max(salary) group by dept // Returns a table with the max salary for each dept column value. select max(salary) pivot dept // Returns a one-row table with a column for each dept, // and the max salary for that department.
집계 함수는 select
, order by
, label
, format
절에서 사용할 수 있습니다.
where
, group by
, pivot
, limit
, offset
또는 options
절에는 표시되지 않습니다.
지원되는 집계 함수는 다음과 같습니다.
이름 | 설명 | 지원되는 열 유형 | 반환 유형 |
---|---|---|---|
avg() |
그룹의 열에 있는 모든 값의 평균 값을 반환합니다. | number |
number |
count() |
그룹의 지정된 열에 있는 요소의 개수를 반환합니다. null 셀은 집계되지 않습니다. | 모든 유형 | number |
max() |
그룹의 열에 있는 최댓값을 반환합니다. 날짜는 이전보다 작고 string 는 대소문자 구분을 통해 알파벳순으로 비교됩니다. |
모든 유형 | 열과 동일한 유형 |
min() |
그룹의 열에 있는 최솟값을 반환합니다. 날짜는 이전보다 작고 string 는 알파벳순, 대소문자 구분으로 비교됩니다. |
모든 유형 | 열과 동일한 유형 |
sum() |
그룹의 열에 있는 모든 값의 합계를 반환합니다. | number |
number |
참고: 집계 함수는 열 식별자만 인수로 사용할 수 있습니다.
max(startDate) // OK min(firstScore) + min(secondScore) // OK max(year(startDate)) // INVALID. max requires column ID sum(salary + perks) // INVALID. sum requires column ID.
스칼라 함수
스칼라 함수는 0개 이상의 매개변수를 통해 작동하면서 또 다른 값을 생성합니다. 스칼라 함수는 적절한 유형의 매개변수로 평가되는 모든 표현식을 전달할 수 있습니다. 이러한 유형은 이 문서의 리터럴 섹션에 정의된 유형이며, 비슷한 이름의 자바스크립트 객체와 약간 다를 수 있습니다.
열 이름은 스칼라 함수로 래핑하여 변경됩니다.
스칼라 함수는 단일 값으로 평가되는 모든 항목을 매개변수로 사용할 수 있습니다.
year(max(startDate)) datediff(now(), todate(1234567890000))
스칼라 함수는 select
, where
, group by
, pivot
, order by
, label,
,
format
절에 사용할 수 있습니다.
이름 | |
---|---|
year() |
날짜 또는 날짜/시간 값에서 연도 값을 반환합니다. 예를 들어 매개변수:
date 또는 datetime 유형의 매개변수 1개반환 유형:
number |
month() |
날짜 또는 날짜/시간 값에서 0부터 시작하는 월 값을 반환합니다. 예를 들어 매개변수:
date 또는 datetime 유형의 매개변수 1개반환 유형:
number |
day() |
매개변수:
date 또는 datetime 유형의 매개변수 1개반환 유형:
number |
hour() |
날짜/시간 값 또는 매개변수:
datetime 또는 timeofday 유형의 매개변수 1개반환 유형:
number |
minute() |
매개변수:
datetime 또는 timeofday 유형의 매개변수 1개반환 유형:
number |
second() |
매개변수:
datetime 또는 timeofday 유형의 매개변수 1개반환 유형:
number |
millisecond() |
매개변수:
datetime 또는 timeofday 유형의 매개변수 1개반환 유형:
number |
quarter() |
매개변수:
date 또는 datetime 유형의 매개변수 1개반환 유형:
number |
dayOfWeek() |
매개변수:
date 또는 datetime 유형의 매개변수 1개반환 유형:
number |
now() |
GMT 시간대에서 현재 매개변수: 없음
반환 유형:
datetime |
dateDiff() |
두 매개변수:
date 또는 datetime 유형의 두 매개변수 (각각 하나일 수 있음)반환 유형:
number |
toDate() |
지정된 값을
매개변수:
date , datetime , number 유형의 매개변수 1개반환 유형:
date |
upper() |
지정된 매개변수:
string 유형의 매개변수 1개반환 유형:
string |
lower() |
지정된 매개변수:
string 유형의 매개변수 1개반환 유형:
string |
산술 연산자
산술 연산자를 사용하여 단일 숫자로 평가되는 모든 항목 (즉, 적절한 집계 함수, 연산자 또는 상수의 출력)으로 수학 연산을 수행할 수 있습니다.
예:
select empSalary - empTax select 2 * (max(empSalary) / max(empTax))
다음 연산자가 정의됩니다.
이름 | 설명 | 매개변수 | 반환 유형 |
---|---|---|---|
+ |
두 number 값의 합계를 반환합니다. |
number 두 개 |
number |
- |
두 number 값 간의 차이를 반환합니다. |
number 두 개 |
number |
* |
두 number 의 곱을 반환합니다. |
number 두 개 |
number |
/ |
두 number 의 몫을 반환합니다. 0으로 나누면 null이 반환됩니다. |
number 두 개 |
number |
언어 요소
리터럴
리터럴은 비교 또는 할당에 사용되는 값입니다. 리터럴은 string
, 숫자, 부울 값, 다양한 날짜/시간 유형일 수 있습니다. 다음은 쿼리 구문에 사용되는 리터럴의 예입니다.
where startDate < date "2008-03-18" // date "2008-03-18" is a date literal
limit 30 // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!' // '#,##0.00' and 'not yet:of course!' are both string
literals
각 리터럴 유형의 형식은 다음과 같습니다.
string
string
리터럴은 작은따옴표 또는 큰따옴표로 묶어야 합니다. 예:"fourteen" 'hello world' "It's raining"
-
number
- 숫자 리터럴은 십진수 표기법으로 지정됩니다.
예:
3 3.0 3.14 -71 -7.2 .6
-
boolean
- 부울 리터럴은
true
또는false
입니다. -
date
- 키워드
date
다음에string
리터럴을 사용하여yyyy-MM-dd
형식을 지정합니다. 예:date "2008-03-18"
-
timeofday
timeofday
키워드 다음에string
리터럴을 사용합니다.HH:mm:ss[.SSS]
예:timeofday "12:30:45"
.-
datetime
- 날짜 및 시간. 키워드
datetime
또는 키워드timestamp
,yyyy-MM-dd HH:mm:ss[.sss]
형식의string
리터럴을 사용합니다. 예:datetime '2008-03-18 12:30:34.123'
식별자
식별자 (또는 ID)는 열을 식별하는 텍스트 string
입니다.
중요: 식별자가
- 공백 포함,
- 예약어임
- 영숫자 문자 또는 밑줄 이외의 다른 문자([a-zA-Z0-9_])
- 숫자로 시작
작은따옴표가 아닌 따옴표로 묶어야 합니다.
그렇지 않은 경우 식별자를 따옴표로 묶을 필요가 없습니다. 구문에서 정의한 모든 키워드가 예약된 단어는 아니므로, 예를 들어 'max'를 식별자로 인용할 필요 없이 식별자로 사용할 수 있습니다.
예: col1 employee_table `start
date` `7 days traffic` `select`
역따옴표를 사용하는 것을 잊거나 실수로 '백따옴표'를 사용하는 대신 '작은따옴표'를 사용하는 경우가 많으므로 뒤로따옴표를 사용하는 식별자를 사용하지 않는 것이 좋습니다. 이러한 실수는 흔히 저지르기 때문에 디버그하기가 어려울 수 있습니다.
대소문자 구분
식별자와 문자열 리터럴은 대소문자를 구분합니다. 다른 모든 언어 요소는 대소문자를 구분하지 않습니다.
예약어
다음 예약된 단어는 식별자로 사용하는 경우 반드시 큰따옴표로 묶어야 합니다.
and asc by date datetime desc false format group label limit not offset options or order pivot select timeofday timestamp true where