Redshift 질의 편집기 v2를 시도했습니다.

배경
  • Redshift 조회 편집기 v2를 시도한 결과를 정리합니다.
  • 컨텐트
    개요
    조회 편집기 v2는
    공식 페이지에 다음과 같이 기재되어 있다.
    도표로 결과를 표시하고 팀의 다른 사용자와 조회를 공유함으로써 공동으로 작업을 할 수 있다.조회 편집기 v2는 이전의 조회 편집기를 바꾸는 데 사용되는 편집기입니다.
    즉, 다음과 같은 기능이 있다.
  • 차트
  • 공유 쿼리
  • 절차.

  • 참조공식 페이지 다음 단계를 시도합니다.
  • AWS 계정 설정
  • 조회 편집기 v2의 조작
  • 조회 작성 및 실행
  • 데이터 지연 조회
  • 조회 결과의 가시화
  • 팀으로서의 공동 작업 및 공유
  • 1. AWS 계정 설정
  • Redshift 관리자의 사이드바에서Queryeditor v2를 클릭하면 새 탭에 표시됩니다.
  • 먼저 조회 편집기 v2의 에셋을 암호화하는 KMS 키를 설정합니다.
    또한 기본적으로 AWS에서 관리하는 KMS를 사용하지만, 확인란의 "Customaize encryption settings(advanced)"를 선택하여 고객이 관리하는 KMS를 선택할 수도 있습니다.
    AWS에서 관리하는 KMS를 위해 Configure account을 클릭합니다.

  • 2. 편집기 v2 조회 작업
  • 처음에 화면을 열 때 어두운 모드의 화면을 표시합니다.
  • 또한 왼쪽 아래에 있는 달의 표시를 클릭하면 어두운 모드와 램프 모드를 전환할 수 있다.
  • 개인적으로는 조명 모드가 쉽게 보이기 때문에 앞으로 조명 모드로 작업합니다.
  • ■ 다크 모드

    ■ 램프 모드

    데이터베이스 만들기
  • 사이드바의 데이터 베이스를 선택하면 그룹의 목록을 표시합니다.
  • 집단 > 데이터베이스 > 는 모델 트리 구조에서 확인할 수 있습니다.
  • ■ Database 선택
  • 조회 편집기에서Create 데이터 베이스를 실행하여 데이터베이스를 만들 수도 있지만 GUI를 통해 데이터베이스를 만들 수도 있다.
  • 왼쪽 상단에 있는 Create>Database를 선택하면 창이 열리므로 데이터베이스 이름과 사용자를 선택하여 "Create database"를 선택합니다.
  • ■ create database

    생성 모드
  • 왼쪽 상단에 있는 Create>Schema를 선택하고 Schema name을 입력하고 "Create schema"를 선택합니다.
  • 테이블 작성
    ■ Create table
  • 도 CSV를 로드하고 테이블을 만들 수 있지만 GUI에서 테이블을 만듭니다.
  • 왼쪽 상단에 있는Create>Table을 선택하고 아래 내용을 입력하고 "Create table"을 선택하십시오.
  • Schemaa 선택
  • Table 이름 입력
  • Column name, 데이터 유형 선택
  • 3. 질의 작성 및 실행

  • 자습서: Amazon S3에서 데이터 로드를 기초로 한 테스트.
  • 데이터 다운로드 및 업로드

  • 2단계: 데이터 파일 다운로드에서 파일을 다운로드하여 자신의 계정에 업로드하는 S3.
  • ■ S3에 업로드

    스키마와 테이블을 작성합니다.

  • 참조 단계 4: 샘플 테이블 작성 작성 모드 및 테이블
  • 모드와 표는 다음과 같다.
  • 모드: ssb(성간모드 기준)
  • cascade
  • supplier
  • customer
  • dwdate
  • lineorder
  • ■ ssb모드 제작
  • 다음 조회를 실행하고 표를 작성합니다.
  • CREATE TABLE ssb.part 
    (
      p_partkey     INTEGER NOT NULL,
      p_name        VARCHAR(22) NOT NULL,
      p_mfgr        VARCHAR(6),
      p_category    VARCHAR(7) NOT NULL,
      p_brand1      VARCHAR(9) NOT NULL,
      p_color       VARCHAR(11) NOT NULL,
      p_type        VARCHAR(25) NOT NULL,
      p_size        INTEGER NOT NULL,
      p_container   VARCHAR(10) NOT NULL
    );
    
    CREATE TABLE ssb.supplier 
    (
      s_suppkey   INTEGER NOT NULL,
      s_name      VARCHAR(25) NOT NULL,
      s_address   VARCHAR(25) NOT NULL,
      s_city      VARCHAR(10) NOT NULL,
      s_nation    VARCHAR(15) NOT NULL,
      s_region    VARCHAR(12) NOT NULL,
      s_phone     VARCHAR(15) NOT NULL
    );
    
    CREATE TABLE ssb.customer 
    (
      c_custkey      INTEGER NOT NULL,
      c_name         VARCHAR(25) NOT NULL,
      c_address      VARCHAR(25) NOT NULL,
      c_city         VARCHAR(10) NOT NULL,
      c_nation       VARCHAR(15) NOT NULL,
      c_region       VARCHAR(12) NOT NULL,
      c_phone        VARCHAR(15) NOT NULL,
      c_mktsegment   VARCHAR(10) NOT NULL
    );
    
    CREATE TABLE ssb.dwdate 
    (
      d_datekey            INTEGER NOT NULL,
      d_date               VARCHAR(19) NOT NULL,
      d_dayofweek          VARCHAR(10) NOT NULL,
      d_month              VARCHAR(10) NOT NULL,
      d_year               INTEGER NOT NULL,
      d_yearmonthnum       INTEGER NOT NULL,
      d_yearmonth          VARCHAR(8) NOT NULL,
      d_daynuminweek       INTEGER NOT NULL,
      d_daynuminmonth      INTEGER NOT NULL,
      d_daynuminyear       INTEGER NOT NULL,
      d_monthnuminyear     INTEGER NOT NULL,
      d_weeknuminyear      INTEGER NOT NULL,
      d_sellingseason      VARCHAR(13) NOT NULL,
      d_lastdayinweekfl    VARCHAR(1) NOT NULL,
      d_lastdayinmonthfl   VARCHAR(1) NOT NULL,
      d_holidayfl          VARCHAR(1) NOT NULL,
      d_weekdayfl          VARCHAR(1) NOT NULL
    );
    CREATE TABLE ssb.lineorder 
    (
      lo_orderkey          INTEGER NOT NULL,
      lo_linenumber        INTEGER NOT NULL,
      lo_custkey           INTEGER NOT NULL,
      lo_partkey           INTEGER NOT NULL,
      lo_suppkey           INTEGER NOT NULL,
      lo_orderdate         INTEGER NOT NULL,
      lo_orderpriority     VARCHAR(15) NOT NULL,
      lo_shippriority      VARCHAR(1) NOT NULL,
      lo_quantity          INTEGER NOT NULL,
      lo_extendedprice     INTEGER NOT NULL,
      lo_ordertotalprice   INTEGER NOT NULL,
      lo_discount          INTEGER NOT NULL,
      lo_revenue           INTEGER NOT NULL,
      lo_supplycost        INTEGER NOT NULL,
      lo_tax               INTEGER NOT NULL,
      lo_commitdate        INTEGER NOT NULL,
      lo_shipmode          VARCHAR(10) NOT NULL
    );
    
    ■표 작성 결과

  • 질의는 쉼표 구분 기호로 연속적으로 수행됩니다.
  • 결과는 Result1~5 레이블에 표시됩니다.
  • COPY 명령을 실행합니다.
  • S3에서 COPY를 진행하는 IAM 캐릭터를 제작한다.
  • S3의 ListBucket 및 GetObject 권한이 필요합니다.
  • COPY 명령의 구문은 다음과 같다
  • S3 파일에 접두사가 지정되어 있으면 여러 파일을 병렬로 로드할 수 있습니다.
  • COPY table_name [ column_list ] FROM data_source CREDENTIALS access_credentials [options] 
    
  • COPY 명령의 샘플은 다음과 같다
  • copy table from 's3://<your-bucket-name>/load/key_prefix' 
    credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>'
    options;
    
  • COPY 실패 시 조사된 질의입니다.
  • select query, substring(filename,22,25) as filename,line_number as line, 
    substring(colname,0,12) as column, type, position as pos, substring(raw_line,0,30) as line_text,
    substring(raw_field_value,0,15) as field_text, 
    substring(err_reason,0,45) as reason
    from stl_load_errors 
    order by query desc
    limit 10;
    
  • MANIFEST 부하 샘플 사용
  • copy customer from 's3://<your-bucket-name>/load/customer-fw-manifest'
    credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>' 
    fixedwidth 'c_custkey:10, c_name:25, c_address:25, c_city:10, c_nation:15, c_region :12, c_phone:15,c_mktsegment:10'
    maxerror 10 
    acceptinvchars as '^'
    manifest;
    
  • MANIFEST는 다음과 같이 S3 경로를 씁니다.
  • ※ 자신의 물통을 교체하세요.
  • {
      "entries": [
        {"url":"s3://<my-bucket>/LoadingDataSampleFiles/customer-fw.tbl-000"},
        {"url":"s3://<my-bucket>/LoadingDataSampleFiles/customer-fw.tbl-001"},
        {"url":"s3://<my-bucket>/LoadingDataSampleFiles/customer-fw.tbl-002"},
        {"url":"s3://<my-bucket>/LoadingDataSampleFiles/customer-fw.tbl-003"},
        {"url":"s3://<my-bucket>/LoadingDataSampleFiles/customer-fw.tbl-004"},    
        {"url":"s3://<my-bucket>/LoadingDataSampleFiles/customer-fw.tbl-005"},
        {"url":"s3://<my-bucket>/LoadingDataSampleFiles/customer-fw.tbl-006"}, 
        {"url":"s3://<my-bucket>/LoadingDataSampleFiles/customer-fw.tbl-007"}
     ]
    }
    
    - 다른 영역에서 로드합니다.
  • IAM 정책에 다음 구간을 사전에 설치한다.
  • us-east-1→ap-northeast-1은 30초도 안 걸렸다.
  • copy supplier from 's3://awssampledbuswest2/ssbgz/supplier.tbl' 
    credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>' 
    delimiter '|' 
    gzip
    region 'us-west-1';
    
  • Single과 Multi의 파일 로드 차이를 확인합니다.거의 같은 건수인데 병행처리 여부가 1m 가까이 바뀌었다.
  • 실행 전에 IAM 롤러를 미리 변경합니다.
  • 싱글의 결과(14996990건, 1m 14.2s)
  • copy lineorder from 's3://awssampledb/load/lo/lineorder-single.tbl' 
    credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>' 
    gzip
    compupdate off
    region 'us-east-1';
    
  • 멀티 결과(14997610건, 11.2s)
  • copy lineorder from 's3://awssampledb/load/lo/lineorder-multi.tbl' 
    credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>' 
    gzip
    compupdate off
    region 'us-east-1';
    

    데이터베이스에서 진공 조작을 실행하고 분석하다
  • 진공 조작을 통해 삭제된 줄의 복구 구역에서 정렬 순서를 회복합니다.
  • ANALYZE 명령은 통계 메타데이터를 업데이트하여 조회 연산기가 더욱 정확한 조회 계획을 생성할 수 있도록 한다.
  • vacuum;
    analyze;
    

  • vacuum의 결과.(7.6s)


  • analyze 결과.(9m 25.3s)

  • 4. 데이터 지연 조회
  • 할애
  • 5. 질의 결과의 시각화
  • 조회를 실행하고 오른쪽 아래에 있는Chart를 사용하여 차트를 선택합니다.(이하 호떡 그림의 예)

  • 이미지를 다운로드하려면 Export를 위해 PNG 또는 JPEG를 선택합니다.


  • Save chart를 클릭해도 저장할 수 있습니다.

  • 저장된 결과는 Charts를 통해 확인할 수 있습니다.

  • 6. 팀워크와 공유
  • 조회 편집기의 오른쪽 위 모서리에 있는 Save를 통해 저장할 수 있습니다.
  • 저장된 질의는 Queries를 통해 확인할 수 있습니다.

  • 참고 자료
    https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/query-editor-v2-team.html
    https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/tutorial-loading-data.html

    좋은 웹페이지 즐겨찾기