dbt를 Materialize 및 Redpanda와 함께 사용하는 방법

소개하다.


이것은 Materialize을 사용한 독립된 시연이다.
이 프레젠테이션에서는 Materialize와 함께 dbt을 사용하는 방법을 보여 줍니다.
이 프레젠테이션에 대해 우리는 사용자가 프레젠테이션 사이트에 남긴 평론을 감시하고dbt를 사용하여 우리의 업무 논리를 모델링할 것이다. 예를 들어 좋지 않은 평론을 남긴 중요한 사용자 목록을 얻는 것이다.그 다음에 우리는 이러한 데이터를 어떻게 사용하여 표시된 사용자를 잠재적으로 접촉하고 우리의 사이트 체험을 개선하는지 탐색할 것이다.

선결 조건


시작하기 전에 Docker 및 Docker Compose가 설치되어 있는지 확인해야 합니다.
Docker를 설치하려면 다음 절차를 따르십시오.

Installing Docker


또한 dbt(v0.18.1+)이 설치되어 있는지 확인해야 합니다.

Installing dbt


너는 이 GitHub repository here에서 이 프레젠테이션 파일을 찾을 수 있다.

개술


위의 그림과 같이 다음과 같은 구성 요소가 있습니다.
  • 은 끊임없이 댓글과 사용자를 생성하는 시뮬레이션 서비스이다.
  • 리뷰 및 사용자는 MySQL 데이터베이스에 저장됩니다.
  • 데이터베이스를 쓸 때 Debezium은 MySQL 흐름에서 Redpanda 테마로 변경 사항을 전송합니다.
  • 그리고 이 붉은 판다 테마를 Materialize에 직접 흡수합니다.
  • 이후, 우리는dbt를 사용하여 데이터에 대한 변환을 정의하고, 나쁜 평론을 남긴 모든 VIP 사용자를 열거하는 모델을 만들었습니다.
  • 잠시 후 Metabase와 같은 BI 도구에서 데이터를 시각화할 수 있습니다.
  • As a side note here, you would be perfectly fine using Kafka instead of Redpanda. I just like the simplicity that Redpanda brings to the table, as you can run a single Redpanda instance instead of all of the Kafka components.


    실행 프레젠테이션


    먼저 클론 저장소부터 시작합니다.
    git clone https://github.com/bobbyiliev/materialize-tutorials.git
    
    그런 다음 다음 다음 디렉토리에 액세스할 수 있습니다.
    cd materialize-tutorials/mz-user-reviews-dbt-demo
    
    Redpanda 컨테이너를 실행하는 것부터 시작하겠습니다.
    docker-compose up -d redpanda
    
    이미지를 구성하려면 다음과 같이 하십시오.
    docker-compose build
    
    그런 다음 다른 Docker 이미지를 모두 드래그합니다.
    docker-compose pull
    
    마지막으로 모든 서비스를 시작합니다.
    docker-compose up -d
    
    Materialize CLI를 시작하려면 다음 명령을 실행합니다.
    docker-compose run mzcli
    

    This is just a shortcut to a Docker container with a compatible CLI pre-installed; if you already have psql installed, you could instead connect to the running Materialize instance using that: psql -U materialize -h localhost -p 6875 materialize.


    프레젠테이션이 실행되면 시뮬레이션 서비스가 논평과 사용자를 생성하기 시작합니다.

    dbt 설정 준비


    먼저 dbt-materialize 플러그인을 설치해야 합니다.
    python3 -m venv dbt-venv
    source dbt-venv/bin/activate
    pip install dbt-materialize
    
    그런 다음 가장 좋아하는 텍스트 편집기를 사용하여 ~/.dbt/project.yml 파일을 열고 다음 줄을 추가합니다.
    user_reviews:
      outputs:
        dev:
          type: materialize
          threads: 1
          host: localhost
          port: 6875
          user: materialize
          pass: pass
          dbname: materialize
          schema: analytics
    
      target: dev
    
    그런 다음 Materialize 컨테이너와 제대로 연결되었는지 확인하려면 다음을 실행하십시오.
    dbt debug
    
    마지막으로, 우리는 dbt를 사용하여 3개의 Redpanda/Kafka 테마 위에 물적 보기를 만들 수 있습니다.이렇게 하려면 다음 dbt 명령만 실행하면 됩니다.
    dbt run
    
    이 명령은 프로젝트 models 디렉토리에 있는 모델 파일에서 실행 가능한 SQL을 생성하고 대상 데이터베이스에서 SQL을 실행하여 물적 보기를 만듭니다.

    Note: If you installed dbt-materialize in a virtual environment, make sure it's activated. If you don't have it installed, please revisit the setup above.


    마지막으로 dbt 테스트를 실행할 수 있습니다.
    dbt test
    

    물적 보기와 원본을 만들었는지 확인하기


    축하합니다!dbt를 사용하여 Materialize에 물적 보기를 만들었습니다.
    다음 문을 실행하여 reviews 소스의 열을 확인할 수 있습니다.
    SHOW COLUMNS FROM analytics.reviews_raw;
    
    Materialize가 Redpanda registry에서 메시지 모드를 추출할 때 각 속성에 사용할 열 유형을 알 수 있습니다.
         name      | nullable |   type
    ---------------+----------+-----------
     id            | f        | bigint
     user_id       | t        | bigint
     review_text   | t        | text
     review_rating | t        | integer
     created_at    | t        | text
     updated_at    | t        | timestamp
    
    Materialize에 연결된 psql 셸에서 뷰가 생성되었는지 확인할 수 있습니다.
    SHOW VIEWS FROM analytics;
    
    출력:
            name
    --------------------
     badreviews
     vipusers
     vipusersbadreviews
    
    또한 다음 쿼리를 실행하여 Redpanda에서 데이터를 추출했는지 확인할 수 있습니다.
    SELECT COUNT(*) FROM analytics.vipusersbadreviews;
    
    쿼리를 실행할 때마다 결과가 달라지는 것을 볼 수 있습니다. 이는 데이터가 dbt run을 다시 실행할 필요가 없이 증량으로 업데이트된다는 것을 의미합니다.

    dbt 문서 생성


    물화 보기를 만들면dbt 문서를 만들 수 있습니다.이렇게 하려면 다음 명령을 실행합니다.
    dbt docs generate
    
    그런 다음 다음 다음 명령을 실행하여 문서에 서비스를 제공할 수 있습니다.
    dbt docs serve
    
    그런 다음 문서를 보려면 http://localhost:8080/dbt/docs/으로 전화하십시오.거기에 생성된 모든 보기의 목록이 있습니다. 그 중 하나를 누르면 생성된 SQL을 볼 수 있습니다.뷰 간의 관계를 보여주는 괜찮은 계보도 있습니다.

    메타 데이터베이스


    Metabase 인스턴스를 액세스하려면 로컬에서 실행 중인 경우 http://localhost:3030을, 서버에서 실행 중인 경우 http://your_server_ip:3030을 참조하십시오.그리고 다음 순서에 따라 원 데이터베이스 설정을 완성한다.
    Materialize는 공식 PostgreSQL 커넥터를 Metabase와 통합합니다.Materialize 데이터베이스에 연결하려면 다음 연결 속성을 지정합니다.
    마당
    가치관
    데이터베이스
    PostgreSQL
    성함
    사용자 의견
    주인.
    구체화
    항구.
    6875
    데이터베이스 이름
    구체화
    데이터베이스 사용자 이름
    구체화
    데이터베이스 암호
    비우다
    준비가 되면 표준 PostgreSQL 데이터베이스를 사용하는 것처럼 데이터를 시각화할 수 있습니다.

    데모 중지


    모든 서비스를 중지하려면 다음 명령을 실행합니다.
    docker-compose down
    

    결론


    보시다시피, 이것은Materialize와dbt를 어떻게 결합하여 사용하는지 간단한 예입니다.Materialize를 사용하여 다양한 소스에서 데이터를 받아서 다양한 목적지로 전송할 수 있습니다.
    dbt 및 Materialize에 대한 자세한 내용은 다음 문서를 참조하십시오.
  • dbt + Materialize demo: Running dbt’s jaffle_shop with Materialize
  • dbt + Materialize: streaming Wikipedia data demo
  • Materialize and dbt getting started guide
  • 또한, 이 동영상을 꼭 보시고 간단한 절차를 통해 대량에서 흐르는 미디어(w/Emily Hawkins & Arjun Narayan)까지 어떻게 하는지 알아보세요.

    유용한 리소스:

  • CREATE SOURCE
  • CREATE MATERIALIZED VIEW
  • SELECT
  • 좋은 웹페이지 즐겨찾기