가상 데이터를 생성하여 BI 대시보드를 만들어 보았습니다.

16401 단어 AdventCalendar2021
이 글은 레코드 제작사의 17일째 글이다.
개시하다
처음 뵙겠습니다. 저는 새로 졸업한 첫해의 엔지니어 시드니입니다.
음악.×데이터 분석을 전문으로 하는 단체 소속으로 현재 음반사를 대상으로 하는 보고 서비스 개발에서 BI 대시보드 제작을 담당하고 있다.
리코초크에서는 음악 발표를 통해 상점에서 구매한 실제 성적과 배포 서비스로 곡을 재생한 실제 성적 데이터를 집계해 콘텐츠 보유자(음반사 등)에게 제공하기 위해 데이터를 열람할 수 있는 웹 서비스를 개발하고 있다.실제 데이터를 도표와 표 형식으로 통합하기 위해 자동으로 업데이트되어 제공되며, Amazon QuickSight(BI 도구)를 사용하여 BI 대시보드를 열람할 수 있습니다.
이 서비스는 개발 과정에서 검증 환경에서 데이터가 표시되는 방식을 확인하기 위해 콘텐츠 유지기와 대시보드 이미지를 공유하기 위해 모델을 제작했다.모델을 만드는 데는 데이터가 필요하지만 실제 실적 데이터는 정보 유출의 위험과 도덕적 관점에서 이용해서는 안 되기 때문에 가상 데이터를 이용해야 한다.이를 위해 가상 데이터를 사용한 대시보드(추후 가상 대시보드)가 제작돼 모델로 사용된다.
이 글은 상술한 가상 계기판의 제작 절차를 총결하였다.
가상 대시보드 작성 프로세스
  • 위조 데이터 제작
  • 위조 데이터 생성
  • 위조 데이터 CSV 파일화
  • 계기판 제작
  • 데이터 세트에 위조 데이터 준비
  • 데이터 세트에 따라 표 또는 도표를 작성
  • 테이블과 차트를 대시보드로 공개
  • 1 . 가상 데이터 생성
    이번 위조 데이터 제작은 프로그래밍 언어인 파이톤을 사용했다.
    개발 환경
    Python 3.9.7
    Faker를 사용하여 가상 데이터를 생성하기로 결정했습니다.
    페이커는 위조 데이터를 생성하는 파이톤의 패키지입니다.
    페이커를 사용하면 이름, 주소, 전화번호, 회사명, 직업과 광범위한 위조 데이터를 무작위로 생성할 수 있다.
    자세한 내용은 확인하십시오Faker 문서.
    가상 데이터 생성
    우선 페이커를 가져와 @dataclass에 이번에 만든 위조 데이터의 데이터 형식을 명기합니다.class AlbumData: 위조 앨범 메타 정보class RawData: 앨범 판매 실적 데이터
    from dataclasses import dataclass
    
    @dataclass
    class AlbumData:
        album_title: str // アルバムタイトル
        artist_name: str // アーティスト名
        ch_number: str // レコード会社の登録番号
        company_name: str // レコード会社名
        album_price: int = 2000 // アルバムの値段
    
    @dataclass
    class RawData:
        artist_name: str // アーティスト名 
        title: str // タイトル
        ch_number: str // レコード会社の登録番号
        company_name: str // レコード会社名
        report_month: str // 対象月
        content_type: str // 販売コンテンツタイプ
        sales_price: int // アルバム販売利益
        sales_count: int // アルバム販売数
    
    이제 가상 데이터가 생성됩니다.
    함수generate_dummy_album()로 가상 데이터의 언어를 지정한 후 단어를 생성합니다.Faker("ja_JP"): 일본어 데이터 대상fake.words(): 단어 목록 생성
    from faker import Faker
    
    def generate_dummy_album():
        fake = Faker("ja_JP")
        display_album_title = "".join(fake.words())
    
        dummy_album = AlbumData(
            album_title=display_album_title,
            artist_name=fake.user_name(),
            ch_number="dummy",
            company_name="DUMMY",
            album_price=2000,
        )
        return dummy_album
    
    이어 매달 앨범 판매 실적 데이터를 생성한다.
    함수generate_dummy_album()를 토대로 대상자 종료 월까지 앨범의 판매 실적 데이터를 생성한다.from_dt: 판매 실적 데이터의 대상 시작 월(데이터 유형)to_dt: 판매 실적 데이터의 대상 종료 월(데이터 유형)
    import random
    from dataclasses import asdict, fields
    
    import pandas as pd
    from dateutil.relativedelta import relativedelta
    
    df = pd.DataFrame(columns=[x.name for x in fields(RawData)])
    target_date = from_dt
    dummy_album = generate_dummy_album()
    
    while from_dt <= target_date <= to_dt:
        sales_count = random.randint(1, 100000)
        tmp_report = RawData(
            artist_name=dummy_album.artist_name,
            title=dummy_album.album_title,
            ch_number="dummy",
            company_name="DUMMY",
            report_month=target_date.strftime("%Y%m"),
            content_type="album",
            sales_price=sales_count * dummy_album.album_price,
            sales_count=sales_count,
        )
        df = df.append(asdict(tmp_report), ignore_index=True)
        target_date = target_date + relativedelta(months=1)
    
    가상 데이터 CSV 파일화
    마지막으로 df.to_csv() 에서 df의 내용을 CSV 파일에 쓰고 저장합니다.
    df.to_csv([ファイル名].csv, index=False)
    
    CSV 파일에 다음 데이터가 기록된 경우 위조 데이터의 생성이 완료됩니다.
    artist_name,title,ch_code,company_name,report_month,content_type,sales_price,sales_count
    琥珀,マリン,dummy,DUMMY,202104,album,565528000,282764
    琥珀,学生,dummy,DUMMY,202104,album,454544000,227272
    琥珀,建築中世合計,dummy,DUMMY,202104,album,321065000,128426
    琥珀,意図動物リニア,dummy,DUMMY,202104,album,25209750,100839
    琥珀,野球,dummy,DUMMY,202104,album,58258000,29129
    ...
    
    2 . 대시보드 생성
    가상 데이터를 기반으로 Amazon QuickSight로 대시보드를 제작합니다.
    이번에는 CSV 파일을 업로드하기 위해 [파일 업로드]를 선택합니다.
    데이터 세트에 가상 데이터 준비
    먼저 제작된 가상 데이터를 Amazon QuickSight에 업로드합니다.
    파일 업로드

    참고 자료
    데이터 세트 만들기
    가상 데이터에 근거하여 표 또는 도표를 만들다
    가상 데이터를 업로드할 수 있다면, 다음에 표와 도표를 만듭니다.
    Amazon QuickSight에서는 분석(Anazon QuickSight)을 사용하여 테이블과 차트를 작성합니다.
    분석 페이지

    분석에서 사용할 표나 도표 유형을 선택하고 사용할 데이터를 선택하며 제목 등 세부 사항을 설정합니다.
    그리고 데이터를 표시하고 싶은 모양으로 정리하면 완성된 부분은 계기판이 된다.
    데이터를 표나 도표로 정리하다

    참고 자료
    분석 생성하기
    이미지 만들기
    표와 도표를 대시보드로 공개하다
    분석의 "공유"에서 "대시보드 공개"를 클릭하고 이름을 입력한 후 "대시보드 공개"를 클릭합니다.

    그림에서 보듯이 계기판이 공개될 수 있다면 가짜 계기판 제작이 끝난다.

    곤란한 곳
    가상 데이터 수만 건을 생성한 뒤 학대, 피 묻기 등 앨범 제목에 좋지 않은 부정적인 단어들을 담았다.
    직접 사용하면 콘텐츠 보유자에게 모형을 보여줄 때 인상도 좋지 않다.
    그래서 우리는 소극적인 단어의 목록(앞으로 소극적인 단어 목록이라고 부른다)을 수집하고 열거된 소극적인 단어를 배제하는 데 공을 들였다.
    구체적으로 지금까지fake.words() 부정적인 단어가 포함된 단어 목록이 생성됐기 때문에 부정적인 단어 목록에 있는 단어를 제외한 함수get_not_negative_words를 만들어 이 함수를 사용했다.
    from faker import Faker
    
    negative_words = [
        "虐待",
        "怒り",
        "犯罪者",
        "血まみれの",
        "助けて",
        "ダニ",
    ]
    
    def is_negative_word(word: str):
        return word in negative_words
    
    def get_not_negative_words(fake: Faker, nb: int):
        words = []
        while len(words) != nb:
            target_word = fake.word()
            if not is_negative_word(target_word):
                words.append(target_word)
        return words
    
    사용에 관한 포장 및 서비스
    페이커는 부정적인 단어가 나오기는 어렵지만, 언어를 지정한 후 호출 방법을 사용하면 가상 데이터를 간단하게 생성할 수 있다는 점에서 편리하다고 생각한다.
    또 다양한 위조 데이터를 생성할 수 있기 때문에 모든 업계에서 활용할 수 있는 패키지라고 생각한다.
    Amazon QuickSight는 디자인이 간단하고 조작성이 좋은 것 같습니다.
    버튼 하나만 누르면 뭘 할지 직관적으로 이해하기 때문에 처음 접촉한 사람도 쉽게 이용할 수 있다.
    끝말
    이번에는 위조 데이터의 생성부터 BI 대시보드 제작까지 위조 데이터가 널리 활용될 수 있다는 것을 배웠다.
    이와 함께 이번에 사용한 페이커, 파이톤, 아마존 퀵시트에 대한 이해도 깊어졌다.
    가상 데이터를 사용하는 BI 대시보드는 이번처럼 환경을 모델화해야 하는 장면에서 유용합니다.
    이 기사의 내용이 여러분에게 도움이 되었으면 좋겠습니다.
    끝까지 읽어주셔서 감사합니다.
    내일레코드 제작사은 18일째인'스와프 프로토콜(protocol) 사용법'이다.기대해주세요!
    참고 자료
    Faker 문서
    데이터 세트 만들기
    분석 생성하기
    이미지 만들기
    이 기사는 RecoChoku의 엔지니어 블로그를 옮긴 기사다.

    좋은 웹페이지 즐겨찾기