[태그:] qlik

  • Qlik 전 값 찾기

    속도, 시각을 알 경우, 가속도를 구해야 한다. peek 함수가 메모리에 저장된 현재 행 바로 전 값(-1)을 찾는다. 메모리에서 찾으므로 load 해야 한다.

    다음 속도, 시각 테이블을 Sheet1 엑셀 파일로 가지고 있다.

    시각	속도
    0.002	10
    0.004	10.5
    0.006	11
    0.008	11.5
    0.01	12
    0.012	12.5
    0.014	13
    0.016	13.5

    아래는 qlik이 자동으로 만든 코드이다. qlik을 잘 알면 더 깔끔하게 사용할 수 있으나, 지저분하지만 내 시간을 적게 사용한 아래도 괜찮다.

    [Sheet1]:
    LOAD
    	[시각],
    	[속도]
     FROM [lib://가속도분석/테스트.xlsx]
    (ooxml, embedded labels, table is Sheet1);

    사용자 지정 script를 추가한다. peek를 적용할 경우, order by를 명시해야 한다. 엄한 값을 갖는 경우도 있다.

    가속도tmp:
    
    load
    [시각] as [가속도.시각],
    [속도] as [가속도.속도],
    peek([가속도.속도]) as [가속도.전속도],
    peek([가속도.시각]) as [가속도.전시각]
    
    Resident [Sheet1]
    order by [시각] asc;
    
    drop Table [Sheet1];
    
    
    가속도:
    load
    [가속도.시각],
    [가속도.속도],
    ([가속도.전속도]/[가속도.전시각]) as [가속도.가속도]
    
    Resident [가속도tmp];
    
    drop Table [가속도tmp];

    데이터 뷰를 보면 다음 그림과 같다.

    그래프를 보면 예상대로 나온다.

  • Qlik으로 수입지출 분석

    새로배운 Qlik으로 작년 수입/지출을 분석했다. 뱅크샐러드를 사용하면 1년간 수입/지출을 파일로 받을 수 있다. 인터넷에서 제공하고 있는 일별 주유가격과 내가 과거 사용한 주유비용을 보면 아래와 같다.

    • 2019년 2월에 가장 많이 소비했다.
    • 평균기름 가격이 다행히 19년 2월에 가장 쌌다.
    • 19년 2월 자동차 운행이 가장 많았다. 공사로 맨날 찰 끌고 다닌다는 듯.
    • 1년동안 340,000원 사용했다. 자동차 가동율이 너무 떨어졌다.
    • 1,200 원/리터, 15km/리터로 계산하면 약 일년에 4,275km 이동.
    • 수입: 월급 외 별도 수입이 거의 없음.
    • 지출의 23%가 카드로 결제 됨. 거의 생활비.
    • 지출의 22%를 대출 갚는데 사용.
    • 지출의 11%를 보험비로 지출.
    • 수입 – 지출 = -4,000,000원. 대출을 마이너스로 땡겨 갚았다.

    일단 데이터를 로딩하고, Qlik에서 항목을 수정했다.

    [과거 기름값]:
    LOAD
    	[번호],
    	[지역],
    	[상호],
    	[주소],
        [기간],
       	MakeDate(left([기간],4),mid([기간],5,2),right([기간],2)) as [날짜],
    	[상표],
    	[경유]
     FROM [lib://금융/과거_판매가격(주유소)20180308-20190308.csv]
    (txt, codepage is 949, embedded labels, delimiter is ',', msq);
    [필터된 경유]:
         load [경유],
         year([날짜])&'.'&month([날짜]) as [연월]
        Resident [과거 기름값];
    
    drop Table [과거 기름값];

    기름가격 날자가 “.” 로 구분되어 굳이 이렇게 구분해야 Qlik에서 인식했다. 추가 블럭에 이리 로딩한 [과거 기름값]을 부르고, 날자 포멧으로 수정했다. 연관성을 없애기 위해 [과거 기름값]을 지웠다.

    뱅크 샐러드에서 테이블을 부르면 카테고리가 대략 맞지만, qlik으로 원하는 부분을 수정하기 힘들다. 강력한 정규식을 지원하는 python pandas를 사용했다.

    #_*_ coding: utf-8 _*_
    
    import pandas as pd
    import numpy
    
    #Pandas로 업데이트
    df = pd.read_csv("./test.csv")
    
    #정규 표현식으로 다시 정리.
    conditions = [
            (df["내용"].str.contains("?????") & (df["대분류"] == "미분류")),
            (df["내용"].str.contains("성과급지급") & (df["대분류"] == "미분류")),
            (df["내용"].str.contains('\d{3}-\d{4}') & (df["대분류"] == "미분류")),
            (df["내용"].str.contains('마이너스|??|월급통장|??') & (df["대분류"] == "미분류")),
            (df["내용"].str.contains('????') & (df[">대분류"] == "미분류"))
            ]
    
    choices = ["급여","급여","보험","대출","기타수입"]
    
    df["급여"]=numpy.select(conditions, choices, default = df["대분류"])
    
    df.to_csv("./20190313.csv",index=True)

    pandas를 잘 사용하지 못해 시간을 많이 썼다. 그러나 qlik을 배워서 함보다 낫다.