PartiQL

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

탭을 PartiQL 모드로 전환하면 기본 SELECT * FROM "table" 스캔이 자동 실행됩니다 — 비주얼 뷰에서 테이블을 여는 것과 직접적으로 동등합니다. 문을 수정하고 나면, 실행은 사용자에게 달려 있습니다: ⌘↩를 눌러 실행하세요. 결과가 스트리밍되며, Load more가 다음 페이지를 가져옵니다.

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

PartiQL은 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의 것과 분리). history 메뉴를 다시 열어 이전 문을 편집기에 복원하세요 — 실패한 실행도 포함되므로 고쳐서 다시 시도할 수 있습니다.

업데이트됨