PartiQL

PartiQL은 DynamoDB의 SQL 호환 쿼리 언어입니다. 아무 테이블 탭이나 PartiQL 모드(⌘⇧M)로 전환하면 필터 필을 클릭하는 대신 SELECT, INSERT, UPDATE, DELETE 문을 직접 작성할 수 있습니다.

자동 완성은 현재 테이블 안에 머무릅니다. 편집기는 그 테이블의 인덱싱된 필드와 값, 그리고 $table 자리표시자를 제안합니다. 테이블 선택기는 제공하지 않습니다. 로컬 인덱스가 어떻게 만들어지는지는 테이블 통계를 참고하세요.

탭을 PartiQL 모드로 전환하면 기본 SELECT * FROM "table" 이 자동으로 실행됩니다 — 테이블을 비주얼 뷰에서 여는 것과 똑같습니다. 문을 수정한 뒤부터는 실행 여부가 여러분에게 달려 있습니다. ⌘↩를 눌러 실행하세요. 결과는 스트리밍되며, Load more가 다음 페이지를 가져옵니다.

PartiQL은 Workbench와 동일한 쿼리 계획 및 비용 미리보기를 사용합니다.

SELECT * FROM "my-table" WHERE pk = 'USER#42' AND begins_with(sk, 'ORDER#')
SELECT 문, 템플릿 메뉴, 그리고 그 아래 스트리밍되는 결과가 있는 PartiQL 편집기.
SELECT 문, 템플릿 메뉴, 그리고 그 아래 스트리밍되는 결과가 있는 PartiQL 편집기.

PartiQL is not SQL

DynamoDB의 PartiQL은 의도적으로 만들어진 부분집합입니다. 편집기는 입력하는 동안 쿼리를 린트하고 DynamoDB가 실행하지 않을 구문을 표시합니다. 일부 진단에는 원클릭 빠른 수정이 포함됩니다. 흔한 함정은 다음과 같습니다.

  • IN은 괄호가 아니라 대괄호를 씁니다('a', 'b')가 아니라 WHERE id IN ['a', 'b']입니다. 빠른 수정이 이를 다시 써 줍니다. 목록이 DynamoDB의 한도(파티션 키 컬럼은 값 50개, 키가 아닌 컬럼은 100개)를 넘으면 서버가 거부하기 전에 린터가 경고합니다.
  • LIMIT 절 없음 — 페이지 크기는 SQL이 아니라 탭 컨트롤입니다. Load more를 사용하세요.
  • JOIN, GROUP BY, HAVING, 집계, 서브쿼리, UNION, CTE 없음. 이런 것이 필요하면 Workbench 탭을 여세요 — 린터가 그쪽으로 안내합니다.
  • LIKE → 함수LIKE '%foo%'contains(col, 'foo')가 되고, 'foo%'begins_with(col, 'foo')가 됩니다. 빠른 수정이 제공됩니다.
  • IS NULL / IS NOT NULLattribute_not_exists(col) / attribute_exists(col). 빠른 수정이 제공됩니다(대응이 뒤집힌다는 점에 유의하세요).
  • 문자열 리터럴은 작은따옴표"value"가 아니라 'value'입니다. 큰따옴표는 식별자를 뜻합니다.

Run 버튼 옆의 format-help 팝오버가 필요할 때마다 이 내용을 인라인으로 정리해 보여 줍니다.

템플릿 & 저장된 쿼리

Queries 메뉴는 활성 테이블의 실제 키와 샘플링한 값으로 해석된, 바로 쓸 수 있는 문을 편집기에 넣어 줍니다 — 그래서 SELECT 템플릿은 자리표시자가 아니라 여러분의 파티션 키를 이미 참조한 상태로 도착합니다. 강조된 빈칸을 Tab으로 이동하며 나머지를 채우세요.

다시 쓸 문은 Save 버튼으로 보관하세요 — 저장한 쿼리는 템플릿과 같은 메뉴에 들어가 어떤 테이블에서든 실행할 수 있습니다. Workbench와 PartiQL은 서로 다른 쿼리 언어를 쓰므로 라이브러리를 따로 관리합니다.

쓰기 템플릿

INSERT / UPDATE / DELETE 템플릿은 일부러 합성 DEMO-* 키를 사용합니다. 그래서 바로 실행해도 실제 행을 실수로 변경할 수 없습니다. 순서대로 실행하도록 설계되어 있으며 — 삽입, 그다음 수정, 그다음 같은 데모 항목 삭제 — 실제 데이터를 대상으로 하려면 키를 직접 수정하면 됩니다.

기록

실행한 모든 쿼리는 모드별 history에 저장됩니다(Workbench의 기록과는 별개입니다). 기록 메뉴를 다시 열면 이전 문을 편집기로 복원할 수 있습니다 — 실패한 실행도 포함되므로 고쳐서 다시 시도할 수 있습니다.

업데이트됨