<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>haeun_71.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Thu, 02 May 2024 10:27:11 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>haeun_71.log</title>
            <url>https://velog.velcdn.com/images/haeun_71/profile/f9d23842-3440-40a9-9cc4-cb6aff0efa54/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. haeun_71.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/haeun_71" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[2024.5.2] SQL_문제풀이1]]></title>
            <link>https://velog.io/@haeun_71/2024.5.2-SQL%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B41</link>
            <guid>https://velog.io/@haeun_71/2024.5.2-SQL%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B41</guid>
            <pubDate>Thu, 02 May 2024 10:27:11 GMT</pubDate>
            <description><![CDATA[<p>문제 1.  AWS RDS (MySQL) 에 프로젝트 관련 Database 를 생성하고, 접근 가능한 사용자 계정을 생성하세요. </p>
<ul>
<li>Database Name : oneday</li>
<li>User Name / Password : oneday / 1234</li>
</ul>
<p>제출 1.</p>
<ul>
<li>Database 생성문 조회 결과 : SHOW CREATE DATABASE oneday; <ul>
<li>사용자 권한 확인 결과 : SHOW GRANT FOR ‘oneday’@‘%’</li>
</ul>
</li>
</ul>
<pre><code># oneday 라는 이름의 DATABASE 만들기 #한글과 이모티콘 포함
CREATE DATABASE oneday DEFAULT CHARACTER SET utf8mb4;

# oneday라는 이름의 유저 만들기 # % = 외부에서 접근한다는 뜻
CREATE USER &#39;oneday&#39;@&#39;%&#39; identified by &#39;1234&#39;;

# 접근 가능 권한 부여
GRANT ALL ON oneday.* to &#39;oneday&#39;@&#39;%&#39;;

# 확인
SHOW GRANTS FOR &#39;oneday&#39;@&#39;%&#39;;
</code></pre><p>문제 2.  스타벅스 이디야 데이터를 저장할 테이블을 다음의 구조로 생성하세요.
<img src="https://velog.velcdn.com/images/haeun_71/post/1a069c4e-deb8-438f-845e-a7c0eb8a1e48/image.png" alt=""></p>
<pre><code># DATABASE 사용
use oneday;

# TABLE 생성 1
CREATE TABLE COFFEE_BRAND
    -&gt; (
    -&gt;  id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -&gt;  name varchar(10)
    -&gt; )
    -&gt; ;

# 확인
DESC COFFEE_BRAND;

mysql&gt; DESC COFFEE_BRAND;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int         | NO   | PRI | NULL    | auto_increment |
| name  | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+


# TABLE 생성 2
# 위도경도 양식 참고
 CREATE TABLE COFFEE_STORE
    -&gt; (
    -&gt;  id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -&gt;  brand int NOT NULL,
    -&gt;  name varchar(32) NOT NULL,
    -&gt;  gu_name varchar(5) NOT NULL,
    -&gt;  address varchar(128) NOT NULL,
    -&gt;  lat decimal(16,14) NOT NULL,
    -&gt;  lng decimal(17,14) NOT NULL,
    -&gt;  FOREIGN KEY (brand) REFERENCES COFFEE_BRAND(id)
    -&gt; );

# 확인
DESC COFFEE_STORE;
+---------+----------------+------+-----+---------+----------------+
| Field   | Type           | Null | Key | Default | Extra
 |
+---------+----------------+------+-----+---------+----------------+
| id      | int            | NO   | PRI | NULL    | auto_increment |
| brand   | int            | NO   | MUL | NULL    |
 |
| name    | varchar(32)    | NO   |     | NULL    |
 |
| gu_name | varchar(5)     | NO   |     | NULL    |
 |
| address | varchar(128)   | NO   |     | NULL    |
 |
| lat     | decimal(16,14) | NO   |     | NULL    |
 |
| lng     | decimal(17,14) | NO   |     | NULL    |
 |
+---------+----------------+------+-----+---------+----------------+
</code></pre><p>문제 3. Python 코드로 COFFEE_BRAND 데이터를 다음과 같이 입력하고 확인하세요.
<img src="https://velog.velcdn.com/images/haeun_71/post/caf2864b-cbc1-4612-98e5-85b08f0cede7/image.png" alt=""></p>
<p>제출 2.</p>
<ul>
<li>Table 생성 결과 : Desc COFFEE_BRAND; Desc COFFEE_STORE; 
제출 3.</li>
<li>COFFEE_BRAND 조회 결과 : SELECT * FROM COFFEE_BRAND;</li>
</ul>
<pre><code># VSCode에서 진행
import mysql.connector

conn = mysql.connector.connect(
    host= &#39;localhost&#39;,
    user= &#39;oneday&#39;, 
    password= &#39;1234&#39;,
    database= &#39;oneday&#39;


#select 할거기 때문에 buffer 줌
cursor = conn.cursor(buffered=True) 


#제대로 됐는지 데이터 가져와서 확인
cursor.execute(&#39;DESC COFFEE_BRAND&#39;)
result = cursor.fetchall()

for row in result:
    print(row)


# 확인
(&#39;id&#39;, &#39;int&#39;, &#39;NO&#39;, &#39;PRI&#39;, None, &#39;auto_increment&#39;)
(&#39;name&#39;, &#39;varchar(10)&#39;, &#39;YES&#39;, &#39;&#39;, None, &#39;&#39;)
)


# 미션수행
cursor.execute(&quot;INSERT INTO COFFEE_BRAND (name) VALUES (&#39;STARBUCKS&#39;), (&#39;EDIYA&#39;)&quot;)


# select 로 확인
cursor.execute(&#39;SELECT * FROM COFFEE_BRAND&#39;)
result = cursor.fetchall()

for row in result:
    print(row)


# 결과
(1, &#39;STARBUCKS&#39;)
(2, &#39;EDIYA&#39;)
</code></pre><p>문제 4. 스타벅스 페이지에 접근하는 코드에서 팝업창이 없는 경우, 팝업창을 닫는 코드에서 에러가 발생합니다. 예외처리 해서 에러 
메시지를 출력하고 실행이 중단되지 않도록 수정해주세요.</p>
<pre><code># 기존
# driver.find_element_by_css_selector(&#39;.holiday_notice_close a&#39;).click()


# 팝업창 닫기 오류코드 수정

from selenium.common.exceptions import NoSuchElementException

try: #팝업이 있는 경우
    driver.find_element_by_css_selector(&#39;.holiday_notice_close a&#39;).click()

#없는 경우
except NoSuchElementException as e:
    print(e)
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[24.04.19 실습_주유소데이터분석]]></title>
            <link>https://velog.io/@haeun_71/24.04.19-%EC%8B%A4%EC%8A%B5%EC%A3%BC%EC%9C%A0%EC%86%8C%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@haeun_71/24.04.19-%EC%8B%A4%EC%8A%B5%EC%A3%BC%EC%9C%A0%EC%86%8C%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D</guid>
            <pubDate>Fri, 19 Apr 2024 11:10:14 GMT</pubDate>
            <description><![CDATA[<h1 id="1-페이지-접근">1. 페이지 접근</h1>
<pre><code>url = &#39;https://www.opinet.co.kr/searRgSelect.do&#39;
driver = webdriver.Chrome(&quot;../driver/chromedriver.exe&quot;)
driver.get(url)</code></pre><h1 id="2-서울-고정">2. 서울 고정</h1>
<pre><code>seoul = driver.find_element_by_css_selector(&#39;#SIDO_NM0 &gt; option:nth-child(2)&#39;)
seoul.click()
</code></pre><h1 id="3-구별-선택">3. 구별 선택</h1>
<pre><code>gu_list_raw = driver.find_element_by_css_selector(&#39;#SIGUNGU_NM0&#39;) #부모태그
gu_list = gu_list_raw.find_elements_by_css_selector(&#39;option&#39;) 
gu_names = [option.get_attribute(&#39;value&#39;) for option in gu_list if option.get_attribute(&#39;value&#39;)] #if문은 공백제거역할
</code></pre><pre><code>import pandas as pd #최종저장
import time
import googlemaps

gmaps_key = &quot;AIzaSyC-aSVFR4qL3Jphc-MVw4Nmv_5YkjzQ7_k&quot;
gmaps = googlemaps.Client(key=gmaps_key)

datas = []

#전체 구 가져오고, 개수에 맞게끔 순환
for i in range(len(gu_names)):
    gu_selecter = f&#39;#SIGUNGU_NM0 &gt; option:nth-child({i+2})&#39;
    driver.find_element_by_css_selector(gu_selecter).click()
    station_items = driver.find_elements_by_css_selector(&#39;#body1 &gt; tr&#39;) # 주유소 목록

    for idx in range(len(station_items)):
        detail_selector = f&#39;#body1 &gt; tr:nth-child({idx+1}) &gt; td.rlist &gt; a&#39;
        driver.find_element_by_css_selector(detail_selector).click()
        #title = driver.find_element_by_css_selector(&#39;.header #os_nm&#39;).get_attribute(&#39;innerText&#39;) 
        #print(f&#39;{v} 주유소 이름: &#39;, title)
        #time.sleep(0.5)
        # 메인 데이터 수집

        name = driver.find_element_by_css_selector(&#39;.header #os_nm&#39;).get_attribute(&#39;innerText&#39;)
        gasoline = driver.find_element_by_css_selector(&#39;#b027_p&#39;).get_attribute(&#39;innerText&#39;)
        diesel = driver.find_element_by_css_selector(&#39;#d047_p&#39;).get_attribute(&#39;innerText&#39;)
        address = driver.find_element_by_css_selector(&#39;#rd_addr&#39;).get_attribute(&#39;innerText&#39;)
        brand = driver.find_element_by_css_selector(&#39;#poll_div_nm&#39;).get_attribute(&#39;innerText&#39;)
        cwsh_yn = &#39;N&#39; if &#39;_off&#39; in driver.find_element_by_css_selector(&#39;.service #cwsh_yn&#39;).get_attribute(&#39;src&#39;).split(&#39;/&#39;)[-1] else &#39;Y&#39;
        lpg_yn = &#39;N&#39; if &#39;_off&#39; in driver.find_element_by_css_selector(&#39;.service #lpg_yn&#39;).get_attribute(&#39;src&#39;).split(&#39;/&#39;)[-1] else &#39;Y&#39;
        maint_yn = &#39;N&#39; if &#39;_off&#39; in driver.find_element_by_css_selector(&#39;.service #maint_yn&#39;).get_attribute(&#39;src&#39;).split(&#39;/&#39;)[-1] else &#39;Y&#39;
        cvs_yn = &#39;N&#39; if &#39;_off&#39; in driver.find_element_by_css_selector(&#39;.service #cvs_yn&#39;).get_attribute(&#39;src&#39;).split(&#39;/&#39;)[-1] else &#39;Y&#39;
        sel24_yn = &#39;N&#39; if &#39;_off&#39; in driver.find_element_by_css_selector(&#39;.service #sel24_yn&#39;).get_attribute(&#39;src&#39;).split(&#39;/&#39;)[-1] else &#39;Y&#39;

        try: 
            driver.find_element_by_css_selector(&#39;#self_icon&#39;).get_attribute(&#39;alt&#39;)
            is_self = &#39;Y&#39;

        except:
            is_self = &#39;N&#39;


        # 구, 위도, 경도 한꺼번에 하겠음. sql할 때 한 코드안에 있어야 편함
        address = driver.find_element_by_css_selector(&#39;#rd_addr&#39;).get_attribute(&#39;innerText&#39;)

        #gu
        gu = address.split()[1]

        #lat, lng #주소값으로 검색함
        tmp = gmaps.geocode(address, language=&#39;ko&#39;) 
        lat = tmp[0].get(&#39;geometry&#39;)[&#39;location&#39;][&#39;lat&#39;]
        lng = tmp[0].get(&#39;geometry&#39;)[&#39;location&#39;][&#39;lng&#39;]

        datas.append({
            &#39;name&#39;: name,
            &#39;address&#39;: address,
            &#39;brand&#39;: brand,
            &#39;is_self&#39;: is_self,
            &#39;gasoline&#39;: gasoline,
            &#39;diesel&#39;: diesel,
            &#39;car_wash&#39;: cwsh_yn,
            &#39;charging_station&#39;: lpg_yn,
            &#39;car_maintenance&#39;: maint_yn,
            &#39;convenience_store&#39;: cvs_yn,
            &#39;24_hour&#39;: sel24_yn,
            &#39;gu&#39;: gu,
            &#39;lat&#39;: lat,
            &#39;lng&#39;: lng
        }) #위에서 변수로 찍어주고, 밑에서 이렇게 써주는게 유지보수가 편함. 위에서만 수정하면 반영됨

        time.sleep(0.2)
    time.sleep(0.5)

driver.quit()
df = pd.DataFrame(datas)
df.tail()</code></pre><pre><code>df.info()</code></pre><h1 id="csv-파일로-저장">csv 파일로 저장</h1>
<pre><code>import datetime
now = datetime.datetime.now()
nowDate = now.strftime(&#39;%Y%m%d&#39;)

df.to_csv(f&#39;./oilstation_oneday_{nowDate}.csv&#39;, encoding=&#39;utf-8&#39;)</code></pre><h1 id="csv-파일-읽기">csv 파일 읽기</h1>
<h4 id="thousand-로-하면-를-지우고-데이터타입을-int타입으로-인식함">thousand=&#39;,&#39; 로 하면 ,를 지우고 데이터타입을 int타입으로 인식함</h4>
<pre><code>stations = pd.read_csv(&#39;./oilstation_oneday_20240419.csv&#39;, encoding=&#39;utf-8&#39;, thousands=&#39;,&#39;, index_col=0)
stations</code></pre><h1 id="3-주유소-정보-시각화">3. 주유소 정보 시각화</h1>
<h3 id="한글-설정">한글 설정</h3>
<pre><code>import matplotlib.pyplot as plt
import seaborn as sns
import platform
from matplotlib import font_manager, rc

get_ipython().run_line_magic(&quot;matplotlib&quot;, &quot;inline&quot;)

f_path = r&quot;C:\Windows\Fonts\NanumGothic.ttf&quot; #tab
font_manager.FontProperties(fname=f_path).get_name()

rc(&quot;font&quot;, family=&quot;NanumGothic&quot;)</code></pre><h3 id="휘발유를-boxplot으로-그리기seaborn-이용">휘발유를 boxplot으로 그리기(seaborn 이용)</h3>
<pre><code>plt.figure(figsize=(12, 8))
sns.boxplot(x=&#39;is_self&#39;, y=&#39;gasoline&#39;, data=stations, palette=&#39;Set1&#39;)
plt.grid(True)
plt.show()</code></pre><h3 id="휘발유-브랜드-별-비교">휘발유 브랜드 별 비교</h3>
<pre><code>plt.figure(figsize=(12, 8))
sns.boxplot(x=&#39;brand&#39;, y=&#39;gasoline&#39;, hue=&#39;is_self&#39;, data=stations, palette=&#39;Set1&#39;)
plt.grid(True)
plt.show()</code></pre><h3 id="휘발유-구별-비교">휘발유 구별 비교</h3>
<pre><code>plt.figure(figsize=(18, 8))
sns.boxplot(x=&#39;gu&#39;, y=&#39;gasoline&#39;, data=stations, palette=&#39;Set1&#39;)
plt.grid(True)
plt.show()</code></pre><h1 id="4-지도-시각화">4. 지도 시각화</h1>
<pre><code>import json
import folium</code></pre><h3 id="가장-비싼-주유소-10개">가장 비싼 주유소 10개</h3>
<pre><code>stations[[&#39;gu&#39;, &#39;name&#39;, &#39;is_self&#39;, &#39;gasoline&#39;]].sort_values(by=&#39;gasoline&#39;, ascending=False).head(10).reset_index(drop=True) #내림차순</code></pre><h3 id="가장-싼-주유소-10개">가장 싼 주유소 10개</h3>
<p>stations[[&#39;gu&#39;, &#39;name&#39;, &#39;is_self&#39;, &#39;gasoline&#39;]].sort_values(by=&#39;gasoline&#39;, ascending=True).head(10).reset_index(drop=True) #내림차순</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[20240209] GPT_Transformer]]></title>
            <link>https://velog.io/@haeun_71/20240209-GPTTransformer</link>
            <guid>https://velog.io/@haeun_71/20240209-GPTTransformer</guid>
            <pubDate>Fri, 09 Feb 2024 12:50:46 GMT</pubDate>
            <description><![CDATA[<h2 id="transformer">Transformer</h2>
<p><img src="https://velog.velcdn.com/images/haeun_71/post/1795e55a-1f7d-4502-9892-09b6bdcdac42/image.png" alt="">
** 가장 핵심적인 아이디어</p>
<ul>
<li><p>파란박스 = 입력방법: position encoding 
: 기존의 RNN에서는 가능했던 순서처리가 안 되는 Transformer
: 단순한 병렬처리가 되기 때문에 -&gt; 성능이 좋아짐 -&gt; 속도가 빨라져서 한꺼번에 여러개할 수 있음
: 단점 - 순서를 알 수 없음</p>
</li>
<li><p>빨간박스 = 핵심모듈: (Masked) Multi head attention
: self-attention 매커니즘을 이용한 자연어 처리 향상 모듈
1) 왜 self - attention인지
2)key query value = 각각 해서 화살표가 3개
기존에는 key 와 query만 있었음
왜 value값이 들어가고 왜 좋은지?</p>
</li>
<li><p>간단한 참고 도구</p>
</li>
<li><p>(파란부분)성능향상1: skip connection
: multihead attention의 output dimension과 input의 크기가 같아야 함</p>
</li>
<li><p>(빨간부분)성능향상2: layer normalization</p>
</li>
</ul>
<h4 id="--transformer">- transformer</h4>
<ul>
<li>기계번역 task에서 기존의 연구들보다 성능적으로 우수</li>
<li>병렬적으로 처리가 가능한 모델 -&gt; time complexity 감소</li>
<li>이후에 사용되는 Bert, GPT모델에서 일반화에 강점이 있다는 게 확인됨
: 자연어는 데이터의 랩을 얻는게 어렵고 처리하는게 어려움</li>
<li>이번 클립에서는 Transformer의 모듈별로 자세한 메커니즘을 공부<h4 id="--positional-encodingtransformer">- positional Encoding(Transformer)</h4>
왜 필요한가?</li>
<li>자연어 자체가 문장에 순서가 존재. 영어도 순서가 중요.  </li>
<li>순서를 고려하기 위한 다른 모델이 필요없음</li>
<li>병렬처리를 해야ㅎ서 느리긴 함</li>
</ul>
<p>어떻게 줄까?</p>
<ul>
<li><p>단어 순서대로 숫자를 카운팅하다보면, 
: 숫자가 너무 빨리 커져서 weight 학습시 어려움이 있다. 
: (CNN에서의 initialization method를 생각)</p>
</li>
<li><p>단어 순서대로 숫자를 카운팅후 정규화하면, : 0부터 1사이이므로 학습 weight는 안정적.
: 그런데 두번째 단어는 같은 값을 할당해야하는데 단어의 길이가 다를 경우 값이 변함. 
: 처리가 힘들고, 길이에 마다 성능이 천차만별일 수 잇음</p>
</li>
<li><p>단어 순서대로 벡터로 표현할 경우? 
: 가변적인 길이에 상관없이 같은 벡터 할당 가능
: 단어 순서끼리의 거리가 달라진다</p>
</li>
<li><p>연속함수이며 주기함수인 sin과 soc를 이용하자
<img src="https://velog.velcdn.com/images/haeun_71/post/c3c942b4-7c88-45fe-a396-c222a3217637/image.png" alt=""></p>
</li>
<li><p>0부터 250까지 포지션
250까지 가다보면 훨씬 프리퀀시가 낮음
: 차원은 128
= 벡터의 차원에 따라서 진동수가 줄어든다
<img src="https://velog.velcdn.com/images/haeun_71/post/4cab3fb0-3c53-43df-8256-2ac2caa05298/image.png" alt=""></p>
</li>
<li><p>p = 포지션
i = depth
wk = 진동수
2k = 포지션의 길이</p>
</li>
</ul>
<p>= 이렇게 복잡한 방법이 각도를 기준으로 상대적인 거리가 같게 만들어준다</p>
<ul>
<li>요약
: 기존의 RNN방법과는 달리 위치 정보를 얻을 수 없는 Transformer의 input embedding
: 이를 해결하기 위해서 positional Encoding을 사용</li>
</ul>
<h4 id="--multi-head-self-attentiontransformer">- multi-head self-attention(Transformer)</h4>
<p><img src="https://velog.velcdn.com/images/haeun_71/post/c2fb43d9-7024-4a4c-a811-ee59d9457ed6/image.png" alt=""></p>
<ul>
<li>key, quary, value attention을 기반으로</li>
<li>scaled Dot-product attention을 사용함</li>
</ul>
<p>예) I am a teacher</p>
<ol>
<li>teacher는 am 과 i와 연관이 있을 것이다</li>
<li>am과 i가 연관이 되는 근거는 서로 다르다</li>
</ol>
<p>INTRO</p>
<ul>
<li>문장을 이해할 때 각각의 단어는 서로 영향을 끼친다 = attention</li>
<li>그 강도는 다르다 = key value quary
key값이 어떤 의미를 가지냐. 주어나 동사 등에 따라 value값에 더해줌. 
: 문장구조상 목적어랑 목적보어관계 처럼</li>
<li>연관의 근거는 다 다르다 = multi head</li>
</ul>
<p>ATTENTION</p>
<ul>
<li>T번째 ATTENTION스코어는 hidden에 각각의 attention 모듈을 더해줘서, 가장 큰 거에 영향받음</li>
<li><blockquote>
<p>기존의 attention기법의 경우에는 key와 query만 존재</p>
</blockquote>
</li>
<li><blockquote>
<p>그러나 transformer의 attention의 경우  value까지 존재</p>
</blockquote>
</li>
<li><blockquote>
<p>문장을 이해할 떄 단어들은 서로 영향을 끼치며 (Attention)/ 그 강도는 다르다(key 또는 value)</p>
</blockquote>
</li>
</ul>
<p>-&gt; 이 단어에 대한 벡터는 (Q) 주어진 단어들에 대해 유사한 정도 만큼 (K) 고려하고, 각 주어진 단어들은 V만큼의 중요도를 가진다
; a는 중요도가 작다는 것. </p>
<p>-
단어에 대한 쿼리 벡터를 곱함.
quary(I love you)에 대해 key값을 구하고, value값을 곱해줘서(a는 작고 teacher은 크고) 유사값을 구함</p>
<p><img src="https://velog.velcdn.com/images/haeun_71/post/963b0d38-2d2d-4e30-911c-827bba9dfc51/image.png" alt=""></p>
<h4 id="--layer-normalization">- layer normalization</h4>
<p><img src="https://velog.velcdn.com/images/haeun_71/post/7fd64fb0-302a-4176-921c-9e0308f545cb/image.png" alt=""></p>
<ul>
<li>betch normalization
데이터가 미분값을 구해서 loss값이 가장 낮은 것으로 거쳐갈 때, 데이터 형식을 다 같게 해주기 위해 나옴
크기에 따라 성능이 달라짐. 크기가 크면 의미가 있어서 표준화하면 성능이 좋은데
std가 3이되면 거의 의미가 없음</li>
<li>layer normalization
batch별로 가 아니라 feature별로 normalization을
C(채널)이나 H, W등 각각의 feature에 따라</li>
</ul>
<h4 id="--final">- final</h4>
<p><img src="https://velog.velcdn.com/images/haeun_71/post/9fe7cd45-bfc9-45e7-980b-e14c97acbcd7/image.png" alt=""></p>
<ul>
<li>input이 들어가면 embedding을 통해 쿼리가 나오고, position encoding을 해주면 - Q, K, V를 해줘서 Multi head attention을 해주고 - 대신 dimension이 같아야 한다 skip connection을 해줘야하니까 - 거쳐서 나온 걸 layer nomalization을 해주고 - skip connection을 해줘서 최적의 x&#39;k를 뽑아준다</li>
</ul>
<h3 id="--transfer-learning">- Transfer learning</h3>
<h3 id="--few-show-zero-shot-learning">- Few show, zero shot learning</h3>
<h3 id="--bear">- Bear</h3>
<h3 id="--gpt-123">- GPT-1,2,3</h3>
<h3 id="--related-works-of-transformer">- Related works of Transformer</h3>
<h3 id="--hugging-face-소개-및-실습">- Hugging face 소개 및 실습</h3>
]]></description>
        </item>
        <item>
            <title><![CDATA[[20240208] GPT_자연어처리기초]]></title>
            <link>https://velog.io/@haeun_71/20240208-GPT%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%B4%88</link>
            <guid>https://velog.io/@haeun_71/20240208-GPT%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%B4%88</guid>
            <pubDate>Thu, 08 Feb 2024 10:27:41 GMT</pubDate>
            <description><![CDATA[<h1 id="motivation--direction">Motivation &amp; Direction</h1>
<ul>
<li>많은 부분에서 Transformer라는 모듈을 다루는데 --&gt; GPT &amp; Bert 등장
= positional Encoding, Multi Self-Attention + a
= 기계어 번역에서는 좋은 성능을 보이는데, 자연어에서는 레이블을 주기 애매함. 그러나 다양한 Task에 정확한 레이블 없이도 작동 가능하게 하고 싶다!</li>
</ul>
<h2 id="contents">contents</h2>
<h3 id="--자연어-데이터의-특징">- 자연어 데이터의 특징</h3>
<ul>
<li><p>Tabular Dataset
= 각각의 데이터 샘플들이 구성하고 있는 features는 독립적이다. 
= KNN, Linear Regression 의 기초가 되는 데이터셋 구조
= 키, 성별, 몸무게별로 매핑해서, decision boundary를 그어줄 때 0보다 크면 검정색, 작으면 하얀색으로 마킹해주는 모델에서 잘 작동하는 데이터 셋!
<img src="https://velog.velcdn.com/images/haeun_71/post/64a89489-de00-4a33-972a-4b2de8580f7e/image.png" alt=""></p>
</li>
<li><p>이미지
= 이미지 안의 의미있는 정보는 위치와 무관함. 눈이라는 의미는 30px이 그렇게 생겼기 때문에. 한 픽셀은 눈이 아님. 
= locality라는 정보 = 데이터 셋이 이미 귀납적으로 평향을 갖고 있다는 뜻 </p>
</li>
<li><p>자연어 데이터(문장)의 경우
= Translation Invariance 가 적용X (다 같은 석상인데, 위치가 3가지로 달라져도 똑같이 이해하는게 이미지에는 적용되는데, 문장에는 적용 안 됨)
= 문장을 구성하고 있는 단어들의 위치가 변해서는 안됨
= 단어들 간의 관계가 중요, 하나의 단어만 바뀌거나 추가돼도 전혀 다른 의미가 됨(나는 미국인을 좋아한다 -&gt; 나는 미국인을 안 좋아한다 = 긍정 -&gt; 부정문)</p>
</li>
</ul>
<h4 id="summery">SUMMERY</h4>
<ul>
<li>Gpt를 구성하는 모델은 transformer에서 가져온 것</li>
<li>Bert, GPT의 경우 특히 자연어 데이터에 특화된 프레임워크</li>
<li>자연어데이터는 단어와 단어들 사이 순서, 관계가 중요</li>
<li>문장이 갖고 있는 문맥을 알고리즘이 이해할 수 있게 하는 게 어렵다 </li>
</ul>
<h4 id="--자연어-데이터의-토큰화">- 자연어 데이터의 토큰화</h4>
<p>토큰화할 수 있다= 문장을 의미있는 단위로 쪼갤 수 있다</p>
<ul>
<li><p>Character 기반으로 
= L e t &#39; s d o t o k e n i z a t i o n
= 문장의 시계열 길이가 너무 늘어남.
= 각각의 문자는 의미를 갖고있지않음 -&gt; 결국 단어로 표현해야함 </p>
</li>
<li><p>split on spaces(word) 
= Let&#39;s do tokenization!
= 경우의 수가 너무 많음
= 사전에 없는 단어가 생길 위험이 큼</p>
</li>
<li><p>split on punctuation
= let &#39;s do tokenization!</p>
</li>
<li><ul>
<li>hugging face와 같은 대중적 공유 라이브러리가 존재하기 전 개발자들이 각각 토큰화를 임의 진행
= 모델을 다운받아 실행시킬경우 전혀 다른 결과가 나타남. 데이터셋이나 환경에 따라.
= 토큰처리 과정에 대해 아는 건 매우 중요</li>
</ul>
</li>
</ul>
<h3 id="--언어모델">- 언어모델</h3>
<h4 id="--자연어-처리-tesk">- 자연어 처리 tesk</h4>
<p>하나의 문장을 확률적으로 모델링; 분석한다.
= 하나의 문장을 여러개로 나누고, 나눈 토큰들의 결합분포로 문장에 대해 확률계산</p>
<ul>
<li><p>나는 사과를 먹었다
w1 /    w2  /  w3
P(W) = P(w1, w2, w3)
= P : 일반적인 문장에 대한 확률.</p>
</li>
<li><p>문장 감정 분석: 
맛있는 사과를 먹었다 = P(w1, w2, w3)
= P는 긍정적인 확률 가정 = 높아짐
/ 맛없는 사과를 먹었다 = 낮아짐</p>
</li>
<li><p>기계어 번역 &amp; Question answering
나는 사과를 먹었다 =&gt; I ate an apple
P(w&#39;1, w&#39;2, w&#39;3 | w1, w2, w3) 
= 확률이 높게 나옴
/ crush = w&#39;5
P(w&#39;1, w&#39;5, w&#39;2, w&#39;3) 
= 확률이 낮게 나옴</p>
</li>
</ul>
<p>= 단어가 중요한 이유</p>
<ul>
<li>나는  ? 을 먹었다 
w1 / w2 / w3
: w = 사과 일경우, P(w|w1, w3) &gt;&gt; 0
: w = 식탁 일경우, P(w|w1, w3) ~~ 0
= 조건부 확률</li>
</ul>
<p>뭘 푸는지 정해놓고, 가장 맞는 모델을 찾는 것</p>
<h4 id="--metric">- metric</h4>
<p>자연어 처리, 감정분석 = 정량분석은 어렵다. 장 파악하고 접근하기</p>
<p>Text metrics</p>
<hr>
<h2 id="자연어-처리-모델-기존연구들">자연어 처리 모델 기존연구들</h2>
<ul>
<li><p>context(문맥)이 중요하다
한 -&gt; 사투리 :  단어만 바꾸면 되지만,
한 -&gt; 영어 : 순서, 포맷이 바뀜. 
= &quot;한 문장을 context를 가진 벡터로 표현하고 싶다&quot;로 접근</p>
</li>
<li><p>기존의 이미지나 tabular 데이터와는 달리 
순서가 중요</p>
</li>
<li><p>(문장의 문맥을 하나의 벡터로 표현하기 위해) 인코딩
1) token = 나는 / 사과를 / 좋아한다
2) 숫자로 표현하고 백터화 -&gt; 인코딩해서 입력 -&gt; n차원의 context 벡터가 됨. 
= 얼마나 의미있는 embeding이 되느냐가 중요</p>
</li>
<li><p>문맥을 알아내는 encoder를 학습했다면, 다양한 task에 적용가능</p>
</li>
<li><blockquote>
<p>감정분석, 기계어번역, QA(Question Answer)</p>
</blockquote>
</li>
</ul>
<p>예) QA = context라는 긴 문장을 보고, 영어지문풀듯 문제가 나옴. 질문에 정답을 내는 방식으로 진행 = 문맥, Q에 대한 이해가 둘다 필요하고 A를 냄</p>
<ul>
<li><p>Recurrent neural networks(RNNs)
input이 순서대로 나올 때 - 모델이 output으 두가지로 내뱉음
= Transformer 이전에 사용
= encoder를 거치고 - context becter - decoder를 지나감. </p>
</li>
<li><p>? 문장은 단어들이 순서를 갖고 있다는 것을 알겠다. 하지만 중요한 단어들이 처음 부분에 있다면 정보를 잊어버리지 않을까?
= 그래서 번역을 한 문장씩 하는 것. 일반적으로는 2-3문장 지나면 잊어버림.</p>
</li>
<li><p>! 각각의 단어에 대해 attention을 줄 수 있다면 좋겠다
나는 사과를 좋아한다 = I like an Apple
= I를 번역할 때는 &#39;나는&#39;, apple을 번역할 때는 &#39;사과&#39;에 집중</p>
</li>
<li><p>= attention score을 주고, 전체 문장을 보고 문장 중 중요한 단어에 attention을 줘서, 문장 번역에 도움을 줌
이전문장의 단어가 임베딩된 벡터 hi,
번역할 단어의 임베딩 벡터 hj
j는 apple이고, h2hj 스코어가 가장 높아야 한다.
<img src="https://velog.velcdn.com/images/haeun_71/post/67294d84-c6ed-46d4-a710-d634f1d8ba71/image.png" alt=""></p>
</li>
</ul>
<p>이 열 백터의 값이 나오면,
그 후 softmax함수를 취한다
softmax(score(hj)) = 단어 임베딩 벡터 hj가 어떤 단어와 가장 유사한지를 확률적으로 출력 = 이게 apple이다
<img src="https://velog.velcdn.com/images/haeun_71/post/50494d5e-dab1-4926-a697-73fc07910534/image.png" alt="">
= 이전 문장의 벡터들을 보고, 변하지 않는 hj(=apple)과 뭐가 가장 유사한지 확인하는 것
= 한국어 문장 기준이니가 k는 3</p>
<h4 id="정리">정리</h4>
<p>= 자연어 데이터의 순차적인 특성을 고려하는 기존 연구들
문장마다의 중요도를 계산해서 attention 모듈을 생각해냄</p>
<h4 id="선형대수-기초">선형대수 기초</h4>
<ul>
<li>? <img src="https://velog.velcdn.com/images/haeun_71/post/f0ce1c39-bb1d-4476-97f9-0f453b4703e2/image.png" alt="">
= 일단. 강의목표는 hihj = 어떤 h1벡터와 hj벡터간의 &quot;유사도&quot;를 의미한다는 걸 아는 것</li>
</ul>
<p><img src="https://velog.velcdn.com/images/haeun_71/post/b424e632-dfab-4b34-bd6d-87c88b79b4e3/image.png" alt=""></p>
<p>1) Cos 유사도(각에 대한 것)와 벡터의 내적의 관계
벡터 = []안의 숫자들이 있고 얘들은 순서가 있음
Cos 유사도 가 이렇게 생겼고, 그 안에 &#39;내적&#39;이 있다</p>
<pre><code>   a . b = 벡터의 내적
=  ------
   ||a|| ||b|| = 벡터의 크기</code></pre><p>내적의 유사도의 근거가 1)또는 2)인 것!</p>
<p>2) 벡터의 내적과 거리의 관계, KL divergence</p>
<p>distance의 정의:
<img src="https://velog.velcdn.com/images/haeun_71/post/cdcfb45d-b790-45ef-8150-71dfca92be10/image.png" alt="">
= 거리의 정의에 내적이 있다
= 내적은 유사도</p>
<p>벡터의 내적이 유사도라는 게 가슴으로 이해돼야한다</p>
<h4 id="내적---행렬">내적 -&gt; 행렬</h4>
<ol>
<li>행렬과 벡터의 관계
열벡터와 행벡터로 이루어진 것 -&gt; 행렬
m차원의 컬럼벡터가 n개 있다
<img src="https://velog.velcdn.com/images/haeun_71/post/c4bc51ae-f743-43a4-97e3-502530d1d9d4/image.png" alt=""><pre><code>[  가로로 긴  ]  * [ 세로로 긴]
1*n            *     n*1          = 1
</code></pre></li>
</ol>
<pre><code>#### softmax
![](https://velog.velcdn.com/images/haeun_71/post/201a8b14-b63c-4cb7-a9f6-cf29013c5250/image.png)
모든 사건의 확률 다 더하면 1이 나온다
확률은 다 0보다 큼
= 확률의 정의가 깨지지 않게 구현해줄 수 있음
= exponential = 미분이 많이 쓰임. </code></pre><p>젠장 
괜찮아
한국말이다
살려주세요</p>
<pre><code></code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[2024.01.03-4] Machine Learning_Preprocessing(2)]]></title>
            <link>https://velog.io/@haeun_71/2024.01.03-Machine-LearningPreprocessing2</link>
            <guid>https://velog.io/@haeun_71/2024.01.03-Machine-LearningPreprocessing2</guid>
            <pubDate>Wed, 03 Jan 2024 03:47:59 GMT</pubDate>
            <description><![CDATA[<h2 id="--와인-맛에-대한-분류--이진분류">- 와인 맛에 대한 분류 : 이진분류</h2>
<h2 id="--pipeline">- Pipeline</h2>
<p>직접 공부하며 코드를 하나씩 실행해보면 혼돈이 큼
방법1: 코딩스타일바꾸기 (함수위주보다는 클래스 위주)
방법2: sklearn 유저라면 Pipeline기능을 사용</p>
<h2 id="--하이퍼파라미터">- 하이퍼파라미터</h2>
<h3 id="-교차검증">-교차검증</h3>
<h4 id="과적합-모델이-학습데이터에만-과도하게-최적화된-현상-그로인해-일반화된-데이터에서는-예측-성능이-과하게-떨어지는-현상">과적합: 모델이 학습데이터에만 과도하게 최적화된 현상. 그로인해 일반화된 데이터에서는 예측 성능이 과하게 떨어지는 현상</h4>
<p>과적합 막기 위해 훈련과 테스트 데이터로 분류
심지어, 훈련데이터를 한번 더 분류 = 검증데이터</p>
<ul>
<li><p>train 데이터를, k(5개 혹은 3개)</p>
</li>
<li><p>fold cross validation으로 나누고 </p>
</li>
<li><p>각각을 검증 = 5번</p>
</li>
<li><p>5개의 평균을 구해서 최종 검증을 정확도로 봄 </p>
</li>
<li><p>검증이 끝나면 test 용 데이터로 재검증</p>
</li>
</ul>
<ul>
<li>지난번 와인 맛 평가에서 훈련용데이터의acc는 72.94, 테스트용 데이터는 71.61%. 누가 결과가 정말 괜찮냐고 물어보면?</li>
</ul>
<h3 id="--하이퍼파라미터-튜닝">- 하이퍼파라미터 튜닝</h3>
<ul>
<li><p>하이퍼파라미터 순서: 
raw값 - 특성관찰 - 데이터를 나눔 - 모델을만들고 결과를 보다가 - 하이퍼파라미터(=손으로 스스로 수정해야할 것들)</p>
</li>
<li><p>튜닝대상
결정나무에서 튜닝해볼만한건 max_depth
반복문으로 바꿔가며 테스트해볼 수 있음
근데, 보다 간편하고 유용한 방법이 있다</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2024.01.02] Machine Learning_Preprocessing(1)]]></title>
            <link>https://velog.io/@haeun_71/2024.01.02-Machine-Preprocessing</link>
            <guid>https://velog.io/@haeun_71/2024.01.02-Machine-Preprocessing</guid>
            <pubDate>Tue, 02 Jan 2024 12:58:19 GMT</pubDate>
            <description><![CDATA[<h2 id="--label_encoder">- label_encoder</h2>
<p>글자를 숫자로, 숫자를 글자로 바꿔줌
label_encoder 불러오고
fit - transform
inverse - transform </p>
<h2 id="--min-max-scaling--정규화">- min-max scaling = 정규화</h2>
<p>x&#39; = x - min(x) / max(x) - min(x)</p>
<p>min = 0이면, x / max(x)가 된다. max = 100으로 나누면 1이 된다.
예) 서울시범죄현황데이터 다룰 때, 1000단위, 1자리로 발생하는 게 있었음. 다 양수니 max로 나눴었음.</p>
<h2 id="--standard-scaler--표준화">- standard scaler = 표준화</h2>
<p>표준정규분포 
z = X - y(평균) / a(표준편차)</p>
<h2 id="--robust-scaler">- robust scaler</h2>
<p>Xi - Q2 / Q3 - Q1 
예) boxplot에서 Q1(1/4지점), Q2(중간), Q3(3/4 지점)
= 평균이 아닌 median을 0로 보는 것
50%의 데이터끼리를 나눠준 것</p>
<hr>
<p>Desicion tree를 통해 와인데이터 분석
<a href="https://github.com/PinkWink/ML_tutorial/blob/master/dataset/wine.csv">https://github.com/PinkWink/ML_tutorial/blob/master/dataset/wine.csv</a></p>
<hr>
<h2 id="--데이터-전처리-min-max-scaler-standard-scaler">- 데이터 전처리: min-max scaler, standard scaler</h2>
<p>desicion tree는 scaler에 크게 영향받지않음</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.27] Machine Learning workflow(1) - 타이타닉 생존자 예측]]></title>
            <link>https://velog.io/@haeun_71/2023.12.27-Machine-Learning-workflow1-%ED%83%80%EC%9D%B4%ED%83%80%EB%8B%89-%EC%83%9D%EC%A1%B4%EC%9E%90-%EC%98%88%EC%B8%A1</link>
            <guid>https://velog.io/@haeun_71/2023.12.27-Machine-Learning-workflow1-%ED%83%80%EC%9D%B4%ED%83%80%EB%8B%89-%EC%83%9D%EC%A1%B4%EC%9E%90-%EC%98%88%EC%B8%A1</guid>
            <pubDate>Tue, 02 Jan 2024 11:33:35 GMT</pubDate>
            <description><![CDATA[<h3 id="--성별에-따른-생존률">- 성별에 따른 생존률</h3>
<h3 id="--경제력-대비-생존률">- 경제력 대비 생존률</h3>
<h3 id="--선실등급별-성별">- 선실등급별 성별</h3>
<h3 id="--나이별-승객현황">- 나이별 승객현황</h3>
<h3 id="--나이에-따른-등실별-생존률">- 나이에 따른 등실별 생존률</h3>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.22] Tableau for Business Analytics(3)]]></title>
            <link>https://velog.io/@haeun_71/2023.12.22-Tableau-for-Business-Analytics3</link>
            <guid>https://velog.io/@haeun_71/2023.12.22-Tableau-for-Business-Analytics3</guid>
            <pubDate>Fri, 22 Dec 2023 03:52:35 GMT</pubDate>
            <description><![CDATA[<h2 id="date-함수">Date 함수</h2>
<p>시계열 분석 때 필수, 외국계 회사에서는 회계연도를 다르게 써서 알아두면 유용</p>
<h3 id="--datepart">- DATEPART</h3>
<p>= 지정한 날짜의 부분을 정수로 반환시켜주는 함수
= 의도치 않았지만 &#39;주문일자&#39; 활용해 차트 만들때마다 활용 중</p>
<ul>
<li>예) 년(주문일자) 더블클릭 후 계산식 복사</li>
<li><blockquote>
<p>&#39;계산된필드만들기&#39; - 계산식 붙여넣기</p>
</blockquote>
</li>
<li><blockquote>
<p>필드 복제 - 열선반의 분기(주문일자) 계산식 복사 - 편집 - 계산식 붙여넣기 
= 두 필드는 모두 측정값에 포함됨. 데이터파트 함수는 결과값을 정수로 반환. </p>
</blockquote>
</li>
<li><blockquote>
<p>두 필드를 선택해서 &#39;차원&#39;으로 올려줌 - 우클릭 - &#39;계층- 만들기&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>화면에 있는 &#39;주문일자&#39; 빼고, 방금만든 계층 넣기 - 드릴다운 - 연도별 분기가 나옴</p>
</blockquote>
</li>
<li>계산된 필드에 함수써서 요일을 표현</li>
<li><blockquote>
<p>새 시트 - &#39;주문일자&#39; 드래그해서 행선반 - 불연속형 </p>
</blockquote>
</li>
<li><blockquote>
<p>계산된 피드만들기 - &#39;요일&#39; - 
IF DATEPART(&#39;weekday&#39;, 주문일자드래그) = 1 THEN &#39;SUN&#39;
ELSEIF DATEPART(&#39;weekday&#39;, 주문일자드래그) = 2 THEN &#39;MON&#39;
ELSEIF DATEPART(&#39;weekday&#39;, 주문일자드래그) = 3 THEN &#39;TUS&#39;
ELSEIF DATEPART(&#39;weekday&#39;, 주문일자드래그) = 4 THEN &#39;WED&#39;
ELSEIF DATEPART(&#39;weekday&#39;, 주문일자드래그) = 5 THEN &#39;THUR&#39;
ELSEIF DATEPART(&#39;weekday&#39;, 주문일자드래그) = 6 THEN &#39;FRI&#39;
ELSE &#39;SAT&#39;
END</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;요일&#39; 드래그 - &#39;마크-텍스트&#39; - 요일표현 가능</p>
</blockquote>
</li>
</ul>
<h3 id="--datetrunc">- DATETRUNC</h3>
<p>지정한 날짜 부분 기준으로 잘라내고, 새날짜를 반환하는 함수
-&gt; 새 시트 - &#39;주문일자&#39; 드래그해서 열선반(연속형 년(주문일자)) - &#39;매출&#39; 더블클릭
-&gt; 열 앞의 +버튼 누르면 불연속형과 다르게, 연속형은 그 자리에서 그대로 대체된다. &#39;일&#39;레벨까지 드릴다운 - 더블클릭</p>
<ul>
<li>DATEPART, DATETRUNC 차이    </li>
<li><blockquote>
<p>좌측화면에서 &#39;주문일자&#39; 드래그  - 행선반 &#39;매출&#39; 앞 올리기 - 우클릭 - &#39;날짜부분을 일&#39;로 변경</p>
</blockquote>
<h3 id="--datediff">- DATEDIFF</h3>
날짜란의 차이를 구해주는함수 </li>
<li>예) 각 제품별 배송까지 걸리는 기간 만들기</li>
<li><blockquote>
<p>새 시트 -&#39;주문번호&#39; 더블클릭 - &#39;주문일자&#39;를 주문번호 뒤에 넣고(주문일자-불연속형) - &#39;배송일자&#39;도 동일하게</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;계산식필드&#39; - 배송까지 걸린 기간 - DATEDIFF(&#39;day&#39;, 주문일자드래그(시작), 배송일자드래그(끝))</p>
</blockquote>
</li>
<li><blockquote>
<p>필드 드래그 - &#39;마크-텍스트&#39;</p>
</blockquote>
</li>
<li>주문번호 하나에 여러 제품이 포함돼있어 제품별 배송기간이 다를 수 있음. 제품명 추가해야 정확한 기간이 나옴</li>
<li><blockquote>
<p>&#39;제품명&#39; 드래그 - 행의 &#39;주문번호&#39; 뒤에 붙여줌 - 경고창뜨면 모든맴버선택 </p>
</blockquote>
</li>
</ul>
<hr>
<h3 id="--날짜함수">- 날짜함수</h3>
<p>MTD(Month to day), QTD(querter ~ ), YTD(year ~) 
= 연 분기 월의 시작일로부터 특정일까지 합계매출을 볼 때 사용
= 합계로 보는 이유? 현재 기준에서 목표대비, 작년대비 성장률을 보기 위함</p>
<h4 id="--mtd">- MTD</h4>
<ul>
<li>예)</li>
<li><blockquote>
<p>&#39;매개변수만들기&#39; - &#39;date&#39;, 날짜유형: 날짜, 2019년 12월 18일</p>
</blockquote>
</li>
<li><blockquote>
<p>우클릭 - &#39;매개변수표시&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;주문일자&#39; - 행선반으로 드래그 - &#39;주문일자-불연속형&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; 더블클릭</p>
</blockquote>
</li>
<li>매개변수를 동쪽으로 만들어주기 위한 계산식</li>
<li><blockquote>
<p>&#39;계산된필드&#39; - F_MTD - 
DATEDIFF(&#39;month&#39;, 주문일자드래그, 메개변수드래그&#39;) = 0
AND 
DATEDIFF(&#39;day&#39;, 주문일자드래그, 매개변수드래그&#39;) =0</p>
</blockquote>
</li>
<li><blockquote>
<p>필드 드래그 - 필터 - 참만 가져오기</p>
</blockquote>
</li>
<li><blockquote>
<p>첫번째 조건인 같은 달에서, 두번째 조건인 매개변수의 날짜기준과 이전날짜까지만 가져오게 됨</p>
</blockquote>
</li>
<li>방금만든 시트의 이름을 MTD로 변경 - 복제 - QTD</li>
<li><blockquote>
<p>F_MTD 복제 - QTD로 이름 수정 - &#39;month대신 &#39;querter 입력&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>드래그해서 F_MTD위로 올리기</p>
</blockquote>
</li>
<li>시트 QTD - 복제 - YTD</li>
<li><blockquote>
<p>F_QTD 복제 - YTD로 이름 수정 - &#39;querter 대신 year 입력&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>드래그해서 F_QTD위로 올리기</p>
</blockquote>
</li>
<li><blockquote>
<p>각 시트 열에 있는 불연속형 주문일자 뺴기</p>
</blockquote>
</li>
<li>대시보드 만들기(1000*500)</li>
<li><blockquote>
<p>차례로 넣고 폰트색상을 바꿔줌 - 값이 표시된 영역 우클릭 - 서식 -빨간색 볼드</p>
</blockquote>
</li>
<li><blockquote>
<p>테두리 서식 - 테투리 굵게 넣고 - 전체보기</p>
</blockquote>
</li>
<li><blockquote>
<p>상단에 텍스트 박스 삽입 - &#39;매출 현황판&#39; - 글자 20, 볼드체</p>
</blockquote>
</li>
<li><blockquote>
<p>오른쪽 매개변수를 바꿔주면 값이 달라짐</p>
</blockquote>
</li>
</ul>
<hr>
<h2 id="lodlevel-of-detail-세부수준식">LOD(Level Of Detail) 세부수준식</h2>
<p>= 필수로 이해하고 사용해야함
= 세부수준에서 데이터 깊이를 결정하고, 집계해 계산하는 방식</p>
<pre><code>{INCLUDE[차원1], [차원2] : SUM([측정값])}

반드시 중괄호 안에 식을 써야하고, 차원과 측정값 사이 :
</code></pre><h3 id="표현식">표현식</h3>
<h4 id="--include">- INCLUDE</h4>
<p>= 화면에 포함되지 않은 특정 차원을 포함해 결과를 계산</p>
<ul>
<li>예)</li>
<li><blockquote>
<p>&#39;제품대분류, 매출&#39; 더블클릭 - &#39;계산된필드만들기&#39; - INCLUDE_제품중분류 - {INCLUDE 제품중분류드래그 : SUM (매출드래그) }</p>
</blockquote>
</li>
<li><blockquote>
<p>더블클릭 -&gt; 제품대분류와 값이 동일하게 나옴 = 중분류에서 집계한 값을 대분류에서 다시 합계로 재집계했기 때문</p>
</blockquote>
</li>
<li>이해하기 쉽게, 매출과 INCLUDE 제품중분류 필드 집계방식을 합계가 아닌 최대값으로 변경</li>
<li><blockquote>
<p>중간 측정값 &#39;최대(매출)&#39;에서 우클릭 - 합계 - 최대값 </p>
</blockquote>
</li>
<li><blockquote>
<p>합계(INCLUDE)도 동일하게 변경</p>
</blockquote>
</li>
<li><blockquote>
<p>좌측 &#39;NUMBER OF RECORDS&#39;를 측정값 상단으로 끌어오기</p>
</blockquote>
</li>
<li>두 값의 차이가 큼. 매출 값이 어떻게 나왔는지 이해할 필요가 있음</li>
<li><blockquote>
<p>시트 복제 - 제품 대분류의 가구만 유지 - INCLUDE 제품 중분류는 빼기 </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;고객명&#39; 더블클릭 - 내림차순 정렬 - &#39;원하얀&#39;고객만 유지</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;주문번호&#39; 더블클릭 - &#39;제품코드 &#39;더블클릭 
= 최하위레벨에서 각 RECODE를 확인가능</p>
</blockquote>
</li>
<li><blockquote>
<p>시트 1로 돌아오기
= 가구의 최대값 매출은 2428개의 주문건수 중 가장 높은 값을 가져온 거라고 볼 수 있음</p>
</blockquote>
</li>
<li>제품 대분류에서 최대값 INCLUDE가 어떻게 계산된건지 확인</li>
<li><blockquote>
<p>시트 복제 - &#39;매출, RECODE&#39;뺴기</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;제품 중분류&#39;를 대분류 옆에 놓고 - 내림차순정렬
= 의자 매출이 5억 2천
= INCLUDE는 눈에 보이지 않지만, 화면에서 보이는 차원에서 더 깊은 차원에서 집계해, 값을 갖고 있고, 지금과같이 화면에서 재집계하면 값을 가져와 계산해줌</p>
</blockquote>
</li>
</ul>
<h4 id="--exclude">- EXCLUDE</h4>
<p>= 화면에 포함된 특정 차원을 제외해 결과를 계산</p>
<ul>
<li>예)</li>
<li><blockquote>
<p>&#39;제품대분류, 중분류&#39; 더블클릭, &#39;마크&#39;에 &#39;매출&#39; 넣기</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;계산된필드만들기&#39; - EXCLUDE_제품중분류 - {EXCLUDE 제품중분류드래그 : SUM([매출])}</p>
</blockquote>
</li>
<li><blockquote>
<p>드래그해서 뷰화면에 넣기 -&gt; INCLUDE와 다르게 값이 중복돼 들어감. = 대분류 안에 있는 중분류의 합계</p>
</blockquote>
</li>
<li><blockquote>
<p>매출 드래그해서 합계를 보면 EXCLUDE와 값이 같음을 알 수 있음
= EXCLUDE도 값을 백단에서 갖고 있고, 화면에서 표현하는 과정에서 대분류별 합계값 하나만 갖고 있어서 복제해줌. 값을 평균으로 바꿔도 값은 변하지 않음
= 현재화면에 보이는 차원값을 무시하고 집계를 내기 떄문에, 특정 차원을 빼고 재집계할 때 사용할 수 있는 함수</p>
</blockquote>
</li>
<li>INCLUDE, EXCLUDE는 특정 차원레벨에서 집계를 해줘서 다양한 계산을 할 수 있지만, 크게 활용되지 않음. </li>
</ul>
<h4 id="--fixed">- FIXED</h4>
<p>= 화면에 상관없이 특정 차원을 고정해 결과를 계산
반드시 중괄호 안에 식을 써야하고, 차원과 측정값</p>
<ul>
<li><p>예) </p>
</li>
<li><blockquote>
<p>새 시트 - &#39;계산된필드만들기&#39; - Fixed_제품대분류 - { FIXED 제품대분류드래그 : SUM([매출])}
= 제품대분류 차원 수준에서 매출의 합계를 만들어준다</p>
</blockquote>
</li>
<li><blockquote>
<p>필드 복제 - 편집 - Fixed_제품중분류 - { FIXED 제품중분류드래그 : SUM([매출])}</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;제품대분류, 중분류&#39; CTRL로 선택 - 우클릭 - &#39;계층-계층만들기-&#39;제품 분류&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;제품분류&#39; 계층 드래그 해서 뷰에 넣고, &#39;매출&#39; 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>FIXED 두개도 더블클릭
= 제품 대분류는 값이 다 같게 나옴 </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;제품대분류&#39; 드릴다운 
= 중분류 레벨에서 고정해 합계를 계산했기 때문에 중분류는 제대로 나옴. 
= 대분류는 차원을 고정해서 만드니까 중분류합계에 대한 결과값이 복제돼 표현됨 
= INCLUDE, EXCLUDE와 같은 개념. </p>
</blockquote>
</li>
<li><p>지난 시간에 사용하던 &#39;EXCLUDE_중분류&#39; 드래그 - 측정값 중 &#39;제품 대분류와 중분류&#39; 사이에 두기</p>
</li>
<li><blockquote>
<p>지난 시간에 사용하던 &#39;INCLUDE_중분류&#39; 드래그 - 측정값 중 &#39;FIXED 중분류&#39; 뒤에 두기</p>
</blockquote>
</li>
<li><blockquote>
<p>값 비교가 잘 되도록, 좌측의 &#39;측정값 이름&#39;을 &#39;마크-색상&#39;에 넣고 - 오른쪽 &#39;색상정렬&#39; 더블클릭 - &#39;FIXED_대분류 &amp; EXCLUDE_중분류&#39;는 빨 / &#39;FIXED_중분류 &amp; INCLUDE_중분류&#39;는 파 / 매출은 회색</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-측정값&#39; 우클릭 - &#39;측정값 - 합계&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>중분류에서 고정된 FIXED 대분류값과, 중분류를 제외한 EXCLUDE값은 동일한 결과값</p>
</blockquote>
</li>
<li><blockquote>
<p>열에서 &#39;제품 중분류&#39;를 빼면, 합계로 재집계돼서, 표시되는 값은 모두 같아짐</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-측정값&#39;- 우클릭 - &#39;측정값-최대값&#39;
= 재집계방식을 합계가 아닌 최대값으로 바꿔주면 FIXED_중분류, INCLUDE_중분류는 그 안에서 최대값을 가짐
= FIXED_대분류, EXCLUDE_중분류는 제품 대분류기준의 합계; 하나의 결과값만 존재해서 이전과 동일한 값</p>
</blockquote>
</li>
<li><p>실습) FIXED를 사용해 유입시점별 고객매출기여도 알아보기</p>
</li>
<li><blockquote>
<p>새시트 - &#39;매출, 주문일자&#39; 더블클릭 - 차트는 막대로 변경</p>
</blockquote>
</li>
<li><p>각 연도별 신규 ㅇ유입된 고객이 구매를 일으키고, 다음에도 구매를 하는지, 전체의 몇퍼센트를 차지하는지</p>
</li>
<li><blockquote>
<p>처음 구매한 시점을 보기위해 &#39;계산된필드&#39; 생성 - First_구매일 - {FIXED 고객명드래그: MIN([주문일자])}</p>
</blockquote>
</li>
<li><blockquote>
<p>필드 드래그 -&#39;마크-색상&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>행선반 &#39;합계(매출)- 퀵테이블(구성비율) - 다음을 사용해계산(테이블아래로) - 툴바의 마크레이블</p>
</blockquote>
</li>
<li><p>고객별 첫 구매일, 두번째 구매까지 걸린 경과</p>
</li>
<li><blockquote>
<p>&#39;고객명&#39; 더블클릭, &#39;주문일자&#39; 드래그해서 &#39;고객명&#39;옆(불연속 주문일자)</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;FIRST_구매일&#39; 을 &#39;주문일자&#39; 옆에 드래그해서 &#39;불연속형&#39;</p>
</blockquote>
</li>
<li><p>--&gt; 두번째 구매일 계산
&#39;주문일자&#39;의 첫번째 구매일은 제외 - &#39;계산된~&#39; - </p>
<pre><code>FIRST_구매일제외 - IIF([주문일자] &gt; [FIRST_구매일), [주문일자], NULL)
크면 주문일자를 가져오고 , 아니면 NULL로 처리</code></pre></li>
</ul>
<p>-&gt; FIRST구매일제외&#39;도 &#39;F_구매일&#39;뒤에 넣어줌</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.21] Tableau for Business Analytics(2)]]></title>
            <link>https://velog.io/@haeun_71/2023.12.21-Tableau-for-Business-Analytics2</link>
            <guid>https://velog.io/@haeun_71/2023.12.21-Tableau-for-Business-Analytics2</guid>
            <pubDate>Thu, 21 Dec 2023 02:11:57 GMT</pubDate>
            <description><![CDATA[<h2 id="--태블로-내장함수">- 태블로 내장함수</h2>
<h3 id="--primary-함수-함수-내에-다른-함수가-포함된-함수">- PRIMARY 함수: 함수 내에 다른 함수가 포함된 함수</h3>
<h4 id="--running5가지">- RUNNING(5가지)</h4>
<ul>
<li><p>RUNNING_SUM
= 첫번째행에서 현재행까지 주어진 식의 누계합계를 반환하는 함수
= 퀵테이블 계산으로 간단하게 만든걸 함수로 써서 만들 수 있음</p>
</li>
<li><p>예)</p>
</li>
<li><blockquote>
<p>새시트 - &#39;계산된시트만들기&#39; - RUNNING_SUM - RUNNING SUM(SUM([매출]))</p>
</blockquote>
</li>
<li><blockquote>
<p>더블클릭 - &#39;주문일자&#39;도 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>툴바 &#39;레이블 선택&#39; - &#39;전체보기&#39;</p>
</blockquote>
</li>
<li><p>-&gt; 사이드바 &#39;매출&#39; 드래그 - 행선반 RUNNING_SUM옆에 두기</p>
</li>
<li><p>-&gt; 마우스 우클릭 - &#39;퀵테이블-누계&#39;</p>
</li>
<li><p>RUNNING_AVG
= 첫번째행에서 현재행까지 주어진 식의 누계평균을 반환하는 함수</p>
</li>
<li><p>예)</p>
</li>
<li><blockquote>
<p>새시트 - &#39;계산된시트만들기&#39; - RUNNING_AVG - RUNNING AVG(SUM([매출]))</p>
</blockquote>
</li>
<li><blockquote>
<p>더블클릭 - &#39;주문일자&#39;도 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>툴바 &#39;레이블 선택&#39; - &#39;전체보기&#39;</p>
</blockquote>
</li>
<li><ul>
<li>RUNNING AVG와 MOVING AVG의 차이?</li>
</ul>
</li>
<li><p>-&gt; 사이드바 &#39;매출&#39; 드래그 - 행선반 RUNNING_AVG옆에 두기</p>
</li>
<li><p>-&gt; 마우스 우클릭 - &#39;퀵테이블-이동평균&#39; - 2016부터 2018까지 값은 같지만, 2019는 다름</p>
</li>
<li><p>-&gt; 열선반 &#39;주문일자&#39; 우클릭 - &#39;연속형 분기&#39;
== RUNNING AVG: 특정기간을 포함한 이전 기간의 모든 매출에 대한 평균값
== MOVING AVG: 특정 기간으로부터 지정한 이전기간까지의 매출의 평균값
즉, 2019년 4분기에 대한 RUNNING AVG: 2016년 1분기부터 2019년 4분기까지의 매출 평균 / MOVING AVG: 2019년 2,3,4분기의 평균을 나타냄
따라서, 이동평균에 사용되는건 RUNNING이 아닌 WINDOW</p>
</li>
</ul>
<h4 id="--total">- TOTAL</h4>
<p>= 총합계를 구하는 함수
= 매출비중을 만들 때 주로 사용함. 
= 퀵테이블에서 비중을 나타낼 때 사용하는 함수
** TOTAL과 SUM의 차이?</p>
<ul>
<li>예)</li>
<li><blockquote>
<p>새시트 - &#39;계산된필드&#39; - TOTAL - TOTAL(SUM([매출]))</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;제품대분류, 매출, TOTAL, 재품중분류&#39; 더블클릭
== SUM은 차원을 나누면 해당레벨에 맞춰 합계를 다시 구함
== TOTAL은 차원에 영향받지 않고, 화면에 있는 측정값을 총합계로 나타냄</p>
</blockquote>
</li>
</ul>
<h4 id="--lookup">- LOOKUP</h4>
<p>= 현재 행을 기준으로 오프셋만큼 떨어진 대상에 주어진 식의 값을 반환</p>
<ul>
<li>예)</li>
<li><blockquote>
<p>새시트 - &#39;주문일자, 매출&#39; 더블클릭 - 행렬전환 </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;계산된필드만들기&#39; - LOOKUP_1 - LOOKUP(SUM([매출]), -1)
=현재 행에서 -1만큼 떨어진 행의 값을 가져오겠다</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;LOOKUP&#39;필드 더블클릭
= 전년도 매출값 = LOOKUP값</p>
</blockquote>
</li>
<li><blockquote>
<p>좌측&#39;LOOKUP_1&#39; - &#39;편집&#39; - &#39;-1을 1&#39;로 바꿈
= 내년도 매출값 = LOOKUP값</p>
</blockquote>
</li>
<li>전년도와 매출액 차이를 만들어줄 것</li>
<li><blockquote>
<p>&#39;LOOKUP&#39;필드 우클릭 &#39;복제&#39; - 전년 대비 매출액 차이 -
ZN(SUM([매출])) - ZN(LOOKUP(SUM([매출]), -1))</p>
</blockquote>
</li>
<li><blockquote>
<p>더블클릭 </p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바 &#39;매출&#39; - &#39;마크-세부정보&#39; - 우클릭 - &#39;퀵테이블 - 차이&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>필드 드래그 - 측정값 중 &#39;전년대비 매출액차이&#39; 아래로 넣어줌</p>
</blockquote>
</li>
</ul>
<h4 id="--window">- WINDOW</h4>
<p>= 현재 화면 내에서 해당 식을 반환하는 함수
= RUNNING 함수와 비슷하지만, 특정 범위를 지정해 계산할 수 있다는 점에서 큰 차이</p>
<ul>
<li><p>WINDOW_SUM</p>
</li>
<li><p>WINDOW_AVG</p>
</li>
<li><p>예)</p>
</li>
<li><blockquote>
<p>새시트 - &#39;매출&#39; 우클릭 - &#39;주문일자&#39; 드래그 해서 열선반에(연속형 분기) - 레이블 표시</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;계산된 필드 만들기&#39; - WINDOW_AVG - WINDOW AVG(SUM([매출]), -3,0)</p>
</blockquote>
</li>
<li><blockquote>
<p>필드 드래그 - 행선반 위 합계(매출) 옆에 두기 
= 4개 분기(해당분기로부터 최근 1년) 매출에 대한 평균값을 보여주는 차트 생성</p>
</blockquote>
</li>
<li><blockquote>
<p>행선반 - 합계(매출) 우클릭 - &#39;퀵테이블 - 이동평균&#39; = 두 값에 차이가 있는 건 범위가 달라서</p>
</blockquote>
</li>
<li><blockquote>
<p>행선반 - 합계(매출) 우클릭 - &#39;테이블대상편집&#39; - 이전값:3</p>
</blockquote>
</li>
<li><blockquote>
</blockquote>
</li>
<li><p>WINDOW_COUNT</p>
</li>
<li><p>WINDOW_MAX</p>
</li>
<li><p>WINDOW_MIN</p>
</li>
</ul>
<h3 id="--문자열-함수">- 문자열 함수</h3>
<p>= 현재 갖고 있는 데이터 변형시켜 다른 시각에서 인사이트 얻을 수 있음
= 제품 대분류, 중분류값만 있어서 특정 제품이나 브랜드별 성과는 확인이 어려움
= 문자열 함수 사용하면 더 세분화해 다양한 시각에서 인사이트 도출 가능</p>
<ul>
<li>예) &#39;제품명&#39; 더블클릭 </li>
<li><blockquote>
<p>스마트폰이 APPLE만 있는지 다른 종류도 있는지 확인하기 위해 &#39;계산된필드만들기&#39; - CONTAINS - CONTAINS(UPPER(제품명 드래그), &#39;SMART PHONE&#39;)</p>
</blockquote>
</li>
<li><blockquote>
<p>필드를 &#39;필터&#39;로 드래그 - 참만 보기</p>
</blockquote>
</li>
<li>브랜드명과 제품을 나눠줌</li>
<li><blockquote>
<p>&#39;계산된피드만들기&#39; - SPLIT_BRAND - SPLIT(제품명 드래그)- SPLIT([제품명], &#39; &#39;, 1) = 첫번쨰 브랜드명만 가져오게</p>
</blockquote>
</li>
<li><blockquote>
<p>필드를 행선반 - 제품명 옆에 드래그</p>
</blockquote>
</li>
<li>SMART PHONE을 가져오기 위해, 띄어쓰기 있는 걸 REPLACE로 변신</li>
<li><blockquote>
<p>&#39;계산된필드만들기&#39; - REPLACE - REPLACE(UPPER([제품명]), &#39;SMART PHONE&#39;, &#39;SMARTPHONE&#39;)</p>
</blockquote>
</li>
<li><blockquote>
<p>필드 드래그 - 열선반에 놓기</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;SPLIT_BRAND&#39; 복제 - 편집 - SPLIT_PRODUCT - 
LEFT( SPLIT([REPLACE], &#39; &#39;, 2), 10)
= SMARTPHONE, 으로 출력돼서, 왼쪽에서부터 10개만 출력</p>
</blockquote>
</li>
<li><blockquote>
<p>필드를 행선반에 드래그 - 정상적으로 데이터 가져온 것 확인가능</p>
</blockquote>
</li>
<li><blockquote>
<p>행선반의 &#39;제품명, REPLACE&#39;빼기</p>
</blockquote>
</li>
<li><blockquote>
<p>열선반에 &#39;매출&#39; 놓기 - 행열전환</p>
</blockquote>
</li>
<li><blockquote>
<p>열선반 : SPLIT_PRODUCT, SPLIT_BRAND순으로 재정렬</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바 &#39;SPLIT_BRAND&#39; - &#39;마크-색상&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바 &#39;매출&#39; 드래그 - 마크 칸에 놓기 - 우클릭 - &#39;퀵테이블계산 - 구성비율&#39; - &#39;레이블&#39;에 드래그</p>
</blockquote>
</li>
</ul>
<h4 id="--running5가지-1">- RUNNING(5가지)</h4>
<ul>
<li>RUNNING_SUM
= 첫번째행에서 현재행까지 주어진 식의 누계합계를 반환하는 함수
= 퀵테이블 계산으로 간단하게 만든걸 함수로 써서 만들 수 있음</li>
<li>예)</li>
<li><blockquote>
<p>새시트 - &#39;계산된시트만들기&#39; - RUNNING_SUM - RUNNING SUM(SUM([매출]))</p>
</blockquote>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.20] Tableau for Business Analytics]]></title>
            <link>https://velog.io/@haeun_71/2023.12.20-Tableau-for-Business-Analytics</link>
            <guid>https://velog.io/@haeun_71/2023.12.20-Tableau-for-Business-Analytics</guid>
            <pubDate>Wed, 20 Dec 2023 03:02:39 GMT</pubDate>
            <description><![CDATA[<h2 id="--퀵테이블-계산">- 퀵테이블 계산</h2>
<h4 id="--누계각-값을-누적">- 누계(각 값을 누적)</h4>
<p>예) 각 월별 매출, 누적 매출 함께볼 것
-&gt; &#39;매출&#39; 더블클릭, &#39;주문일자&#39; 열선반으로 놓을 때(연속형 월선택)
-&gt; 행에 있는 &#39;매출&#39; ctrl 눌러서 복사 - 차트가 두개 됨
-&gt; 두번째 합계(매출) - 우클릭 - &#39;퀵테이블계산-누계&#39;, - 우클릭 - &#39;이중축&#39;</p>
<h4 id="--차이계산기준을-지난-다음-첫번째-등으로-설정가능">- 차이(계산기준을 지난, 다음, 첫번째 등으로 설정가능)</h4>
<ul>
<li>예) </li>
<li><blockquote>
<p>&#39;매출&#39; 더블클릭 - &#39;주문일자&#39; 열선반에 놓기(연속형 분기)</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;차트-막대&#39;로 변경</p>
</blockquote>
</li>
<li><blockquote>
<p>합계(매출) - 우클릭 - &#39;퀵테이블계산-차이&#39; = 이전분기와의 차이가 나타남</p>
</blockquote>
</li>
<li><blockquote>
<p>뷰 우측하단에 한개의 값이 null. 맨 앞값은 비교대상 없어서 그럼. 우클릭해서 안 보이게</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;합계(매출)&#39; 드래그 - &#39;마크-색상&#39;</p>
</blockquote>
</li>
<li>예) 새로운 시트</li>
<li><blockquote>
<p>&#39;주문일자&#39; - 행선반에 드래그 - 드릴다운(월까지, 분기는 뺌)</p>
</blockquote>
</li>
<li><blockquote>
<p>좌측에서 &#39;매출&#39; 더블클릭 </p>
</blockquote>
</li>
<li><blockquote>
<p>마크에 있는 &#39;매출&#39;우클릭 - &#39;퀵테이블계산 - 차이&#39; = 바로 이전 값과 비교해서 차이를 구함</p>
</blockquote>
</li>
<li>예) 1월과 비교한 각 연도별 차이</li>
<li><ul>
<li>세모모양표시=델타=테이블로 계산이 됐다는 뜻</li>
</ul>
</li>
<li><blockquote>
<p>마크에 있는 &#39;매출&#39; 우클릭 - &#39;기준-첫번째&#39;</p>
</blockquote>
</li>
<li>예) 각 연도별 1월과 차이를 구하기</li>
<li><blockquote>
<p>마크에 있는 &#39;매출&#39; 우클릭 - &#39;다음을 사용해 계산 - 패널 아래로&#39;</p>
</blockquote>
</li>
</ul>
<h4 id="--구성">- 구성</h4>
<ul>
<li>예) 매출합계를 기준으로 각각의 제품 중분류별 매출의 구성배율 구할 것</li>
<li><blockquote>
<p>좌측의 &#39;제품 대분류, 중분류, 매출&#39; 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>마크에 있는 &#39;매출&#39; 우클릭 - &#39;퀵테이블계산-구성비율&#39; 
= 전체 드래그하면 1또는 100%</p>
</blockquote>
</li>
<li>예) 대분류에 속한 제품 중분류에 비중을 만들어줄 것. &#39;가구, 사무기기, 사무용품&#39; 각각의 비중을 100%로 할당해서, 다 합치면 3또는 300%이 나오게 만들것</li>
<li><blockquote>
<p>마크 &#39;매출&#39; 우클릭 - &#39;테이블계산편집-특정차원-제품대분류 해제&#39;</p>
</blockquote>
</li>
<li><ul>
<li>&#39;테이블계산편집&#39;은 계산방식이 어떻게 되는지 하이라이트로 표시해줘서 직관적 / 차원을 여러개 넣고 행렬을 바꾸면 계산이 틀어져서 &#39;테이블계산편집&#39;에서 차원값을 직접 선택해주는 편
= 노란색영역이 대분류 &#39;가구&#39;에만 해당. 가구에 해당하는 값만 드래그해보면 전체 합이 100%인걸 볼 수 있음</li>
</ul>
</li>
<li><blockquote>
<p>&#39;분석패널 - 총계 - 소계&#39; = 각각 대분류별 총계 퍼센트가 100%로 나옴</p>
</blockquote>
</li>
</ul>
<h4 id="--순위">- 순위</h4>
<ul>
<li>예)</li>
<li><blockquote>
<p>&#39;제품 대분류, 중분류, 매출&#39; 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-합계(매출)&#39; - 세모 - &#39;퀵테이블-순위&#39;</p>
</blockquote>
</li>
<li>계산방식 변경: 순위매길때 같은 제품대분류 안에 있는 중분류 별 순위</li>
<li><blockquote>
<p>&#39;마크-합계(매출)&#39; - 세모 - &#39;테이블계산편집 - 특정차원 - 제품대분류 해제&#39;</p>
</blockquote>
</li>
<li>전체 기준 순위를 옆에 추가</li>
<li><blockquote>
<p>&#39;측정값 - 매출&#39; 더블클릭 - 우클릭 - &#39;퀵테이블-순위&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;합계(매출)&#39; 우클릭 - 서식 - &#39;숫자(표준)&#39;</p>
</blockquote>
</li>
<li>측정값 이름 변경</li>
<li><blockquote>
<p>&#39;마크-합계(매출)(1)&#39; - 드래그 - 좌측사이드바로 - 이름지정&#39;전체순위&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-합계(매출)(2)&#39; - 드래그 - 좌측사이드바로 - 이름지정&#39;제품대분류 내 순위&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>좌측 &#39;매출&#39; - 중간의 &#39;측정값&#39;에 넣고 - &#39;매출&#39;에 대한 부분을 내림차순 정렬</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;제품대분류 내 순위&#39;를 필터에 넣고 - &#39;1, 3까지만 잡아주고&#39; 확인
= 같은 중분류 상위 3개 품목에 대해 순위, 전체순위, 매출 확인 가능
= 월간리포트 상위10위 베스트셀러 항목 표현가능</p>
</blockquote>
</li>
</ul>
<h4 id="--비율차이-전년대비-성장률">- 비율차이, 전년대비 성장률</h4>
<ul>
<li><p>비율차이 = 측정값들 사이의 퍼센트 차이 혹은 성장률</p>
</li>
<li><p>전년대비성장률 = 같은 월에서 이전년도와 비교한 것</p>
</li>
<li><p>예) 앞에있는 값과 비교해 증감을 퍼센트로 나타냄</p>
</li>
<li><blockquote>
<p>좌측 &#39;주문일자&#39; 더블클릭 - 행선반으로 옮기기 - 드릴다운 &#39;월까지, 분기는 뺌&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>좌측 &#39;매출&#39; 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-매출&#39; - &#39;퀵테이블계산-비율차이&#39;</p>
</blockquote>
</li>
<li><p>전년 동월대비 성장률</p>
</li>
<li><blockquote>
<p>&#39;매출&#39; 더블클릭 - &#39;퀵테이블-전년대비성장률&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;측정값&#39; 이름 변경 - ctrl 누르고 좌측바로 드래그 - &#39;전년대비성장률&#39; &amp; &#39;전월대비성장률&#39;</p>
</blockquote>
</li>
<li><ul>
<li>실무에서는 전년대비성장률(날짜타입이 화면에 있어야 비교가능)보다 비중차이(비교대상만 있으면 됨, 전월과의 대비도 가능해서 자주 씀)를 주로 씀</li>
</ul>
</li>
<li><blockquote>
<p>&#39;2016년 1월 ctrl 6월&#39; - &#39;이 항목만 표시&#39; - 전년대비성장률은 연도를 바라보기 때문에 계산값이 안 나옴, 화면상 비율차이는 6월의 직전월이 1월이니까 그에 대한 값 표시 가능</p>
</blockquote>
</li>
</ul>
<h4 id="--백분위">- 백분위</h4>
<ul>
<li>예) 새로운 시트</li>
<li><blockquote>
<p>좌측 &#39;고객명, 매출&#39; 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>뷰화면 &#39;고객명 - 아래방향세모 - 필드 - 합계(매출)&#39; = 내림차순정렬</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-매출&#39; - 우클릭 - &#39;퀵테이블-백분위수&#39;</p>
</blockquote>
</li>
<li>일반적으로 상위 n%로 표시하기 때문에 큰값을 0, 작은값은 100으로 변경</li>
<li><blockquote>
<p>&#39;마크-매출&#39; - 우클릭 - &#39;테이블계산편집 - 백분위수, 내림차순&#39;</p>
</blockquote>
</li>
</ul>
<h4 id="--이동평균">- 이동평균</h4>
<ul>
<li>평균 구하는 기간을 설정, 그 기간을 수로 나눠줌. 
= 시험성적 평균 구하는 것과 동일
= 실제 주식데이터에서 많이 씀(5, 20, 60, 120일을 이동평균기간으로)</li>
<li>예)</li>
<li><blockquote>
<p>좌측 &#39;매출&#39; 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;주문일자&#39; 드래그 - 열선반 - 연속형 분기</p>
</blockquote>
</li>
<li><blockquote>
<p>행선반 &#39;매출&#39; 우클릭 - &#39;퀵테이블 - 이동평균&#39;
= 연분기 기준 매출에 대한 이동평균 적용 중</p>
</blockquote>
</li>
<li><blockquote>
<p>좌측 &#39;매출&#39; 드래그 - 뷰화면 축 안에 넣기 - 오른쪽 상단 색상범위 - 이동평균선은 주황색으로</p>
</blockquote>
</li>
<li><blockquote>
<p>상단 툴바 - &#39;마크레이블표시&#39;
= 이동평균 계산방식: 2019년 4분기의 3억4천~은 = 2019년 2분기 3분기 4분기에 대한 평균 </p>
</blockquote>
</li>
<li>평균 구하는 기간 변경</li>
<li><blockquote>
<p>&#39;측정값-합계(매출)(2)&#39; - 우클릭 - &#39;테이블계산편집-이전값:5&#39;
= 2019년 4분기는 기존의 3억 4천에서~ 3억만 남음. 2018년 3,4, 2019년 1,2,3,4까지 총 6개의 값에 대한 매출평균
= 이동평균선 = 성과기준</p>
</blockquote>
</li>
</ul>
<h4 id="--ytdyear-to-day총계">- YTD(year to day)총계</h4>
<p>= 해당연도 시작일부터 현재일까지. 특정시점까지의 총계</p>
<ul>
<li><p>예)</p>
</li>
<li><blockquote>
<p>좌측 &#39;주문일자&#39; 드래그 - 행선반 - 드릴다운(월까지, 분기는 뺌)</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; 더블클릭 = 연월기준 매출값이 나옴</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-매출&#39; - 우클릭 - &#39;퀵테이블-YTD총계&#39;= 연도내 월별매출이 누적표시</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;측정값-매출&#39; 더블클릭 - YTD에 잘 들어갔는지 확인
= 누계와 거의 동일.
= 누계: 시간의 흐름에 따라 연속적인 누계합계로 표시
= YTD총계: 연도를 기준으로 연속적인 누계합계 표시</p>
</blockquote>
</li>
<li><p>누계, YTD총계 비교</p>
</li>
<li><blockquote>
<p>계산되지않은 &#39;마크-합계(매출)&#39; - &#39;퀵테이블-누계;</p>
</blockquote>
</li>
<li><blockquote>
<p>년바뀌면 새로, 계속 쌓여서 계산
= YTD총계: 누계의 테이블계산을 기준으로 계산방식만 다름. 
= &#39;누계 - 우클릭 - &#39;다음을~&#39; - 패널(아래로)&#39;  </p>
</blockquote>
</li>
</ul>
<h4 id="--통합성장률-연평균-성장률compound-annual-growth-rate">- 통합성장률; 연평균 성장률(Compound Annual Growth Rate)</h4>
<p>= 여러 해 동안의 성장률을 평균으로 환산한 것으로, 매년의 성장률을 산술평균(일반적으로 아는 평균)이 아닌 기하평균(복리효과 발휘한 평균)으로 환산한다.
= (최종연도값/최초연도값)^(1/연도간격)-1</p>
<p>-&gt; 왜곡이 생김.
-&gt; 산업이나 기업의 장기적성장을 위해서는 &#39;기하평균&#39;으로 연평균 성장률을 구해줘야 현실적인 값이 나옴</p>
<ul>
<li>예) 4년간 연평균성장률</li>
<li><blockquote>
<p>좌측 &#39;주문일자, 매출&#39; 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-합계(매출)&#39; 우클릭 - &#39;퀵테이블-통합성장률&#39; = 기하평균 사용한 성장률
= 2019년도 23.7%만 확인하면 됨</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-합계(매출)&#39; ctrl 드래그 - 사이드바&#39;연평균성장률&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바 &#39;매출&#39; 더블클릭 - &#39;퀵테이블계산-전년대비성장률&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>좌측 아래세모 - &#39;계산된필드만들기&#39; - 이름: 산술평균 - &#39;WINDOW AVG&#39;(특정필드값 기준 평균값 반환) - 그 뒤에 &#39;중간부분 측정값카드-전년대비성장률&#39; 드래그 해서 괄호안에 넣음&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>방금만든 계산된필드를 드래그해서 &#39;측정값-연평균성장률&#39;아래에 넣음 - 서식 - 백분율
= 2019년 기준 연평균성장률과 산술평균값이 다르다는 걸 알 수 있음</p>
</blockquote>
</li>
</ul>
<hr>
<h2 id="--계산된-필드">- 계산된 필드</h2>
<h3 id="--구성요소--모두-새로운-필드를-만들어줌">- 구성요소 = 모두 새로운 필드를 만들어줌</h3>
<ul>
<li>필드: 데이터 원본에 존재하는 차원이나 측정값을 활용해 새로운 필드를 만듬</li>
<li>연산자: 함수, 필드, 매개변수등을 사칙계산으로 새로운 값을 만듬. 
데이터 원본에 있는 차원이나 측정값 사용하지 않고도 상수값을 직접입력해 새로운 값을 만들 수 있음</li>
<li>매개변수: 상수값을 동적인 값으로 변경
최근 한달이나 1년등 필요에 따라 범위를 바꿔볼 때 사용</li>
<li>함수: 데이터 원본의 필드와 태블로 내장함수를 활용해 데이터형태를 바꾸거나 원하는 값을 가져오는데 사용</li>
</ul>
<h4 id="--연산자">- 연산자</h4>
<ul>
<li><p>예)</p>
</li>
<li><blockquote>
<p>좌측 &#39;매출&#39; - 드래그 - &#39;마크-텍스트&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;수량, 수익&#39; 더블클릭
= 하나의 측정값 안에 매출, 수량, 수익이 같이 표시됨</p>
</blockquote>
</li>
<li><ul>
<li>일반적으로 &#39;주문건수&#39;는 데이터원본에 없는 경우가 많아 별도로 만들어줘야함. 주의할 건, 중앙번호를 단순카운트하면 중복됨. 고유카운트; DISTINCT를 해줘야함. 고객이 여러제품을 한번에 구매했을 경우, 하나의 주문건수에 다수의 제품이 있기 때문에 같은 주문번호로 제품수만큼의 ROW가 DB테이블에 생성됨</li>
</ul>
</li>
<li><blockquote>
<p>&#39;주문번호&#39; - 우클릭 - &#39;만들기-계산된필드&#39; - &#39;주문건수&#39; - COUNTD([주문번호])</p>
</blockquote>
</li>
<li><p>한번 주문할 때 발생하는 평균금액 확인위해, 주문건당 단가 추가</p>
</li>
<li><blockquote>
<p>왼쪽 상단 아래세모 - &#39;계산된 필드 만들기&#39; -&gt; &#39;주문건당 단가&#39; - &#39;측정값필드- 합계(매출)&#39; 드래그해서 넣고 / &#39;주문건수(이미 COUNTD로 집계된 함수)&#39; 넣어줌</p>
</blockquote>
</li>
<li><p>하나의 주문건에 평균적으로 발생하는 구매수량이 얼마인지 확인할 수 있는 필드 추가</p>
</li>
<li><blockquote>
<p>왼쪽상단 - &#39;계산된필드만들기&#39; - &#39;주문건당 수량&#39; - &#39;측정값-합계&#39; 드래그 해서 넣고 / &#39;주문건수&#39; 드래그 해서 넣음</p>
</blockquote>
</li>
<li><p>수익을 보면 금액보다 수익률로 보는 게 직관적일 듯</p>
</li>
<li><blockquote>
<p>&#39;계산된필드만들기&#39; - &#39;수익률&#39; - &#39;측정값-합계(수익)&#39; 드래그 / &#39;매출&#39; </p>
</blockquote>
</li>
<li><p>주요 KPI는 다 만들었으니 뷰화면에 넣어줄 것</p>
</li>
<li><blockquote>
<p>만든 &#39;주문건수, 주문건당 수량, 단가, 수익률&#39; 드래그 해서 &#39;측정값&#39;에 넣어줌</p>
</blockquote>
</li>
<li><blockquote>
<p>순서: 매출, 수량 = 합계(데이터원본에 있는 필드이기 때문에 기본방식인 합계로 계산됨)
주문건수, 주문건당 단가, 수익, 수익률 = 집계(집계방식이 계산식에 포함돼있어서 집계로)</p>
</blockquote>
</li>
<li><p>측정값 서식 변경
= 수익률이 0으로 나와있음. 현재 매출과 수익은 정수형태. 수익률에 대한 결과값이 소수점으로 나와서 정수형태인 0으로 나오는 중</p>
</li>
<li><blockquote>
<p>측정값에 있는 &#39;수익률&#39; 우클릭 - &#39;서식- 숫자형식 - 백분율 - 소수점 2자리&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;주문건당 수량&#39; - &#39;서식- 숫자형식 - 숫자(사용자지정) - 소수점 1자리&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>좌측 &#39;주문일자&#39; - 열선반에 넣기 = 작년과 비교해 연간 KPI지표 확인 가능</p>
</blockquote>
</li>
</ul>
<p>= 비즈니스를 볼 때 KPI설정해서 보는 게 매우 중요.
= 매출이 성장한다고 무조건 좋은 게 아님. 
예) 2018년도와 2019년도 매출을 보면 성장했지만, 주문건당 단가/수량/수익률 지표는 오히려 떨어짐 = 개선점 파악가능</p>
<h4 id="--논리함수">- 논리함수</h4>
<ul>
<li><p>if, case와 같은 함수를 말함. 
특정 조건이 참인지 거짓인지 여부 결정가능
태블로에서 가장 많이 쓰는 함수 중 하나
로직 세우는 게 어려운 함수라서, 다양한 상황에서 사용해보는 게 중요</p>
</li>
<li><p>예)</p>
</li>
<li><blockquote>
<p>&#39;매출&#39; 드래그 - 열선반</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;제품중분류&#39; 더블클릭 - 내림차순 정렬 - 전체보기</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; 드래그 - &#39;마크-레이블&#39;</p>
</blockquote>
</li>
<li><p>식을 만들어서 매출합계가 2억 이상/미만인 제품 중분류를 색상으로 구분</p>
</li>
<li><blockquote>
<p>상단 아래방향세모 - &#39;계산된필드&#39; - &#39;매출 2억 구분&#39; - IF SUM([&#39;매출&#39;] &gt;= 200000000 THEN &#39;2억 이상 매출&#39; ELSE &#39;2억 미만 매출&#39; END</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출 2억 구분&#39; 필드 드래그 - &#39;마크-색상&#39; - 오른쪽 색상편집 - &#39;이상은 노란색, 미만은 회색으로 설정&#39;</p>
</blockquote>
</li>
<li><p>2억기준 참조선 추가</p>
</li>
<li><blockquote>
<p>좌측 &#39;분석 - 상수라인 - 테이블&#39; = 입력값=최소값을 기준으로 나옴</p>
</blockquote>
</li>
<li><blockquote>
<p>선 선택 - &#39;편집 - 값:200M&#39; </p>
</blockquote>
</li>
<li><p>IIF함수를 써서 같은 결과값 만들 것</p>
</li>
<li><blockquote>
<p>&#39;매출 2억구분&#39; - 우클릭 - &#39;편집 - 계산식 앞에 //를 넣어서 주석처리&#39; - 추가: IIF((SUM([&#39;매출&#39;])&gt;= 200000000, &#39;2억 이상 매출&#39;, &#39;2억 미만 매출&#39;)
= 사용하고자 하는 조건이 한 가지면 IF보다는 IIF를 통해 문장길이 줄이는 걸 추천</p>
</blockquote>
</li>
<li><p>IIF보다 더 간결하게 만들어보겠다</p>
</li>
<li><blockquote>
<p>좌측상단 &#39;계산된필드&#39; - &#39;매출 2억 구분_TF&#39; - SUM([&#39;매출&#39;]) &gt;= 200000000</p>
</blockquote>
</li>
<li><blockquote>
<p>좌측보면 TF라고 표시돼있음. 
= 앞서만든 IF나 IIF는 조건 뒤 원하는 문자형태의 값을 입력해줌
= TF 필드는 만든 로직이 참이냐 거짓이냐에 따라 결과가 나옴</p>
</blockquote>
</li>
<li><blockquote>
<p>만든 TF를 &#39;마크-합계(매출)&#39;위에 올려놓음 
= 색상범례가 T/F로 구분됨
= 문자형보다 BOOL이 데이터 처리속도가 빠름</p>
</blockquote>
</li>
</ul>
<h4 id="--매개변수범위형">- 매개변수(범위형)</h4>
<p>지난 시간 만든 2억구분 차트 활용</p>
<ul>
<li><p>예) </p>
</li>
<li><blockquote>
<p>상수라인 제거, &#39;색상-매출(2억)&#39; 삭제</p>
</blockquote>
</li>
<li><blockquote>
<p>상단 - &#39;매개변수만들기 - &#39;이름: 특정 금액 이상, 데이터유형: 정수, 허용가능값: 범위, 최소값: 50M, 최대값: 500M, 단계크기: 최소값복사해서 동일하게&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>매개변수 - 우클릭 - &#39;매개변수 표시&#39;
= 단독으로 사용할 수 없고, 계산식이나 참조식과 함께 사용해야함</p>
</blockquote>
</li>
<li><p>계산식 생성</p>
</li>
<li><blockquote>
<p>상단 - &#39;계산된필드 만들기&#39; - &#39;이름: 특정 금액 이상 색상구분&#39; - SUM([&#39;매출&#39;]) &gt;= 특정금액이상 매개변수 드래그</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;특정금액이상 색상구분&#39;이 BOOL형태라 앞에 TF가 뜸. - &#39;마크-색상&#39;에 드래그 - &#39;색상편집: 노랑, 거짓&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>매개변수 조절하면서 값이 달라짐</p>
</blockquote>
</li>
<li><p>라인추가</p>
</li>
<li><blockquote>
<p>&#39;분석 - 참조선 - 테이블 - 값: 특정금액이상, 레이블: 사용자지정 &lt;값&gt;, 라인: 점선 빨간색, 
= 값 변화에 따라 색상, 참조선, 참조선 값이 같이 바뀜</p>
</blockquote>
</li>
</ul>
<h4 id="--매개변수목록형">- 매개변수(목록형)</h4>
<p>= 실무에서 대시보드 제작시 많이 사용
= 외국계회사인 경우 화폐단위가 달라서 필수적으로 사용해야함</p>
<ul>
<li>예) 원화와 달러기준의 매출 같이 확인할 수 있는 테이블</li>
<li><blockquote>
<p>새로운 시트 - &#39;주문일자, 제품 대분류, 매출&#39; 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>상단 - &#39;계산된필드만들기&#39; - USD - SUM([&#39;매출&#39;])  / 1120</p>
</blockquote>
</li>
<li><blockquote>
<p>USD를 뷰화면의 매출값이 표시된 영역에 드래그</p>
</blockquote>
</li>
<li>다른 사람과 같이 볼 경우를 생각해 좀 더 쉽게 화면 구성</li>
<li><blockquote>
<p>상단 - &#39;매개변수 만들기 - 이름: 환율, 허용가능한 값: 목록, 값: 1 - 1120, 표시형식: KRW - USD</p>
</blockquote>
</li>
<li><blockquote>
<p>매개변수 우클릭 - &#39;매개변수표시&#39;</p>
</blockquote>
</li>
<li>매개변수는 단독으로 사용이 안 돼서 계산된 필드 추가해서 매출과 같이 묶어줄 것</li>
<li><blockquote>
<p>&#39;계산된필드 만들기&#39; - KRW/USD - SUM([&#39;매출&#39;]) / 환율 매개변수 드래그해서 가져오기</p>
</blockquote>
</li>
<li><blockquote>
<p>KRW/USD 필드를 &#39;측정값&#39; 마지막 아래쪽에 추가 
= 합계 매출액 값과 동일하게 표시됨 
= 현재는 매개변수가 KRW로 설정돼있음
= 우측에서 바꿔주면 USD로 바뀜</p>
</blockquote>
</li>
</ul>
<h4 id="--매개변수날짜형">- 매개변수(날짜형)</h4>
<p>= 실무에서 대시보드 제작시 많이 사용
= 실무자용 대시보드 만들 때 날짜형태는 from 형태의 매개변수 추가해서 만듬
월이나 분기단위로도 보지만, 특정 이벤트를 진행했을 때 그 기간의 성과를 보기에 유용하기도 함.</p>
<ul>
<li>예) </li>
<li><blockquote>
<p>새 시트 - &#39;주문일자&#39; 드래그 - 열선반(주문일자 연속형)</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; 드래그 - 행선반</p>
</blockquote>
<ul>
<li>범위지정</li>
<li><blockquote>
<p>아래세모 - &#39;매개변수만들기&#39; - From - 데이터유형: 날짜</p>
</blockquote>
</li>
</ul>
</li>
<li><blockquote>
<p>&#39;매개변수만들기&#39; - To - 데이터유형: 날짜</p>
</blockquote>
</li>
<li><blockquote>
<p>둘다 우클릭 - &#39;매개변수표시&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>from = 2019.01.01, to = 2019.01.31</p>
</blockquote>
</li>
<li>계산된 필드와 매개변수를 묶어서 동적으로 만들어주기</li>
<li><blockquote>
<p>아래세모 - &#39;계산된필드만들기&#39; - 날짜선택 - 주문일자 드래그  &gt;= [From]
AND
주문일자 드래그 &lt;= [To]</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;날짜선택&#39; 필드 - 필터로 이동 - &#39;참&#39;만 표시</p>
</blockquote>
</li>
<li><blockquote>
<p>행선반 &#39;주문일자&#39; 우클릭 - 불연속형</p>
</blockquote>
</li>
</ul>
<h4 id="--매개변수복합-매개변수">- 매개변수(복합 매개변수)</h4>
<p>= 한 화면에서 다양한 각도로 분석이 필요할 때 복합 매개변수 활용</p>
<ul>
<li>예) 하나의 차원이나 측정값이 아니라, 여러개를 바꿔가면서 보려는 것. 
= 차원과 측정값을 각각 매개변수와 엮어서 하나의 필드로 만들 필요가 있다 
= 차원은 제품 중분류와 대분류를 바꾸고, 측정값은 매출 수량 수익 할인율을 바꿔서 볼 것</li>
<li><blockquote>
<p>새 시트 - 아래세모 - &#39;매개변수만들기&#39; - 차원 선택 - 허옹가능값: 목록, 값: 1, 2 / 표시형식: 제품 대분류, 제품 중분류</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매개변수만들기&#39; - 측정값 선택 - 허용가능값: 목록, 값: 1, 2, 3, 4 / 표시형식: 매출, 수량, 수입, 할인율</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매개변수&#39; 우클릭 - 화면에 &#39;매개변수표시&#39;</p>
</blockquote>
</li>
<li>계산된 필드로 매개변수 엮기</li>
<li><blockquote>
<p>&#39;계산된필드만들기&#39; - 차원 필드 선택 -
CASE 차원선택드래그
WHEN 1 THEN [제품 대분류]
WHEN 2 THEN [제품 중분류]
END</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;차원필드선택&#39; 드래그 - 열선반</p>
</blockquote>
</li>
<li><blockquote>
<p>아래세모 - &#39;계산된필드만들기&#39; - 측정값 필드 선택 - 
CASE 측정값선택 매개변수 드래그
WHEN 1 THEN SUM([매출])
WHEN 2 THEN SUM([수량])
WHEN 3 THEN SUM([수익])
WHEN 4 THEN AVG([할인율]) * 100
END</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;측정값필드선택&#39; 드래그 - 행선반, &#39;마크-레이블&#39;</p>
</blockquote>
</li>
<li>측정값별 단위를 붙여주기</li>
<li><blockquote>
<p>좌측 &#39;측정값필드선택&#39; 우클릭 - &#39;복제&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>우클릭 - &#39;편집&#39; - 단위선택 - 
WHEN 1 THEN &#39;원&#39;
WHEN 2 THEN &#39;개&#39;
WHEN 3 THEN &#39;원&#39;
WHEN 4 THEN &#39;%&#39;
END</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;단위선택&#39; 필드를 &#39;마크-레이블&#39;에 넣어주기</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;레이블&#39; 선택 - &#39;텍스트-편집&#39; - 단위를 측정값 옆으로 붙여줌</p>
</blockquote>
</li>
<li>매개변수에 따라 시트 명이 바뀌도록</li>
<li><blockquote>
<p>뷰화면 상단 &#39;시트명&#39; 우클릭 - &#39;제목편집&#39; - 현재 이름 지우고, 삽입 - &lt;매개변수차원선택&gt; &lt;매개변수 측정값선택&gt; - 차원선택은 파란색, 측정값선택은 빨간색으로 수정</p>
</blockquote>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.19] What is Machine Learning(2)]]></title>
            <link>https://velog.io/@haeun_71/2023.12.19-What-is-Machine-Learning2</link>
            <guid>https://velog.io/@haeun_71/2023.12.19-What-is-Machine-Learning2</guid>
            <pubDate>Tue, 19 Dec 2023 02:54:14 GMT</pubDate>
            <description><![CDATA[<h2 id="--scikit-learn">- scikit learn</h2>
<p>= 2007년 구글 썸머코드에서 처음 구현
= 현재 파이썬에서 가장 유명한 기계학습 오픈소스 라이브러리</p>
<h4 id="--scikit-learn을-이용한-결정나무의-구현">- scikit learn을 이용한 결정나무의 구현</h4>
<pre><code>from sklearn.tree import DecisionTreeClassifier

iris_tree = DecisionTreeClassifier()

iris.data
iris.data.shape
iris_tree.fit(=학습해라) (iris.data[:, 2:], iris.target())
= petal length와 width를 구하는 것
= 사람도 이건 강아지야, 고양이야라고 배워서 아는 것 
= 데이터 알려주고, 정답을 주는 것
= 학습 끝</code></pre><h4 id="--accuracy-확인">- accuracy 확인</h4>
<p>값만 던져주고 예측하라고 시킨 것 
= 데이터에서 학습한게 iris_tree
= 학습이 완료된 애한테 데이터를 주고</p>
<pre><code>from sklearn.metrics import accuracy_score

y_pred-tr = iris_tree.predict(iris.data[:, 2:])
accuracy_score(iris.target, y_pred_tr)</code></pre><h3 id="decisiontree를-이용한-iris-분류">decisionTree를 이용한 iris 분류</h3>
<h2 id="--과적합">- 과적합</h2>
<h3 id="--지도학습">- 지도학습</h3>
<ul>
<li>학습 대상이 되는 데이터에 정답(label)을 붙여서 학습시키고 </li>
<li>모델을 얻어서 완전히 새로운 데이터에 모델을 사용해서 &#39;답&#39;을 얻고자 하는 것</li>
</ul>
<p>머신러닝안에 딥러닝이 포함된다고 하지만, 딥러닝의 규모가 꽤 커졌다.</p>
<h4 id="--mlxtend-설치">- mlxtend 설치</h4>
<p>sklearn에 없는 몇몇 유용한 기능을 가지고 있다</p>
<pre><code>pip install mlxtend</code></pre><p>...</p>
<h3 id="결과를-보여주는-잔기술들zip과-언패킹">결과를 보여주는 잔기술들(zip과 언패킹)</h3>
<h4 id="--리스트를-튜플로-zip">- 리스트를 튜플로 zip</h4>
<pre><code>list = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
list2 = [1, 2, 3]

pairs = [pair for pair in zip(list1, list2)]
pairs

==&gt; [(&#39;a&#39;, 1), (&#39;b&#39;, 2), (&#39;c&#39;, 3)]</code></pre><p>만약 리스트를 다시 a,1  b,2  c,3과같은 튜플로 만들고 싶을 때 
= 같은 위치끼리 묶어서 만들어줌</p>
<h4 id="--튜플을-dict으로">- 튜플을 dict으로</h4>
<pre><code>dict(pairs)</code></pre><h4 id="--한번에">- 한번에</h4>
<pre><code>dict(zip(list1, list2))</code></pre><h4 id="--풀고싶다면unpacking-인자를-이용한-역변환">- 풀고싶다면(unpacking 인자를 이용한 역변환)</h4>
<pre><code>a, b = zip(*paris)

print(list(a))
print(list(b))</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.18] What is Machine Learning]]></title>
            <link>https://velog.io/@haeun_71/2023.12.18-What-is-Machine-Learning</link>
            <guid>https://velog.io/@haeun_71/2023.12.18-What-is-Machine-Learning</guid>
            <pubDate>Mon, 18 Dec 2023 03:11:21 GMT</pubDate>
            <description><![CDATA[<h2 id="--머신러닝이란">- 머신러닝이란?</h2>
<ul>
<li>머신러닝은 명시적으로 프로그래밍하지 않고도 컴퓨터에 학습할 수 있는 능력을 부여하는 학문
= 머신이, 명시적인 프로그램에 의해서가 아니라, 주어진 데이터를 통해 규칙을 찾는 것</li>
<li>(과거 데이터로부터 얻은) 경험이 쌓여감에 따라 주어진 태스크의 성능이 점점 좋아질 때 컴퓨터 프로그램은 경험으로부터 학습한다고 할 수 있음</li>
</ul>
<h3 id="--흔히-말하는-머신러닝딥러닝의-역사">- 흔히 말하는 머신러닝(딥러닝)의 역사</h3>
<ul>
<li><p>아더 사뮤엘
: 처음으로 머신러닝이라는 용어 사용
: 체커 게임(1959) - 스스로 학습하는 
다양한 파트의 사람들이 자신의 파트에 인공지능을 접목하고자 </p>
</li>
<li><p>IBM 딥블루
: 세계 체스 챔피언에게 승리(1997)</p>
</li>
<li><p>DEEPMIND 알파고
: 이세돌에게 4:1 승리(2016)</p>
</li>
<li><p>로젠블롯의 퍼셉트론(1962)
: 최초의 인공신경망</p>
</li>
</ul>
<h3 id="--직접-머신-휴먼러닝을-해봅시다">- 직접 (머신) 휴먼러닝을 해봅시다</h3>
<ul>
<li>머신러닝이 어떤 것인지, 어떤 절차를 수행하는 것인지 알기 위해</li>
</ul>
<h4 id="--iris-classification">- Iris Classification</h4>
<ul>
<li>아이리스(프랑스의 국화) 분류문제
= versicolor / virqinica / setosa
= 꽃잎(petal), 꽃받침(sepal)의 길이와 너비정보를 이용해 3종의 품종을 구분할 수 있을까?</li>
</ul>
<h4 id="--데이터관찰python">- 데이터관찰(python)</h4>
<ul>
<li>불러오기<pre><code>from sklearn.datasets. import load_iris
</code></pre></li>
</ul>
<p>iris = load_iris()</p>
<pre><code>- 뭐가있나?</code></pre><p>iris
iris.keys()
print(iris[&quot;DESCR&quot;]
(사이킷런으로 받아온 데이터에는 설명이 포함돼있음)</p>
<p>print(iris[&quot;target_names&quot;])
...</p>
<pre><code>#### - 상황파악(머신러닝말고 우리 눈으로)
- 먼저 구분을 위해 iris의 3개 품종의 특성을 먼저 공부해야한다.

#### - pandas
- 데이터를 바로 딥러닝에 적용하거나, sklearn 을 이용한 머신러닝에 적용할 때 꼭 필요한 건 아님
- 데이터를 정리해서 관찰할 때는 아주 유용한 도구가 pandas
- 미국식 농담으로 pandas = 스테로이드 맞은 엑셀

#### - DataFrame으로 만들기</code></pre><p>iris_pd = pd.DataFrame(iris.data, columns=iris(&quot;feature_names&quot;)
iris_pd</p>
<pre><code>#### - 품종 정보도 column에 포함</code></pre><p>iris_pd[&quot;species&quot;] = iris.target
iris_pd.head()</p>
<pre><code>#### - 일단 그래프 그리는 모듈 import</code></pre><p>import seaborn as sns
import matplotlib.pyplot as plt</p>
<pre><code>#### - sepal length(cm)와 species의 관계 -&gt; boxpolt</code></pre><p>plt.figure(figsize=(12, 6))
sns.boxplot(x=&#39;sepal length (cm)&#39;,  y=&#39;species&#39;, data=iris.pd, orient=&#39;h&#39;);</p>
<p>= 3개가 다 겹치는 부분이 있고, 버지니카 중 하나다 예외값을 가짐</p>
<pre><code>
#### - petal length(cm)와 species의 관계 -&gt; boxpolt</code></pre><p>plt.figure(figsize=(12, 6))
sns.boxplot(x=&#39;sepal length (cm)&#39;,  y=&#39;species&#39;, data=iris.pd, orient=&#39;h&#39;);</p>
<p>= setosa 는 petal이라는 특성을 통해 명확히 구분 가능</p>
<pre><code>#### - pairplot = 전체보기</code></pre><p>sns.pairplot(iris_pd, hue=&#39;species&#39;)</p>
<pre><code>#### - 품종 세개를 구분할 수 있을까?
- petal length로는 setosa 는 가능하다.
대략 2.5보다 작으면 다 setosa로 구분가능

- 몇개의 대이터는 놓치지만 petal width가 1.6정도에서 자르면
-&gt; versicolor = length &gt; 2.5, width &lt; 1.6
-&gt; verginica = length &gt; 2.5, width &gt; 1.6

- 이 내용을 질문(조건문)으로 순차적으로 표현
= Decision Tree라는 알고리즘

#### - 결과가 정확하냐는 질문에 답하기 위해 알고리즘이 등장
- 현재 상황에서는 이것이 최선이라는 근거
가로선이 어디있는게 최선인지 확인해보기
- 다양한 방향으로 진행했을 때의 각각의 차이점에 대한 정량적 수치 제시    

#### Decision Tree
- 조건을 따라 흘러가는 모양새가 직관적으로 알기 좋음
- 스킬 발휘 유무에 큰 차이가 없음
간결하게 설명가능
- 머신러닝 알고리즘 중 딥러닝과 머신러닝 중 머신러닝을 선택했다면, 앙상블 계열의 알고리즘의 기본이 decision tree

#### - 데이터 변경</code></pre><p>iris_pd[&#39;species&#39;]
==&gt; 0, 1, 2가 나옴</p>
<p>iris_pd[&#39;species&#39;] == 0
==&gt; T, F로 나옴</p>
<p>iris_pd[&#39;species&#39;] ! = 0
==&gt; F, T로 나옴</p>
<p>iris_pd[iris_pd[&#39;species&#39;] ! = 0]
==&gt; F 를 다 빼버림 = IRIS 1, 2</p>
<pre><code>
#### - 학습을 위해 두개의 데이터에 집중해보자
- 오직 직선으로 나눠야함(수평 혹은 수직)
- 선이 어디있어야 오차가 적을지 고민해야함

= Decision Tree의 분할기준(split criterion)

#### - 정보획득
- 정보의 가치를 반환하는데 발생하는 사전의 확률이 작을수록 정보의 가치는 커진다(=확률적 희소성)
- 정보 이득이란 어떤 속성을 선택함으로써 데이터를 더 잘 구분하게 되는 것

#### - 엔트로피 개념
- 열역학의 용어로 물질의 열적 상태가 점점 차가운 곳으로 진행
= 확률분포(정보)의 무질서나 불확실성을 수치적으로 나타냄.
= 확률들의 합
= 엔트로피가 낮으면 질서 있는 상태, 높으면 무질서한 상태

#### -p \log_{2}(p)
- 엔드토피는 이 확률들의 합이다
</code></pre><p>import numpy as np</p>
<p>p=np.arange(0.001, 1, 0.001)
plt.grid()
plt.title(&#39;$-p \log_{2}(p)$&#39;)
plt.plot(p, -p*np.log2(p));</p>
<pre><code>#### - 엔트로피 연습
</code></pre><p>(두개로 나눠진 것 중 하나를 고를 확률 * (-pi(빨간공 개수) * log2 * pi(파란공개수)) </p>
<ul>
<li>(반대편도 똑같이)
```<h4 id="--지니계수">- 지니계수</h4>
</li>
<li>불순도율을 나타냄</li>
<li>엔트로피의 계산량이 많아서 비슷한 개념이면서 보다 계산량 적은 지니계수를 사용하는 경우가 많음<pre><code>예)
1- (6/16)**2 - (10/16)**2</code></pre>= 분할 했을 때 지니계수가 낮을 수록, 분할하는 것이 좋다</li>
</ul>
<h4 id="--어떻게-가르는-게-좋은가">- 어떻게 가르는 게 좋은가?</h4>
<p>아래서부터 올라오면서 지니계수 계산을 계속함
요즘엔 코딩된게 있어서 frame work로 다들 공유함</p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.15] Tableau(3)]]></title>
            <link>https://velog.io/@haeun_71/2023.12.15-Tableau3</link>
            <guid>https://velog.io/@haeun_71/2023.12.15-Tableau3</guid>
            <pubDate>Fri, 15 Dec 2023 12:15:21 GMT</pubDate>
            <description><![CDATA[<h3 id="--다양한-기능활용">- 다양한 기능활용</h3>
<h4 id="--그룹">- 그룹</h4>
<ul>
<li><p>실습) 
좌측 &#39;시도&#39; 우클릭 - &#39;만들기-그룹&#39; - &#39;경기도, 서울특별시, 인천광역시 - 그룹(&quot;수도권&quot;) - 기타포함 클릭&#39;</p>
</li>
<li><blockquote>
<p> &#39;매출&#39; 더블클릭 - &#39;주문일자&#39; 드래그 해서 &#39;열&#39;에 올려놓기 - &#39;분기(주문일자) 선택
= 분기별로 매출값이 나오고 있음</p>
</blockquote>
</li>
<li><p>시도 그룹별 색상으로 구분</p>
</li>
<li><blockquote>
<p>&#39;시도(그룹)&#39; 드래그 - &#39;마크-색상&#39; - &#39;막대&#39;로 변경</p>
</blockquote>
</li>
<li><blockquote>
<p>열선반의 &#39;분기(주문일자)&#39; 우클릭 - &#39;불연속형&#39;
= 분기별 간격이 생김</p>
</blockquote>
</li>
<li><blockquote>
<p>전체보기, 행렬위치 변경</p>
</blockquote>
</li>
<li><p>연 기준으로 수도권과 기타지역의 매출비중표시</p>
</li>
<li><blockquote>
<p>열 선반 &#39;매출&#39; 우클릭 - &#39;퀵테이블계산-구성비율&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>열 선반 &#39;매출&#39; 우클릭 - &#39;다음을 사용해 계산 - 테이블(옆)&#39; 
= 각각의 분기별로 100%가 맞춰지면서, 분기별 수도권과 기타지역 매출비중이 나옴</p>
</blockquote>
</li>
<li><p>비중표시</p>
</li>
<li><blockquote>
<p>열선반 &#39;매출&#39;을 CTRL누르고, &#39;마크-레이블&#39;에 넣어줌</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;서식&#39; - &#39;패널- 숫자 - 백분율:0&#39;</p>
</blockquote>
</li>
<li><p>분기별 수도권매출이 절반을 넘어서는지 보기 위해 상수라인 추가</p>
</li>
<li><blockquote>
<p>좌측사이드바 &#39;분석&#39; - &#39;상수라인&#39; 드래그 - 값: 0.5 입력</p>
</blockquote>
</li>
<li><blockquote>
<p>기준선 잘보이게, 하단의 &#39;매출에 대한 통계&#39;축에서 우클릭 - &#39;참조선 편집&#39; - 라인: 점선, 빨간색</p>
</blockquote>
</li>
<li><p>수도권이 강조돼보이도록 색상변경</p>
</li>
<li><blockquote>
<p>&#39;마크-색상편집&#39; - &#39;기타&#39; 더블클릭 - &#39;흰색&#39;으로 변경 - &#39;수도권&#39; 더블클릭, 노란색으로 변경 - &#39;테두리 색상&#39;ㅣ 회색</p>
</blockquote>
</li>
<li><blockquote>
<p>라인이 떠보이면? 뷰에서 우클릭 - &#39;서식&#39; - &#39;라인서식&#39; - &#39;축눈금자&#39; 색상을 통일시키면 됨</p>
</blockquote>
</li>
<li><p>그룹편집</p>
</li>
<li><blockquote>
<p>좌측 &#39;시도(그룹)&#39; 우클릭 - &#39;그룹편집&#39; - &#39;기타 중 광주, 대구, 대전, 부산, 울산 을 하나의 그룹으로&#39; - 적용</p>
</blockquote>
</li>
<li><blockquote>
<p>새로운 그룹이 추가됨</p>
</blockquote>
</li>
</ul>
<h4 id="--집합">- 집합</h4>
<p>= 해당되는 집합에 포함되는지? 안되는지?로만 나뉨</p>
<ul>
<li>&#39;시도&#39; 우클릭 - &#39;집합&#39;선택 - &#39;서울, 경기, 인천&#39; 선택</li>
<li><blockquote>
<p>&#39;시도&#39;집합을 드래그 해서 &#39;마크-색상&#39;에 있는 &#39;시도(그룹)&#39;과 교체</p>
</blockquote>
</li>
<li><blockquote>
<p>색상변화O. 매출비중에는 영향X</p>
</blockquote>
</li>
<li><blockquote>
<p>IN - 수도권, OUT - 기타
= 두개그룹을 나눌 땐 그룹, 집합 어느걸 사용해도 문제없음
= 세개 이상의 그룹을 나눠볼 땐, 반드시 &#39;그룹&#39;을 사용해야함</p>
</blockquote>
</li>
</ul>
<h4 id="--결합된-집합">- 결합된 집합</h4>
<ul>
<li><p>실습) 고객별 매출상위 1~10위의 집합</p>
</li>
<li><blockquote>
<p>&#39;고객명&#39; 더블클릭 - &#39;매출&#39; 더블클릭 - &#39;내림차순&#39; 정렬</p>
</blockquote>
</li>
<li><blockquote>
<p>좌측 &#39;고객명&#39; 우클릭 - &#39;만들기-집합&#39; - &#39;이름: TOP 10&#39; - &#39;상위&#39; - &#39;필드기준: 10&#39;</p>
</blockquote>
</li>
<li><p>실습) 고객별 매출상위 1~20위의 집합</p>
</li>
<li><blockquote>
<p>좌측 &#39;TOP 10&#39; 우클릭 - &#39;복제&#39; - 우클릭 - &#39;집합 - 편집&#39; - &#39;이름: TOP 20&#39; - &#39;상위&#39; - &#39;필드기준: 20&#39;</p>
</blockquote>
</li>
</ul>
<p>-
TOP10, TOP20 집합을 드래그 - 상단 &#39;행&#39; 에 넣기
-&gt; 제외한 사람은 OUT으로 표현됨</p>
<ul>
<li>상위 11~20위까지의 집합 만들기</li>
<li><blockquote>
<p>좌측의 TOP10, TOP20 선택 - 우클릭 - &#39;결합된 집합만들기&#39; - &#39;이름: TOP11~20, 세번째 기준선택&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>결합된 집합 드래그 - &#39;행&#39;에 올려놓기</p>
</blockquote>
</li>
<li><blockquote>
<p>드래그 해서 &#39;필터&#39;에 넣고 - &#39;IN&#39;만 클릭 - 화면에 표시
= RANK라는 함수를 써서도 동일한 결과획득가능</p>
</blockquote>
</li>
</ul>
<h4 id="--계층">- 계층</h4>
<ul>
<li><p>화면에서 드릴다운한 값을 세부적으로 찾는데 유용</p>
</li>
<li><p>지역데이터 기준으로, 동일한 시군구가 있을 때 여러 에러가 발생가능. 
상위와 하위 레벨에 대한 계층 만들어주는게 중요</p>
</li>
<li><p>실습)</p>
</li>
<li><blockquote>
<p>&#39;매출&#39; 더블클릭 - &#39;제품 대분류&#39; 더블클릭 - 행렬전환, 전체보기</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;제품 중분류&#39;를 &#39;행&#39;에 추가
= 대분류와 중분류의 매출 합계를 바꿔가며 확인하는 경우, 계층을 만들어주면 하나의 차트에서 확인가능. </p>
</blockquote>
</li>
<li><p>계층만드는 방법
1) 하위개념인 차원필드로 드래그해서, 계층을 만들고자 하는 상위필드위에 올려놓기
예) &#39;제품 중분류&#39;를 드래그해서 &#39;제품 대분류&#39;에 올려줌
2) 계층을 만들고자 하는 차원필드(제품대분류, 제품중분류를 동시 선택) - 우클릭 - &#39;계층-계층만들기&#39;</p>
</li>
<li><blockquote>
<p>상단의 &#39;제품대분류&#39;에 -가 생김.</p>
</blockquote>
</li>
<li><p>) 계층을 만들지 않아도, 자동적으로 만들어놓는 필드명이 있음.</p>
</li>
<li><blockquote>
<p>&quot;날짜형식의 필드&quot; : 년, 분기, 월, 일 형태로 계층이 만들어져있음</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;시간이 포함된 날짜형식&#39; : 일 + 시, 분, 초까지 드릴다운 가능
= 대시보드에서 비슷한 유형의 시트를 줄여줄 수 있어서 효율적인 대시보드 만들기 가능</p>
</blockquote>
</li>
</ul>
<hr>
<h3 id="--맵차트-만들기">- 맵차트 만들기</h3>
<ul>
<li><p>실습)</p>
</li>
<li><blockquote>
<p>&#39;국가&#39; 필드 앞 &#39;ABC&#39; 선택 - &#39;지리적 역할 - 국가&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>측정값부분에 &#39;경도&#39;, &#39;위도&#39; 생성됨 + &#39;국가&#39; 필드앞 지구본 모양으로 변경</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;국가&#39; 필드 더블클릭. 
= 우리나라 위치에만 점이 찍힘. 위치값이 우리나라밖에 없음</p>
</blockquote>
</li>
<li></li>
<li><blockquote>
<p>&#39;시도&#39;필드 앞 부분 데이터타입 선택 - &#39;지리적역할-주/시/도&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;시도&#39;필드 더블클릭
= 우리나라 17개의 시/도가 원으로 찍힘</p>
</blockquote>
</li>
<li></li>
<li><blockquote>
<p>&#39;시군구&#39;필드 앞 선택 - &#39;지리적역할-시군구&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>더블클릭</p>
</blockquote>
</li>
<li><p>국가, 시도, 시군구 기준으로 계층만듬
(계층없으면 일부데이터가 누락됨)</p>
</li>
<li><blockquote>
<p>상단 아이콘 툴바에서 &#39;시트 지우기&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>시군구 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>우측 하단에 &#39;7개의 알수없는 값이 뜸&#39; - &#39;특수값 - 위치편집 
= 동일한 시군구 지역명이 시도에 있기 때문에</p>
</blockquote>
</li>
<li><p>시트 지우기</p>
</li>
<li><blockquote>
<p>&#39;시군구&#39;, &#39;시도&#39;를 각각 행 선반에 넣음</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;시도&#39; 우클릭 - &#39;측정값-카운트(고유)&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;시도&#39;값을 &#39;마크-레이블&#39;에 넣음</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;시군구&#39; 별 몇개의 시도를 갖고 있는지 카운트해서 보여줌. 두개 이상 = 동일한 시군구가 있다는 것. </p>
</blockquote>
</li>
<li><blockquote>
<p>레이블에 있는 &#39;시도&#39;를 CTRL로 &#39;필터&#39;에 넣어줌 - &#39;카운트(고유) - 값범위:2&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>화면의 &#39;강서구&#39;부터 &#39;중구&#39;까지 CTRL 눌러서 선택 - &#39;이 항목만 유지&#39; - &#39;필터- 시도&#39; 삭제</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바의 &#39;시도&#39;드래그 - 행 자리의 &#39;시군구&#39; 옆에 놔둠</p>
</blockquote>
</li>
<li><p>시트 삭제 / 계층 생성</p>
</li>
<li><blockquote>
<p>&#39;시도&#39;보다 하위인 &#39;시군구&#39;드래그해서 상위레벨인 &#39;시도&#39;에 올려 계층필드를 만들어줌 - 이름: 지도</p>
</blockquote>
</li>
<li><blockquote>
<p>시군구 더블클릭 = 시군구와 계층으로 묶여 있는 걸 마크에서 볼 수 있듯, 모든 시군구에 대해 정상적으로 매칭됨</p>
</blockquote>
</li>
<li><blockquote>
<p>지도필드에 &#39;국가&#39;를 드래그 - 지역계층에 &#39;국가, 시도, 시군구&#39;순으로 계층생성</p>
</blockquote>
</li>
<li><p>계층확인위해 시트 삭제</p>
</li>
<li><blockquote>
<p>&#39;사이드바에서 국가&#39;더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>우리나라에 점 하나 찍히고, &#39;마크-국가&#39;에 +가 생김, 누르면 행정구역 표시, 또 누르면 시군구가 찍힘</p>
</blockquote>
</li>
<li><p>시트 생성</p>
</li>
<li><blockquote>
<p>사이드바의 &#39;시군구&#39;더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39;드래그 &#39;마크-크기&#39;에 놓고 크기 확대</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;수익&#39; - &#39;마크-색상&#39; - 색상선택:불투명도 70, 테두리는 검정
= 각 시군구별 매출이 크고 작은 곳을 볼 수 있음</p>
</blockquote>
</li>
</ul>
<h4 id="--도구설명활용">- 도구설명활용</h4>
<ul>
<li><p>기존 맵차트 복제 + 새 시트 만들기</p>
</li>
<li><p>새시트</p>
</li>
<li><blockquote>
<p>상단의 행에 &#39;제품 대분류, 중분류&#39; 추가</p>
</blockquote>
</li>
<li><blockquote>
<p>열에 &#39;매출&#39; - 내림차순 - 그 옆에 있는 &#39;마크레이블&#39;달아줌</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;수익&#39; - &#39;마크-색상&#39;</p>
</blockquote>
</li>
<li><p>도구설명활용 시트</p>
</li>
<li><blockquote>
<p>&#39;마크- 도구설명&#39; 클릭 - 세부항목 편집창이 뜸 </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;수익&#39;아래쪽 클릭 - 상단의 &#39;삽입 - 시트(새로 만든시트) 클릭&#39; - &#39;수익 아래 추가된 정보 중 &quot;&quot;안에 있는 건 수정가능 : 마우스오버했을 때 차트가 좀 더 잘보이게 넓이와 높이 수정하기&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;넓이: 500, 높이: 400&#39;으로 변경</p>
</blockquote>
</li>
<li><blockquote>
<p>마우스 오버하면 각 지역별 매출과, 제품분류로 지표확인가능</p>
</blockquote>
</li>
</ul>
<h4 id="--필터활용">- 필터활용</h4>
<p>오른쪽 상단의 &#39;전체- 드랍다운- 선택된 지역만 보고 강조 가능&#39;</p>
<ul>
<li><p>기존 맵차트 복제</p>
</li>
<li><blockquote>
<p>지역별 영역이 구분되도록, &#39;크기&#39;에 들어가있는 &#39;매출&#39;제거</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-차트종류-맵&#39;</p>
</blockquote>
</li>
<li><p>맵차트 배경을 위성으로 변경</p>
</li>
<li><blockquote>
<p>상단의 메뉴바 &#39;맵&#39; - &#39;배경-위성&#39;</p>
</blockquote>
</li>
<li><p>필터 적용</p>
</li>
<li><blockquote>
<p>&#39;시도&#39; - &#39;필터-전체선택&#39;</p>
</blockquote>
</li>
<li><p>대시보드 1개 생성, 크기:자동</p>
</li>
<li><blockquote>
<p>방금만든 시트 넣고, &#39;화살표 아래방향 - 필터 - 시도&#39; 추가</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;시도 필터 - 아래방향 - 단일값(드롭다운)</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;시도 필터 - 아래방향 - 부동</p>
</blockquote>
</li>
<li><p>필터를 원하는 곳에 위치시킬 수 있음.</p>
</li>
<li><blockquote>
<p>보고자 하는 지역 선택</p>
</blockquote>
</li>
<li><blockquote>
<p>줌인되면서 해당지역만 강조됨</p>
</blockquote>
</li>
</ul>
<hr>
<h3 id="--응용차트-만들기">- 응용차트 만들기</h3>
<h4 id="--워크클라우드">- 워크클라우드</h4>
<p>= 텍스트 데이터를 시각화
= 특정 주제에 대한 연관키워드 파악
= 데이터분석에 있어서는 여러제약이 많지만, 시각적으로 관심을 집중시킬 수 있어서 대시보드에 사용하는 경우가 종종 있음</p>
<ul>
<li><p>실습)</p>
</li>
<li><blockquote>
<p>&#39;매출&#39;, &#39;중분류&#39; - 동시에 &#39;마크&#39;에 넣어줌
= 뷰 화면에 네모모양이 뜸. 마우스 오버하면 각각 제품의 중분류를 나타냄</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크- 제품중분류&#39; - &#39;레이블&#39;</p>
</blockquote>
</li>
<li><p>제품 중분류별 매출크기 표현</p>
</li>
<li><blockquote>
<p>&#39;마크-매출&#39; 드래그 - &#39;크기&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크에서 차트형태를 텍스트&#39;로 변경</p>
</blockquote>
</li>
<li><p>수익에 대한 정보도 색상으로 구분</p>
</li>
<li><blockquote>
<p>&#39;수익&#39; 드래그 - &#39;색상&#39;</p>
</blockquote>
</li>
</ul>
<h4 id="--달력형-히트맵">- 달력형 히트맵</h4>
<p>= 실무에서 피드백이 좋음</p>
<ul>
<li><p>실습)</p>
</li>
<li><blockquote>
<p>&#39;주문일자&#39; 더블클릭 </p>
</blockquote>
</li>
<li><blockquote>
<p>선반위 &#39;주문일자&#39; 우클릭 - &#39;자세히-주번호차&#39; - 행렬변환</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; - &#39;마크-텍스트&#39;에 넣어줌</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바 &#39;주문일자&#39; 드래그 - &#39;열&#39;선반에 올려놓음 - &#39;요일(주문일자)&#39;로 바꿔줌 - 화면 전체보기</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바 &#39;주문일자&#39; - &#39;필터 - 월 - 1월&#39; 
= 2016년~2019년도 1월 매출의 합계</p>
</blockquote>
</li>
<li><p>1년치 매출만 확인</p>
</li>
<li><blockquote>
<p>사이드바 &#39;주문일자&#39; - &#39;필터 - 년 - 2019년&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;분석&#39;패널 - &#39;통계&#39; 드래그 - &#39;행총합계(주차별합계)</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; ctrl - 색상</p>
</blockquote>
</li>
<li><blockquote>
<p>차트형태 - 사각형</p>
</blockquote>
</li>
<li><p>월별로 매출을 순차적으로 확인하고 싶다면</p>
</li>
<li><blockquote>
<p>&#39;필터 - 월주문일자&#39; 우클릭 - &#39;필터표시&#39; - &#39;삼각형 선택 - 단일값(슬라이드) - 오른쪽 방향 클릭하며 확인&#39; </p>
</blockquote>
</li>
</ul>
<hr>
<h2 id="--대시보드-만들기">- 대시보드 만들기</h2>
<p>= 여러개의 시트를 하나의 뷰로 만들어, 필요에 따라 시트간 상호작용이 가능하게 해줌</p>
<h3 id="--동작1-필터-하이라이트-시트이동">- 동작1 (필터, 하이라이트, 시트이동)</h3>
<h4 id="--필터-하이라이트">- 필터, 하이라이트</h4>
<ul>
<li><p>실습)</p>
</li>
<li><blockquote>
<p>&#39;주문일자&#39; 더블클릭</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; - &#39;마크-레이블&#39; - 전체화면</p>
</blockquote>
</li>
<li><blockquote>
<p>시트이름 :연간매출</p>
</blockquote>
</li>
<li><p>새로운 시트</p>
</li>
<li><blockquote>
<p>&#39;매출, 제품 대분류&#39; 더블클릭 - 행렬전환 -내림차순 - 전체화면</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;제품 대분류&#39; - &#39;마크-색상&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; - &#39;마크-레이블&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; 우클릭 - &#39;퀵테이블계산 - 구성비율&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>시트이름 : 제품대분류 매출</p>
</blockquote>
</li>
<li><p>시트2 복제</p>
</li>
<li><blockquote>
<p>이름: 제품 중분류 매출</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;제품중분류&#39; - 행의 &#39;제품대분류;와 교체 - 내림차순</p>
</blockquote>
</li>
<li><p>월별 차트</p>
</li>
<li><blockquote>
<p>연간매출 차트 복제, 이름: 월간 매출</p>
</blockquote>
</li>
<li><blockquote>
<p>열 선반의 &#39;주문일자&#39;를 월까지 드릴다운 - 월만 남기기</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-합계(매출)&#39; ctrl - 열에 옮기기</p>
</blockquote>
</li>
<li><p>대시보드 생성</p>
</li>
<li><blockquote>
<p>크기: 자동</p>
</blockquote>
</li>
<li><blockquote>
<p>순서: 
연간매출 
제품 대분류 매출 - 월간매출
제품 중분류 매출</p>
</blockquote>
</li>
<li><blockquote>
<p>동작기능 추가. 상단 &#39;대시보드-동작-동작추가-필터&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>원본시트: 연간매출</p>
</blockquote>
</li>
<li><blockquote>
<p>대상시트: 연간매출 외 모든시트</p>
</blockquote>
</li>
<li><blockquote>
<p>동작실행조건: 선택</p>
</blockquote>
</li>
<li><blockquote>
<p>선택내용을~ : 모든 값 표시</p>
</blockquote>
</li>
<li><p>-&gt; 필터 동작 추가: 제품 중분류 선택시 월간매출이 변하도록</p>
</li>
<li><blockquote>
<p>제품중분류 / 월간매출 / 선택 / 모든 값 표시</p>
</blockquote>
</li>
<li><p>--&gt; 하이라이트 동작 추가</p>
</li>
<li><blockquote>
<p>제품대분류 / 제품중분류 / 마우스오버</p>
</blockquote>
</li>
<li><p>: 연간매출 선택 - 해당연도 매출값만 나옴
: 제품중분류 선택 - 품목별 월간 추이 볼 수 있음</p>
</li>
<li><ul>
<li>여러 품목 복수선택 - 영향받는 월간매출에는 선택한 항목의 합계로 표시됨
: 선택한 필터 해제 - esc 눌러서
: 제품대분류에 마우스 오버 - 해당하는 중분류 매출만 하이라이트 됨</li>
</ul>
</li>
</ul>
<h4 id="--시트의-이동">- 시트의 이동</h4>
<p>= 연간성 있는 두 대시보드를 연결시켜줌</p>
<ul>
<li><p>실습)</p>
</li>
<li><blockquote>
<p>시트 생성</p>
</blockquote>
</li>
<li><blockquote>
<p>행 선반에 &#39;연간 매출 보기&#39;를 생성</p>
</blockquote>
</li>
<li><blockquote>
<p>뷰화면에 입력된 텍스트. - 전체화면 - 머릿글 영역 넓어줌. 행 레이블은 숨겨줌</p>
</blockquote>
</li>
<li><blockquote>
<p>머리글 우클릭 - &#39;서식- 기본값-음영-검정&#39; - &#39;글자색 - 흰색-글자크기20&#39;</p>
</blockquote>
</li>
<li><p>동작 설정</p>
</li>
<li><blockquote>
<p>대시보드 생성 - 시트 삽입</p>
</blockquote>
</li>
<li><blockquote>
<p>작은 버튼형태로 만들어주기 위해 시트 선택된 상황에서 - 화살표 클릭 - 부동 - 버튼 크기 줄이고 - 시트명 숨김</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;메뉴 - 대시보드 - 동작 - 동작추가 - 시트로 이동&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>실행조건: 메뉴, 대상시트: 앞서 만든 대시보드1</p>
</blockquote>
</li>
</ul>
<h4 id="--매개변수-변경">- 매개변수 변경</h4>
<ul>
<li><p>실습)</p>
</li>
<li><blockquote>
<p>&#39;매출, 수량, 수익&#39; 동시 선택 - 뷰로 드래그 - 행렬교체 - &#39;마크-차트-파이차트&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;열&#39;선반의 &#39;측정값이름&#39; ctrl 누르면서 &#39;마크-색상&#39; - 전체화면</p>
</blockquote>
</li>
<li><p>매출추이 확인할 차트 생성</p>
</li>
<li><blockquote>
<p>시트 새로 생성</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바 상단의 아래 세모모양 클릭 - &#39;매개변수만들기 선택 </p>
</blockquote>
</li>
<li><blockquote>
<p>데이터타입: 문자열 / 허용가능한값: 목록 /  값: &#39;매출&#39;, &#39;수량&#39;, &#39;수익&#39; 각각 입력</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바에 &#39;매개변수&#39; 생성됨 - 우클릭 - &#39;매개변수표시&#39; 
= 단독사용x, 계산된 필드나 참조선등과 같이 사용해야 동작함</p>
</blockquote>
</li>
<li><p>계산된 필드 만들기</p>
</li>
<li><blockquote>
<p>사이드바 아래 세모 클릭 - &#39;계산된 필드 만들기&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;CASE&#39; 입력, 좀 전에 만든 매개변수 끌어옴</p>
</blockquote>
</li>
<li><blockquote>
<p>WHEN &#39;매출&#39; THEN SUM([매출])
= 이 매개변수에서 매출을 선택할 경우, 매출의 합계를 표시해달라는 뜻</p>
</blockquote>
</li>
<li><blockquote>
<p>WHEN &#39;매출&#39; THEN SUM([수량])</p>
</blockquote>
</li>
<li><blockquote>
<p>WHEN &#39;매출&#39; THEN SUM([수익])</p>
</blockquote>
</li>
<li><blockquote>
<p>END</p>
</blockquote>
</li>
<li></li>
<li><blockquote>
<p>사이드바의 &#39;계산1&#39; - 상단의 &#39;행&#39;에 드래그</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;주문일자&#39; 드래그 - &#39;열&#39;에 드래그 - 연속형 &#39;월(주문일자)&#39; 선택</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바 &#39;매개변수&#39; - &#39;마크-색상&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바 &#39;계산1&#39; - &#39;마크-레이블&#39; - 우크릭 - &#39;라인끝&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>시트이름도 동적으로 바뀌도록. &#39;뷰화면 - 시트2&#39; 더블 클릭 - &#39;삽입 - 매개변수1&#39; </p>
</blockquote>
</li>
<li><p>대시보드 생성, 매개변수 변경동작 설정</p>
</li>
<li><blockquote>
<p>&#39;매출, 수량, 수익&#39; 파이차트 를 위, &#39;라인&#39;을 아래</p>
</blockquote>
</li>
<li><blockquote>
<p>대시보드 크기 : 자동 - 오른쪽 범례 삭제</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;시트 1&#39; 시트명 숨김</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;메뉴-대시보드-동작-동작추가 - 매개변수변경&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>원본시트: 시트1 / 대상매개변수: 매개변수1 / 동작실행조건: 선택 / 현재값유지 / 원본필드: 측정값이름
= 파이차트 선택하면 선택한 측정값으로 라인차트 변경</p>
</blockquote>
</li>
</ul>
<h4 id="--집합-값-변경">- 집합 값 변경</h4>
<p>= 집합에 속해있는 값 변경
= IN, OUT의 값을 대시보드에서 선택한 집합에 따라 IN, OUT으로 변경시켜서 대상시트에 적용시켜주는 동작</p>
<ul>
<li>실습)</li>
<li><blockquote>
<p>시트 새로 생성 </p>
</blockquote>
</li>
<li>그룹</li>
<li><blockquote>
<p>&#39;시도&#39; 우클릭 - &#39;만들기 -그룹 - 경기도,서울시,인천시 - 그룹(수도권) - &#39;기타&#39;포함&#39;</p>
</blockquote>
</li>
<li>집합</li>
<li><blockquote>
<p>시도(그룹) 우클릭 - &#39;만들기-집합-수도권&#39;</p>
</blockquote>
</li>
</ul>
<p>-
-&gt; &#39;매출&#39; 더블클릭, 시도(그룹) 더블클릭 - 행렬전환 - 전체화면
-&gt; &#39;시도(그룹)집합) - &#39;마크-색상&#39;, &#39;매출&#39;-&#39;마크-레이블&#39;</p>
<ul>
<li><p>실습2) 시트 집합 in에 해당할 경우 지역정보나오게 표현</p>
</li>
<li><blockquote>
<p>시트 1 복제</p>
</blockquote>
</li>
<li><blockquote>
<p>사이드바 - 아래 세모 모양 - &#39;계산된 필드 만들기&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>IIF([&#39;시도그룹(집합], [시도], [시도(그룹)]) = 드래그</p>
</blockquote>
</li>
<li><blockquote>
<p>이름: 수도권 그룹 &amp; 시도
(IF와 동일하지만 식을 간단히 만들 수 있음)</p>
</blockquote>
</li>
<li><blockquote>
<p>계산된 필드 드래그 - 행선반 &#39;시도(그룹)&#39; 옆</p>
</blockquote>
</li>
<li><p>대시보드 생성. 집합값 변경 적용</p>
</li>
<li><blockquote>
<p>시트1(왼), 시트2(오) - 크기 자동</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;메뉴-대시보드-동작-동작추가-집합값변경&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>원본: 첫번째 시트 / 실행조건: 선택 / 대상집합: 현재 데이터-시도그룹(집합) / 집합값 유지</p>
</blockquote>
</li>
<li><blockquote>
</blockquote>
<h4 id="--동작url-개체">- 동작(url) 개체</h4>
<p>= 동작이 걸려있는 시트 선택시, 미리 걸려있는 URL로 이동. 대부분 외부리소스와 연결</p>
</li>
<li><p>실습) 상단에 지역 클릭시, 검색어가 등록된 네이버사이트로 이동</p>
</li>
<li><blockquote>
<p>&#39;지역&#39; - &#39;열&#39;선반으로 이동 - 전체화면 </p>
</blockquote>
</li>
<li><blockquote>
<p>머리글 영역(1행) 키워줌 - 우클릭 - &#39;서식- 글자크기 - 15, 볼드, 색상 검정&#39; </p>
</blockquote>
</li>
<li><p>대시보드 생성</p>
</li>
<li><blockquote>
<p>시트 삽입 - 좌측하단 &#39;웹페이지&#39; 드래그 해서 시트 아래로 위치 - &#39;URL입력: (네이버에서 강원 검색한 것 중 query까지만의 값)&#39;</p>
</blockquote>
</li>
<li><p>동작추가</p>
</li>
<li><blockquote>
<p>&#39;메뉴-대시보드-동작-동작추가-url동작추가&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>원본시트: 시트1 / 실행조건: 선택 / url 대상: 웹페이지 개체 / url: 동일한 링크 복붙 / 삽입-화살표-지역필드 넣어줌 = &lt;지역&gt;</p>
</blockquote>
</li>
</ul>
<h4 id="--대시보드-개체">- 대시보드 개체</h4>
<ul>
<li>&#39;좌측 하단 - 개체&#39; 중 &#39;네비게이션&#39; </li>
<li><blockquote>
<p>&#39;탐색&#39; 을 뷰로 드래그 - 더블클릭 - &#39;편집단추 - 이동할 위치(시트or대시보드) - 버튼스타일(텍스트or이미지)</p>
</blockquote>
</li>
<li><blockquote>
<p>탐색 영역에서 alt 누르고 클릭하면, 설정한 시트나 대시보드로 이동</p>
</blockquote>
</li>
</ul>
<h3 id="--대시보드-레이아웃">- 대시보드 레이아웃</h3>
<ul>
<li><p>1)  대시보드 창 좌측 하단 - 바둑판식(기본값) 
= 겹치지 않고 전체 대시보드 크기에 따라 크기가 조정</p>
</li>
<li><p>2) 좌측 하단 - 부동
= 다른 시트위에 겹칠 수 있고, 영향받지 않아서, 지정한 사이드가 그대로 유지
= 상황에 따라 범례나 필터등에 사용</p>
</li>
<li><p>대시보드 - 레이아웃 - 항목계층에서 확인가능</p>
</li>
<li><blockquote>
<p>우선: 기획 -&gt; 어떤 차트를 어디에 배치할지 구도를 잡은 후 작업</p>
</blockquote>
</li>
<li><p>실습) 시트1</p>
</li>
<li><blockquote>
<p>&#39;매출&#39; - &#39;마크-텍스트&#39; - 화면 전체보기 - &#39;서식-글자크기 크게-굵게&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>패널 윗부분 &#39;테두리서식 - 행구분선-라인-진하게&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;주문일자, 시도&#39; 각각 필터에 추가 - 모든항목 체크</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;필터-년(주문일자)&#39; 우클릭 - &#39;워크시트에 적용 - 관련데이터 원본~&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;필터 - 시도&#39; 동일하게</p>
</blockquote>
</li>
<li><p>시트2(시트1 복제)</p>
</li>
<li><blockquote>
<p>&#39;마크-매출&#39;을 &#39;수익&#39;으로 변경</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;서식 - 글자크기 크게 - 굵게&#39;</p>
</blockquote>
</li>
<li><p>시트3(시트2복제)</p>
</li>
<li><blockquote>
<p>&#39;제품 대분류, 중분류&#39; 상단 &#39;행&#39; 선반에</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; 상단 &#39;열&#39; 선반 - 내림차순</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-수익&#39; 드래그 - &#39;색상&#39;</p>
</blockquote>
</li>
<li><p>대시보드 생성</p>
</li>
<li><blockquote>
<p>목표 레이아웃: 수익(부동형), 나머지(바둑판식-세로로 가로3개)</p>
</blockquote>
</li>
<li><blockquote>
<p>크기: 자동</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;개체-세로&#39; 넣고, &#39;텍스트&#39; 넣어줌</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;개체 - 가로&#39; 3개를 넣어줌 </p>
</blockquote>
</li>
<li><ul>
<li>점선이 나올 때 놔야 함</li>
</ul>
</li>
<li><blockquote>
<p>첫번째 가로 컨테이너에 &#39;텍스트&#39;박스 넣어서 제목 생성 = &#39;연간 매출 대시보드&#39;, 20, 볼드</p>
</blockquote>
</li>
<li><blockquote>
<p>좀 전에 만든 텍스트는 삭제</p>
</blockquote>
</li>
<li><blockquote>
<p>텍스트박스와 두번째 가로 컨테이너 사이에 &#39;빈박스&#39; 추가해서 라인처럼 만듬 - 왼쪽 상단 &#39;레이아웃&#39;선택 - &#39;백그라운드 - 색상추가&#39; - 우클릭 - &#39;높이설정: 12&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>두번째 가로컨테이너에 - 텍스트 추가 - &#39;매출&#39;, 16, 볼드, 빨간색 - 높이 드래그해서 키워줌</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39; 우측에 &#39;텍스트박스&#39; 하나 더 넣어줌 - &#39;수익&#39;, 16, 볼드, 빨간색</p>
</blockquote>
</li>
<li><blockquote>
<p>세번째 가로에 - 시트1 , 그 옆에 - 시트2 - 더블클릭 - 우클릭 - &#39;콘텐츠 균등분할&#39; - 시트명 숨기기 </p>
</blockquote>
</li>
<li><blockquote>
<p>하나 남은 시트는 &#39;매출&#39;, &#39;수익&#39; 아래에 추가</p>
</blockquote>
</li>
<li><blockquote>
<p>필터, 범례 수정 - &#39;수익&#39; 우클릭 - &#39;필터-시도, 주문일자와 연도&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>필터 선택 - 세모모양 - 단일값(드랍다운)</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;연도&#39;, &#39;시도&#39; 필터 - 드래그해서 &#39;연간매출 대시보드&#39; 옆으로 이동</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;수익&#39; 필터 - &#39;부동&#39;으로 변경 - 막대차트에 겹쳐서 배치</p>
</blockquote>
</li>
</ul>
<hr>
<h2 id="--스토리">- 스토리</h2>
<p>= 데이터가 여러개인 시트 -&gt; 대시보드
= 여러개의 대시보드 -&gt; 스토리
: ppt같은 느낌</p>
<ul>
<li>주의</li>
<li>청중이 관심있는 주제?</li>
<li>궁극적으로 하고자 하는 얘기?</li>
<li>처음부터 끝까지 흐름에 맞는 기획?</li>
<li>불필요하게 너무 많은 데이터나, 계산식, 매개변수 사용x = 불러오는데 시간이 오래걸려 흐름이 끊김</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.14] Tableau(2)]]></title>
            <link>https://velog.io/@haeun_71/2023.12.14-Tableau2</link>
            <guid>https://velog.io/@haeun_71/2023.12.14-Tableau2</guid>
            <pubDate>Fri, 15 Dec 2023 06:33:50 GMT</pubDate>
            <description><![CDATA[<h3 id="기본차트만들기">기본차트만들기</h3>
<p>집계값에 대한 비중을 알아보는 차트 만들기</p>
<h4 id="--파이-차트">- 파이 차트</h4>
<ul>
<li><p>=  셉터로 구분된 원 형태의 차트. 
= 원 안에서 상대적 비중을 표시하기에 유리함. 
예) 시장 내 점유율 표시 </p>
</li>
<li><p>실습)
&#39;매출&#39;, &#39;고객세그먼트&#39;를 &#39;마크&#39;에 넣음. </p>
</li>
<li><blockquote>
<p>&#39;파이차트&#39;로 변경, 상단에서 &#39;표준-&gt;전체보기&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>(보고자 하는 건 세그먼트별 비중) &#39;세그먼트필드&#39;를 &#39;색상&#39;에 넣어 구분해줌</p>
</blockquote>
</li>
<li><blockquote>
<p>(각 세그먼트별 매출의 비중이 반영된 차트가 아님.) 비중을 나타내기 위해 &#39;매출&#39;을 &#39;각도&#39;에 넣어줘야 함.</p>
</blockquote>
</li>
<li><blockquote>
<p>(각 색상이 무엇을 나타내는지 표시하기 위해) CTRL + &#39;고객세그먼트&#39;를 &#39;레이블&#39;에 올려놓음. </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39;도 같이 보면 좋을 것 같으니 &#39;레이블&#39;에 올려놓음</p>
</blockquote>
</li>
<li><blockquote>
<p>각 세그먼트별 매출 차지비율을 알기위해) &#39;매출&#39; 우클릭 - &#39;퀵테이블계산 - 구성비율(기본적으로 소수점 2자리까지 나옴&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>(소수점 없애기위해) &#39;매출&#39; 우클릭 - &#39;서식&#39; - &#39;패널-기본값-숫자-백분율-소수점=0&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>(실제 매출금액도 같이 확인하기 위해) - 사이드바에서 &#39;매출&#39; 드래그해서 &#39;레이블&#39;에 넣기 - &#39;합계(매출)&#39; 우클릭 - 서식 - &#39;기본값-숫자(사용자지정)-디스플레이 장치(백만)&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크&#39; - &#39;레이블&#39; - &#39;텍스트 - ... 클릭 - 텍스트 변경&#39; -&gt; 
```</p>
</blockquote>
</li>
<li><p>형태:
&lt;합계(매출)&gt;(&lt;합계(매출)에 대한 총계 %&gt;) 
&lt;고객 세그먼트&gt;</p>
</li>
<li><p>효과:
(&lt;합계(매출)에 대한 총계 %&gt;) - bold, 빨간색</p>
<pre><code></code></pre></li>
</ul>
<hr>
<h4 id="--트리맵-차트">- 트리맵 차트</h4>
<ul>
<li>전체를 기준으로 얼마정도의 비중을 차지하는지 &#39;비중&#39;을 나타낼때</li>
<li>파이차트와 다른 점: 데이터 항목이 많을 때 더 효과적</li>
<li>실습)
오른쪽 상단 &#39;표현방식&#39; 클릭 - 사이드바 &#39;매출&#39;과 &#39;시도&#39;필드를 ctrl눌러서 동시 선택 - &#39;트리맵&#39;선택</li>
<li><blockquote>
<p>(비중을 보고 싶으니 하나 더 추가) 사이드바 &#39;매출&#39;드래그 해서 &#39;마크&#39; 영역에 넣고, 우클릭 - &#39;퀵테이블계산 -비중&#39;, &#39;레이블&#39;에 올려놓기</p>
</blockquote>
</li>
</ul>
<h4 id="--막대-차트">- 막대 차트</h4>
<ul>
<li>매출 비중을 효과적으로 시각화</li>
<li>실습)
&#39;매출&#39; 더블클릭 - &#39;고객세그먼트&#39;를 드래그해서 &#39;마크-색상&#39;에 넣고 - &#39;오름차순&#39;정렬 - &#39;전체보기&#39;
= 차트가 하나씩 쌓여있는 것처럼 보인다 해서 &quot;누적막대차트&quot;로 부름</li>
<li>*색상의 크기차이는 비중이 아니라, 매출의 크기. 절대값의 크기를 나타냄.</li>
<li><blockquote>
<p>&#39;주문일자&#39; 더블클릭 - &#39;마크-막대차트&#39; : 연도별 매출크기가 각 차트로 표현됨</p>
</blockquote>
</li>
<li><blockquote>
<p>보려는 건 구성비율이기 때문에, 상단의 열-&#39;매출&#39; 우클릭 - &#39;퀵테이블계산-구성비율&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>화면전체 드래그 하면 전체값을 볼 수 있음.</p>
</blockquote>
</li>
<li><blockquote>
<p>각 연도, 월별 &#39;고객세그먼트&#39; 비중변화를 보려는 것이기 때문에, 구성비율을 계산하는 기준을 바꿔줘야함. 상단 &#39;매출&#39; 우클릭 - &#39;다음을 사용해 계산 - 테이블 아래&#39; = 각 연도별 세그먼트 합이 100이 됨</p>
</blockquote>
</li>
<li><blockquote>
<p>마무리 작업. 비중으로 변경한 상단의 &#39;매출&#39;필드를 ctrl누르고 드래그 해서 &#39;레이블&#39;에 넣고, &#39;서식-패널-숫자-백분율 0으로 만들어줌&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>매출 비중의 변화를 자세히 보기 위해, 상단의 열 - &#39;주문일자&#39; 드릴다운해서 &#39;월별비중&#39;으로 .</p>
</blockquote>
</li>
<li><blockquote>
<p>오른쪽 상단의 &#39;고객세그먼트&#39;에서 하이라이트 돼서 볼 수 있고, 드래그 하면 순서도 바꿀 수 있음</p>
</blockquote>
</li>
</ul>
<hr>
<h3 id="--대시보드-만들기">- 대시보드 만들기</h3>
<ul>
<li><p>목적
: 누가 사용할 것인가?
: 전달하려는 정보가 무엇인가?</p>
</li>
<li><p>디스플레이 환경
: 태블릿? 핸드폰? pc?</p>
</li>
<li><p>레이아웃 배치
: 핵심 내용은 왼쪽 상단에 배치</p>
</li>
<li><p>실습)
우측하단의 &#39;대시보드추가&#39; - 왼쪽의 시트들 옮기기 </p>
</li>
<li><blockquote>
<p>상단에 테이블, 그 아래 막대/라인, 그 아래 파이/누적막대</p>
</blockquote>
</li>
<li><blockquote>
<p>제목 숨기기</p>
</blockquote>
</li>
<li><blockquote>
<p>상단에 텍스트 박스 넣기 &lt;대시보드 만들기&gt; 20/빨간색/bold</p>
</blockquote>
</li>
</ul>
<h3 id="--분산형-차트-만들기">- 분산형 차트 만들기</h3>
<ul>
<li><p>측정값 간의 관계를 파악하기 위해. 2~4개의 측정값을 선반에 올린 후, 차원으로 나누는 방식으로 세분화해 정보를 확인</p>
</li>
<li><p>추세선과 같은 정보를 추가해, 측정값간의 관계를 쉽게 파악할 수 있음</p>
</li>
<li><p>실습) 
좌측 &#39;수익&#39;, &#39;할인율&#39; 더블클릭 </p>
</li>
<li><blockquote>
<p>분산형으로 만들어짐</p>
</blockquote>
</li>
<li><blockquote>
<p>표 하단의 &#39;할인율&#39;이 합계로 나와서 0부터 1600까지 나옴. 합계를 평균으로 바꿔줄 것. &#39;열선반-합계(할인율)&#39; 우클릭 - &#39;집계방식-평균&#39; - 우클릭 - &#39;서식-숫자-백분위 소수점 1&#39;</p>
</blockquote>
</li>
<li><p>하나의 값으로만 표현된 수익과 할인율을 상세히 보기 위해, 고객기준으로 세분화 해 상관관계를 볼 것.
&#39;고객명&#39; 드래그 &#39;마크-세부정보&#39; = 전체 고객을 기준으로 수익과 할인율이 나뉨</p>
</li>
<li><blockquote>
<p>&#39;모양&#39;마크를 원 마크로 변경, &#39;색상&#39;마크 효과에서 테두리를 흰색으로 바꿔줌</p>
</blockquote>
</li>
<li><p>&#39;수익&#39;을 색상마크게 넣어서 수익 기준으로 구분되도록 표현</p>
</li>
<li><blockquote>
<p>&#39;수익&#39;을 드래그 &#39;색상 마크&#39;에 넣으면 +는 파란색, -는 주황색으로 표시됨</p>
</blockquote>
</li>
<li><blockquote>
<p>색상범례의 기준값이 0이맞는지 확인. 우측 상단의 &#39;색상범례-적용버튼 위 고급버튼 - 가운데 0인 것 확인&#39;</p>
</blockquote>
</li>
<li><p>전체적 추세 확인
좌측 &#39;분석패널&#39; - 추세선 드래그 - 선형
= 평균 할인율이 높아질수록 수익이 떨어진다는 게 추세선으로 확인가능</p>
</li>
<li><p>데이터 설명
&#39;이서준&#39;고객의 마크 클릭 - 전구 아이콘 눌러서 데이터 설명 보기 - 문제가 있어보이는 데이터의 문제가 무엇인지 알 수 있음</p>
</li>
</ul>
<hr>
<h3 id="--이중축-만들기">- 이중축 만들기</h3>
<ul>
<li>많은 정보를 하나의 뷰로 담고 싶을 때, 축을 이중으로 씀. </li>
<li>마크를 서로 동일하게 혹은 다른 마크를 써서 표현할 수 있음</li>
</ul>
<h4 id="--콤비네이션-차트">- 콤비네이션 차트</h4>
<p>막대차트와 라인차트를 하나의 뷰로 만들어 더 많은 정보를 시각화
예) 목표치 대비 실제 매출액 표시 할 때 사용</p>
<ul>
<li>실습)
&#39;주문일자&#39;, &#39;매출&#39; 더블클릭 - 전체화면 - &#39;고객세그먼트&#39;별 매년 성과를 확인하기 위해 &#39;고객세그먼트&#39;를 &#39;열&#39;로 가져오되 &#39;주문일자&#39;앞으로 가져옴. = 매년성장하는 걸 볼 수 있음.</li>
<li>매출 증가에 비례하게 수익이 증가했는가 확인하고자 함
&#39;수익&#39;을 드래그 해서 &#39;행&#39;으로 가져오되 &#39;매출&#39;뒤에 가져옴. 수익에 대한 막대차트가 더 생기는데, 아래위로 분리돼서 나타남.</li>
<li>나눠진 차트를 합치기 위해 이중축 사용해야함.
&#39;수익&#39; 우클릭 - &#39;이중축&#39;옵션 클릭
= 두개의 차트가 막대차트로 동일하게 중첩돼보임.</li>
<li><blockquote>
<p>&#39;마크&#39;영역에서 &#39;수익&#39;을 &#39;라인&#39;으로 바꿈</p>
</blockquote>
</li>
<li><blockquote>
<p>상단의 &#39;매출&#39;을 &#39;마크-레이블&#39;에 넣고 - 매출값의 위치를 중간으로 바꿈 - &#39;매출-서식- 단위는 백만&#39;으로 바꿈</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;수익&#39;도 &#39;마크-레이블&#39;에 넣고, 값의 단위를 백만으로 바꿔줌, 글체를 빨간색으로 변경</p>
</blockquote>
</li>
<li>수익을 보여주는 라인차트가 눈에 들어오게끔, &#39;수익&#39;크기에 변화를 줄것. 
사이드바 &#39;수익&#39; 드래그 - &#39;마크-크기&#39;에 넣어줌<h4 id="--라인차트--영역">- 라인차트 + 영역</h4>
</li>
<li>실습2) 이중축 활용해 라인차트를 돋보이게 만드는 법
= 트랜드와 함께 매출을 강조하고 싶을 때 사용
&#39;매출&#39;, &#39;주문일자&#39; 더블클릭 - 전체화면 - &#39;고객세그먼트&#39; 드래그해서 &#39;마크-색상&#39;에 넣어줌</li>
<li><blockquote>
<p>선반의 매출을 ctrl 눌러서 옆으로 복사 = 아래 위로 차트가 복사됨</p>
</blockquote>
</li>
<li><blockquote>
<p>마크 카드의 &#39;매출(2)&#39;의 차트 바꿔주기 - &#39;원형&#39;로 바꾸고, &#39;크기&#39; 키워주기</p>
</blockquote>
</li>
<li><blockquote>
<p>선반의 두번째 &#39;매출&#39; 우클릭 - &#39;이중축&#39;선택. </p>
</blockquote>
</li>
<li><blockquote>
<p>원형모양이 라인에 정확히 싱크되지 않는 건 축이 달라서. &#39;축범위&#39;에서 우클릭 - &#39;축동기화&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>각 연도별 매출값을 강조하기 위해, 사이드바의 &#39;매출&#39;을 &#39;마크-매출(2)의 레이블&#39;에 넣기. </p>
</blockquote>
</li>
<li><blockquote>
<p>단위절사가 필요해보이니, &#39;서식-백만단위, 소수점은 0&#39;으로 변경</p>
</blockquote>
</li>
<li><blockquote>
<p>값이 도형안에 표현되도록, 가운데정렬 - 값이 차트에 있기 때문에 &#39;축&#39;에서 우클릭 - &#39;머릿글 숨기기&#39;</p>
</blockquote>
</li>
</ul>
<h4 id="--응용차트라인영역">- 응용차트(라인영역)</h4>
<ul>
<li><p>실습1)
&#39;주문일자&#39; 드래그해서 &#39;열&#39;에 올려놓음 </p>
</li>
<li><blockquote>
<p>&#39;필드놓기&#39; 에서 &#39;분기(주문일자)&#39;를 선택 </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39;을 &#39;행&#39;선반에 올려놓음
= 시간적 흐름에 다른 매출의 추세이기 때문에 라인차트로 표현됨</p>
</blockquote>
</li>
<li><p>&#39;행&#39;선반의 &#39;매출&#39;을 ctrl눌러서 옆에 복사</p>
</li>
<li><blockquote>
<p>&#39;마크&#39;에 있는 &#39;매출(2)&#39;를 &#39;영역&#39;차트로 변경</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;행&#39;선반 중 뒤에있는 &#39;합계(매출)&#39; 우클릭, &#39;이동축&#39; 선택
= 라인차트가 영역차트 위에 덧대어지면서, 차트가 강조돼보임.</p>
</blockquote>
</li>
<li><p>좌측의 &#39;매출&#39; 드래그해서 &#39;마크-크기&#39;에 올려놓음. 
=매출규모에 따른 선굵기로 표현됨</p>
</li>
<li><ul>
<li>여기서 구하는 건 매출규모의 크기가 아니라, 전분기대비 성장률</li>
</ul>
</li>
<li><blockquote>
<p>&#39;마크-합계(매출)&#39; 우클릭, &#39;퀵테이블계산-비율차이&#39; </p>
</blockquote>
</li>
<li><p>라인차트의 값을 화면에 표시할 것</p>
</li>
<li><blockquote>
<p>&#39;마크-크기&#39;에 들어가있는 &#39;합계(매출)&#39;에 ctrl을 누르고 &#39;레이블&#39;에 넣음</p>
</blockquote>
</li>
<li><p>색상 강조하기 위해 영역차트의 색상을 연하게 바꿔줄 것</p>
</li>
<li><blockquote>
<p>&#39;합계(매출2)&#39; - &#39;색상&#39; 원하는 색으로 변경</p>
</blockquote>
</li>
<li><p>축의 기준을 맞춰줄 것</p>
</li>
<li><blockquote>
<p>&#39;축&#39; 우클릭, &#39;축동기화&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>라인차트가 영역차트보다 더 앞에서 표현되도록
왼쪽에 있는 &#39;라인차트&#39; 축 우클릭 - &#39;맨 앞으로 마크이동&#39;</p>
</blockquote>
</li>
</ul>
<h4 id="--도넛차트">- 도넛차트</h4>
<ul>
<li><p>파이 = 각 데이터가 차지하는 비중을 조금 더 강조. 전체 합계나 파이차트가 의미하는걸 보여주기 힘듬</p>
</li>
<li><p>도넛 = 파이차트 두개 합쳐서 만들 수 있어서 &#39;비중&#39; 나타낼 때 더 많이 사용</p>
</li>
<li><p>실습)
상단의 &#39;열&#39;에 &#39;0&#39;을 넣음</p>
</li>
<li><blockquote>
<p>0을 기준으로 작은 막대차트가 만들어짐. </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-파이&#39;로 변경</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;고객세그먼트&#39; 드래그 - &#39;마크-색상&#39;에 넣어줌</p>
</blockquote>
</li>
<li><blockquote>
<p>화면의 영역이 뭘 나타내는지 구분하기 위해 &#39;고객세그먼트&#39; 드래그 - &#39;마크-레이블&#39;에도 넣어줌</p>
</blockquote>
</li>
<li><blockquote>
<p>각 매출별 비중을 보기 위해 &#39;매출&#39;을 &#39;마크-각도&#39;에 넣음</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;매출&#39;표시를 위해 &#39;마크-레이블&#39;에 넣음</p>
</blockquote>
</li>
<li><p>도넛차트 만들기 위해 파이차트 복제할 것</p>
</li>
<li><blockquote>
<p>상단 열에 있는 &#39;합계&#39;를 ctrl 누르면서 옆으로 끌어당김 </p>
</blockquote>
</li>
<li><blockquote>
<p>화면을 &#39;전체화면&#39;</p>
</blockquote>
</li>
<li><p>두개를 합치기 전 파이차트의 크기를 좀 더 크게 표현</p>
</li>
<li><blockquote>
<p>&#39;마크-합계(0)&#39; - &#39;크기&#39;키워줌</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;마크-합계(0)(2)&#39; - &#39;레이블&#39;에 들어간 매출 빼고 나머지는 빼줌</p>
</blockquote>
</li>
<li><blockquote>
<p>상단 열에 있는 &#39;합계(0)&#39; 우클릭 - &#39;이중축&#39;사용해서 차트 하나로 합쳐줌</p>
</blockquote>
</li>
<li><blockquote>
<p>중간의 파이차트 크기 키워주기 위해 &#39;마크-합계(2)&#39; - &#39;크기&#39; 키우고, &#39;색상&#39;은 바탕화면 색과 같은 흰색으로 변경</p>
</blockquote>
</li>
<li><blockquote>
<p>가운데 숫자가 의미하는 걸 쉽게 이해하기 위해, &#39;전체매출&#39;이라는 택스트 추가할 것. </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;합계(2)&#39;- &#39;레이블&#39;선택- &#39;텍스트-...&#39; 선택 - &#39;전체매출&#39;을 윗줄에 빨간 글자로 추가</p>
</blockquote>
</li>
<li><p>깔끔하게 다듬기
하단의 &#39;0&#39;으로 표시된 머리글 선택 - 우클릭 - &#39;머리글표시&#39; 선택취소 </p>
</li>
<li><blockquote>
<p>&#39;뷰&#39;창에서 우클릭 - &#39;서식&#39; - 상단의 &#39;라인서식&#39; 선택 - 라인이 열에 있기때문에 &#39;열&#39;선택 - &#39;격자선&#39;, &#39;영 기준선&#39; 없음으로 바꾸기 </p>
</blockquote>
</li>
<li><blockquote>
<p>그 옆 &#39;화면테두리&#39;에 있는 &#39;행구분선&#39;의 &#39;패널&#39;, &#39;머리글&#39; 없음으로 바꾸기</p>
</blockquote>
</li>
<li><p>차트에 마우스 오버 했을 때 도구설명의 값이 나옴</p>
</li>
<li><blockquote>
<p>열 선반의 0값은 의미없으니 없애줌. &#39;열선반&#39;의 &#39;합계(0)&#39; 우클릭 - &#39;도구설명포함&#39;해제</p>
</blockquote>
</li>
</ul>
<hr>
<h3 id="대시보드-만들기-동작기능추가">대시보드 만들기, 동작기능추가</h3>
<ul>
<li><p>실습) 
만든 차트들 대시보드에 배치</p>
</li>
<li><blockquote>
<p>새 시트 추가 - 상단의 &#39;행&#39; 에 &quot;VS&quot; 넣어서 추가 - &#39;전체화면&#39;</p>
</blockquote>
</li>
<li><blockquote>
<p>왼쪽 상단의 &#39;VS&#39;클릭 - &#39;행에 대한 필드 레이블 숨기기&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>뷰 화면에 우클릭 - &#39;서식&#39; - 상단중 4번째 서식 - &#39;행&#39; - &#39;행구분선-패널&#39; 없음</p>
</blockquote>
</li>
<li><blockquote>
<p>뷰 화면에 머리글 영역 크기 조절</p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;고객세그먼트&#39; - &#39;마크&#39; 빈영역에 넣어줌
= 동작 옵션 중 모든 값을 제어할 경우, 원본 시트에는 한가지 이상의 &#39;차원&#39;값을 포함해야, 시트간 인터렉션이 생기기 때문</p>
</blockquote>
</li>
<li><p>대시보드의 &#39;도넛&#39;과 &#39;파이&#39;차트 사이에 추가</p>
</li>
<li><blockquote>
<p>위 아래로 &#39;개체-빈페이지&#39; 추가</p>
</blockquote>
</li>
<li><blockquote>
<p>오른쪽 끝 부분 &#39;범례&#39; 삭제</p>
</blockquote>
</li>
<li><p>동작추가
: 나타났다 사라졌다 하는 효과</p>
</li>
<li><blockquote>
<p>상단의 &#39;대시보드&#39; - &#39;동작&#39; - &#39;동작추가 - 필터&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>원본시트: &#39;차트비교&#39;시트만 </p>
</blockquote>
</li>
<li><blockquote>
<p>대상시트: &#39;파이&#39;시트만 선택 </p>
</blockquote>
</li>
<li><blockquote>
<p>동작실행조건: 선택 </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;선택내용을 지울경우의 결과&#39;: 모든값 제외
= VS 부분을 선택하면 파이차트가 나타났다 사라짐</p>
</blockquote>
</li>
<li><p>동작추가
: 차트 연동</p>
</li>
<li><blockquote>
<p>상단의 &#39;대시보드&#39; - &#39;동작&#39; - &#39;동작추가 - 필터&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>원본시트: &#39;도넛&#39;시트만 </p>
</blockquote>
</li>
<li><blockquote>
<p>대상시트: &#39;라인영역&#39;시트만 선택 </p>
</blockquote>
</li>
<li><blockquote>
<p>동작실행조건: 선택 </p>
</blockquote>
</li>
<li><blockquote>
<p>&#39;선택내용을 지울경우의 결과&#39;: 모든값 표시
= &#39;도넛-기업고객&#39; 선택시 , &#39;라인영역&#39;에 고객세그먼트 데이터를 넘겨줌. </p>
</blockquote>
</li>
<li><ul>
<li>세그먼트별 트렌드 차트를 각각 만들필요없이, 하나의 시트로 필터링 해서 분석가능</li>
</ul>
</li>
<li><p>동작추가
: 차트 연동</p>
</li>
<li><blockquote>
<p>상단의 &#39;대시보드&#39; - &#39;동작&#39; - &#39;동작추가 - 하이라이트&#39; </p>
</blockquote>
</li>
<li><blockquote>
<p>원본시트: &#39;도넛&#39;시트만 </p>
</blockquote>
</li>
<li><blockquote>
<p>대상시트: &#39;이중축, 콤비네이션&#39;시트만 선택 </p>
</blockquote>
</li>
<li><blockquote>
<p>동작실행조건: 메뉴</p>
</blockquote>
</li>
<li><blockquote>
<p>대상하이라이트: 모든필드
= &#39;도넛-기업고객&#39; 선택시 , 마우스 오버한 상태로 있으면 &#39;하이라이트&#39;영역이 뜸. 대상시트로 설정했던, &#39;이중축, 콤비네이션&#39;차트에 &#39;고객세그먼트&#39;만 하이라이트 돼서 눈에 더 잘들어옴
= 하이라이트는 필터보다는 활용도가 조금 낮지만, 많은 정보를 담고있는 복잡한 차트에서 사용하면 확실히 효과적</p>
</blockquote>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.13] Tableau]]></title>
            <link>https://velog.io/@haeun_71/2023.12.13-Tableau</link>
            <guid>https://velog.io/@haeun_71/2023.12.13-Tableau</guid>
            <pubDate>Wed, 13 Dec 2023 10:21:48 GMT</pubDate>
            <description><![CDATA[<p>DATA LITERACY - 데이터를 보고 활용할 수 있느 능력. 탐색을 통해 이해하고, 통찰하는 능력. 구성원들이 데이터에 쉽게 접근할 수 있도록 </p>
<ul>
<li>데이터 시각화
: 데이터에 색상, 모양, 사람들의 시선을 끌 수 있는 요소를 배치해 데이터를 효과적이고 직관적으로 표현하는 것. 
= 전달하고자 하는 메시지를 정하고 불필요한 부분은 생략</li>
</ul>
<ul>
<li><p>테블로: 데이터를 시각화 및 분석하는 솔루션. 
: 데이터를 보고, 이해할 수 있도록 돕고자 만들어짐.
: 장점</p>
<ul>
<li>유연한 데이터 연결</li>
<li>직관적인 drag &amp; drop 인터페이스</li>
<li>다양한 형태의 시각화</li>
<li>디지털 노마드에 최적화</li>
</ul>
</li>
<li><p>BI(Business Intelligence): 기업에서 데이터를 수집, 정리, 분석, 활용해 효율적인 의사결정을 하도록 하는 애플리케이션과 기술의 집합</p>
</li>
</ul>
<hr>
<ul>
<li>데이터 결합</li>
<li>UNION 
설명: 한 테이블의 행을 다른 테이블에 추가해, 두개 이상의테이블을 결합가능. 
방법: 테이블을 지정해 데이터를 끌고옴 UNION이란 옵션이 나타남. 
유의: 원하는 결합을 하려면, 결합하는 테이블의 구조가 같아야 함. 필드 수, 이름, 유형이 일치해야함.
확인: 마우스 우클릭 - 유니온 편집 - 테이블 확인 가능</li>
</ul>
<p>*JOIN
설명: 로지컬 테이블에서 새로운 테이블을 끌어다 놓으면 관계가 형성됨. 
더블 클릭해서 피지컬 테이블 화면에 끌어와서 JOIN해줘야 함.
다이어그램이 형성됨. 조인 유형 변경 가능.
같은 피드명이 존재하면 KEY값을 잡아줌
확인: 데이터 그리드에서 확인가능하고, 추가된 필드는 맨 오른 쪽에서 확인가능</p>
<p>로지컬 테이블: 각 시트 및 테이블간의 관계만 설정. 공동된 필드로 관련방식설명. 테이블을 하나로 병합하지는 않음. 테이블은 각 분리되며 고유한 상태를 유지함. 관계형성은 두 테이블 간의 약속. 약속에 따라 데이터를 가져온 후 적절한 JOIN쿼리를 작성.
결론: JOIN과 관계는 큰 차이가 있다. 데이터를 물리적으로 병합해서 하나의 테이블로 만든ㄴ 것/ 물리적으로 결합하지는 않음.</p>
<ul>
<li><p>편집
1) 데이터 필드명 변경
F1, F2 혹은 직관적이지 않은 경우, 누구나 이해가능하게 변경
메타 데이터 목록을 통해 원격필드에서는 원본이 어떻게 있었는지 추적해볼 수 있음
2) 데이터 타입 변경
날짜 타입 -&gt; 문자 타입 등 변경가능.
3) 필터
데이터원본에 필터를 적용해 분석에 필요하지 않은 범위에 대해 축소하면, 속도 향상시킬 수 있음. = 전처리</p>
</li>
<li><p>오른쪽 상단 필터 - 추가 - 추가 - 필터하고자하는 필드 선택 - 항목선택 - 확인 - 확인
: 날짜 : 이벤트 성과 등 확인 시
: 매출 등 측정값 = SALES </p>
</li>
<li><p>인터페이스
1) 우측 하단 &#39;새로운 시트 만들기&#39; 
2) 좌측 데이터 목록= 필드
상단영역: 차원 / 하단영역: 측정값
더블클릭하면, 추천하는 그래프 형식으로 뜸. 
3) 시각화
마크 영역을 사용 혹은 우측 &#39;표현방식&#39; 
4) 하단 시트 영역 
생성, 원본으로 돌아감 등이 가능</p>
</li>
</ul>
<hr>
<p>데이터를 끌어다놓으면 성격에 따라 차원/측정값으로 자동분류됨
드래그해서 속성변경 가능.
= 집계된 측정값을 원하는 차원레벨에 맞춰 잘라서 볼 수 있음.</p>
<ul>
<li><p>차원
= 정상적인 값. 이름, 날짜, 지리적 데이터 포함.
= 데이터의 세부정보 나눠 분류가능</p>
</li>
<li><p>측정값
= 집계가 가능하거나 필요할 수 있는 데이터
= 숫자로 구성</p>
</li>
<li><p>더블클릭 또는, 드래그 해서 상단에 놓을 때 
= 차트 생성</p>
</li>
<li><p>뷰 영역으로 드래그 했을 때
= 집계된 결과값 생성. 마크카드 옵션에서 텍스트를 가지게 됨.</p>
</li>
<li><p>예)</p>
</li>
<li><p>세일즈 측정값: 뷰 영역 - 드래그</p>
</li>
<li><p>카테고리 차원필드: 더블클릭</p>
</li>
<li><p>-&gt;세일즈 데이터가 카테고리 항목만큼 분할돼서 표시</p>
</li>
<li><p>오더데이트 차원값: 카테고리 옆에 드래그</p>
</li>
<li><p>-&gt; 연도별 각 카테고리의 매출값이 집계</p>
</li>
<li><p>필드 앞 +버튼 누르면 하위단계로 내려가서 드릴다운 분석이 가능</p>
</li>
<li><p>예) 차원과 측정값이 자동배치된 걸 변경
측정값을 차원으로 옮기고 더블클릭</p>
</li>
<li><p>속성변경=고객분석에 많이 사용: 마스터 테이블에는 고객ID등의 고유값만 있어서 차원형태로 인식. 고객수 카운트위해서는 속성변경해야함.</p>
</li>
</ul>
<hr>
<ul>
<li><p>연속형(초록색) / 타이틀이 축으로 생성</p>
</li>
<li><p>불연속형(파란색) / 머릿글로 생성</p>
</li>
<li><p>예) 
SALES와 카테고리를 더블클릭해서 차트 생성
:파란색 필드(카테고리)에서 우클릭- 서식 - 사이드바가 [머리글] 변경할 수 있게 뜸.
:초록색 필드(SALES) 좌측 숫자 선택 - 우클릭 - [축]이 표시 됨</p>
</li>
<li><p>예) 날짜타입 = 불연속형으로 구분되지만, 목적에 따라 연속형으로 변경가능
: SALES 더블클릭, ORDER DATE 더블클릭 - ORDER DATE를 CTRL누른채로 드래그 해서 필터 부분에 놓음 - &#39;년&#39;선택 - &#39;2020&#39;년만 선택 - 점 하나만 보일텐데, +를 눌러서 드릴다운 </p>
</li>
<li><blockquote>
<p>불연속으로 뜸
: 시트 복사본 생성 - 드릴드롭해서 처음으로 돌아옴 - ORDER DATE 우클릭 - &#39;일&#39;형태의 연속형으로 변경 </p>
</blockquote>
</li>
<li><blockquote>
<p>연속으로 뜸</p>
</blockquote>
</li>
<li><p>예) 색상구분
: 매출, SUB CATEGORY 추가 - 행과 열을 바꿔주고, 내림차순 정렬(상단 아이콘 버튼) - SUB CATEGORY를 CTRL 누르고 &#39;마크&#39;부분의 색상에 놓기 - 각 다른 색상으로 표현됨
: 연속형 필드(매출)를 색상에 넣음 - 불연속형 필드와 다르게 같은 색상의 그라데이션으로 표현.
= 색상도 표현방식에 따라 연속형, 불연속형으로 변경가능</p>
</li>
</ul>
<hr>
<h3 id="기본차트-만들기">기본차트 만들기</h3>
<h4 id="--테이블">- 테이블</h4>
<ul>
<li><p>텍스트 테이블, 하이라이트 테이블 
: 시각화는 아니지만, 카드지표나 정확한 값이 표현돼야할 때 
: 엑셀에 익숙해진 다른 부서와 대시보드를 공유해서 사용할 때. 단순한 시각화가 훨씬 상대방이 이해하기 좋음.</p>
</li>
<li><p>테이블 생성
&#39;고객 세그먼트&#39;, &#39;매출&#39;을 넣고 &#39;행렬&#39; 바꿔줌</p>
</li>
<li><p>CTRL 누르며 &#39;매출&#39;을 &#39;마크 - 색상&#39;에 끌어다 놓음</p>
</li>
<li><p>&#39;마크-사각형&#39;으로 바꿔줌. 값이 높은 순으로 색상이 진하게 표현됨
(&#39;제품 중분류&#39;같이 값 많은 걸 넣어주면 시각화 효과가 두드러짐)</p>
</li>
</ul>
<h4 id="--막대">- 막대</h4>
<ul>
<li><p>막대 테이블
: 특정 집계에 대한 절대적인 크기를 시각적으로 표현하기에 적합
: 엑셀이나 PPT에서 많이 사용해 일반적으로 사람들에게 익숙한 차트
: 단순한 &#39;크기&#39;를 보여주고자 한다면, 막대그래프 활용이 적절</p>
</li>
<li><p>테이블 생성
&#39;고객 세그먼트&#39;, &#39;매출&#39;을 넣음</p>
</li>
<li><p>순서에 따라 차트형식이 달라짐
1) &#39;차원&#39; - &#39;측정값&#39; -&gt; 표 생성
2) &#39;매출&#39;(측정값) -&#39;고객 세그먼트&#39; (차원) 
= 자동으로 막대차트 생성 </p>
</li>
<li><blockquote>
<p>효과적인 시각화 위해 행렬전환 - 내림차순정렬 - 화면 전체보기</p>
</blockquote>
</li>
<li><blockquote>
<p>세그먼트 구분을 위해, &#39;고객 세그먼트&#39; 를 &#39;마크-색상&#39;에 넣어줌 </p>
</blockquote>
</li>
<li><blockquote>
<p>차트 정리를 위해 &#39;마크&#39;에 &#39;매출&#39;을 끌어오고 우클릭 - 서식 - 패널 - 숫자 서식 중 단위를 &#39;사용자 지정&#39; - &#39;디스플레이 패널&#39; 중 &#39;백만&#39;으로 변경 - 맞춤은 가운데 맞춤으로 변경</p>
</blockquote>
</li>
</ul>
<h4 id="--라인">- 라인</h4>
<ul>
<li>일련의 값에 대한 시간별 추세, 미래값 예측에 유용
예) 주식: 시간의 흐름에 따른 등락이 중요해서 라인차트 사용
X축에 시간을 넣어 표현하는게 일반적</li>
<li>&#39;시트 생성&#39;-&#39;매출&#39;, &#39;주문일자&#39;를 넣음
&#39;날짜타입&#39;의 &#39;차원&#39;을 넣어서 자동으로 라인차트를 만들어 줌.
: &#39;월&#39; 레벨까지 드릴다운 - 좀 더 보기 쉽게 &#39;분기&#39;는 빼줌. 잡아서 위로 올려버리면 됨</li>
<li><blockquote>
<p>연도별 월 트렌드 차트가 만들어짐. 해당월의 매출 확인 위해, &#39;매출&#39;을 &#39;마크- 레이블&#39;에 넣음</p>
</blockquote>
</li>
<li><blockquote>
<p>최고점, 최저점만 표시하게 만들어주기 위해, &#39;마크 -레이블&#39; 클릭 - &#39;최대(최소)&#39;를 눌러줌</p>
</blockquote>
</li>
<li><blockquote>
<p>연도별 평균매출을 추가해 증가혹은하락을 확인해주고자, 사이드바 &#39;분석&#39; - &#39;평균라인&#39;드래그 해서 화면에 갖고 오면 옵션이 생김 - &#39;패널&#39;수준에서 평균값 구하기로 함. </p>
</blockquote>
</li>
<li><blockquote>
<p>마우스 오버를 하면 평균값이 확인되지만, PDF로는 확인 안 되기 때문에, 화면에 표시해주고자 - &#39;평균라인&#39;클릭 - &#39;편집&#39; - &#39;레이블- 사용자 지정&#39; - &#39;계산&#39; 클릭 - &#39;=&#39;입력 - &#39;값&#39; 클릭</p>
</blockquote>
</li>
</ul>
<p>= 차트나 대시보드를 마무리 하기 전에, 누구와 공유해서 사용할 것인지 생각하고 마무리 하는 게 중요</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.12] Git - Tag, README]]></title>
            <link>https://velog.io/@haeun_71/2023.12.12-Git-Tag</link>
            <guid>https://velog.io/@haeun_71/2023.12.12-Git-Tag</guid>
            <pubDate>Tue, 12 Dec 2023 06:19:36 GMT</pubDate>
            <description><![CDATA[<h4 id="실습환경-만들기">실습환경 만들기</h4>
<ul>
<li>remote repository 생성
: tag_project</li>
<li>local에 clone
: git_ws로 이동
= glt clone 주소(이름:토큰)</li>
<li>파일 생성후 commit 3개 만들기
: hello.txt
: commit1  = Hello, world.
: commit2  = Hello, noma.
: commit3  = Hello, zerobase.</li>
<li>remote repository에 push
: git push origin master</li>
</ul>
<h2 id="--tag">- Tag</h2>
<h3 id="--git-tag">- git Tag</h3>
<h4 id="--특정-버전commit에-tag를-달아놓을-필요가-있을-때-사용">- 특정 버전(commit)에 tag를 달아놓을 필요가 있을 때 사용</h4>
<p>(예: 버전 릴리즈)</p>
<h4 id="--git-tag-생성">- git Tag 생성</h4>
<p>현재 버전에 tag 달기</p>
<pre><code>= git tag &lt;tagname&gt;</code></pre><ul>
<li>예) 현재 버전(commit3) 에 tag(v0.3) 달기
= tag_project% git tag v0.3
= git log</li>
</ul>
<h4 id="--git-tag-생성2">- git Tag 생성2</h4>
<p>특정 버전에 tag 달기</p>
<pre><code>= git tag &lt;tagname&gt; &lt;commithash&gt;</code></pre><ul>
<li>예) 특정 버전(commit2) 에 tag(v0.2) 달기
= tag_project% git tag v0.2 6cfcc5a1bcdd6c594a82ccccfc2276b28ce2e4ab</li>
</ul>
<p>= git log</p>
<h4 id="--git-tag-생성3">- git Tag 생성3</h4>
<p>tag를 remote repository에 push</p>
<pre><code>= git push origin &lt;tagname&gt;</code></pre><ul>
<li><p>예) tag를 remote repository에 push
= tag_project% git push origin v0.3</p>
</li>
<li><p>remote repository - tag 페이지에서 확인가능</p>
</li>
</ul>
<h4 id="--git-tag-목록-보기">- git Tag 목록 보기</h4>
<pre><code>= git tag</code></pre><ul>
<li>예) 
= tag_project% git tag</li>
</ul>
<h4 id="--git-tag-상세정보">- git Tag 상세정보</h4>
<pre><code>= git show &lt;tagname&gt;</code></pre><ul>
<li>예) 
= tag_project% git show v.02</li>
</ul>
<h4 id="--git-tag-삭제-1local">- git Tag 삭제 1(local)</h4>
<pre><code>= git tag --delete &lt;tagname&gt;</code></pre><ul>
<li>예) 
= tag_project% git tag --delete v0.3
= git tag</li>
</ul>
<h4 id="--git-tag-삭제-2remote">- git Tag 삭제 2(remote)</h4>
<pre><code>= git push --delete origin &lt;tagname&gt;</code></pre><ul>
<li>예) 
= tag_project% git push --delete origin v0.3</li>
</ul>
<hr>
<h2 id="--readme">- README</h2>
<h3 id="--readme란">- README란?</h3>
<h4 id="--프로젝트에-대한-설명-사용방법-라이센스-설치법과-같은-부분에-대해-기술하는-파일">- 프로젝트에 대한 설명, 사용방법, 라이센스, 설치법과 같은 부분에 대해 기술하는 파일</h4>
<h4 id="--나-직장동료-프로그램-사용자를-위해-존재">- 나, 직장동료, 프로그램 사용자를 위해 존재</h4>
<h3 id="--markdown">- MARKDOWN</h3>
<h4 id="--github에서-readme-파일-수정을-선택">- Github에서 README 파일 수정을 선택</h4>
<h4 id="--파일-수정-후-commit">- 파일 수정 후 commit</h4>
<h4 id="--headers--큰-제목">- headers = 큰 제목</h4>
<pre><code>This is H1
==========</code></pre><h4 id="--headers--작은-제목">- headers = 작은 제목</h4>
<pre><code>This is H2
-----------</code></pre><h4 id="--headers--글머리16까지-지원">- headers = 글머리(1~6까지 지원)</h4>
<pre><code>#This is H1
##This is H2
###This is H3
####This is H4
#####This is H5
######This is H6</code></pre><h4 id="--blockquote---블럭인용문자-사용">- BlockQuote - 블럭인용문자 사용(&gt;)</h4>
<pre><code>&gt; This is a first blockquote.
&gt; &gt; This is a second blockquote.
&gt; &gt; &gt; This is a third blockquote.</code></pre><h4 id="--blockquote혼합">- BlockQuote(혼합)</h4>
<p>블럭 내에서 다른 markdown 요소를 포함할 수 있음</p>
<pre><code>&gt; This is H3
&gt; * List
&gt; </code></pre><h4 id="--목록-순서가-있는-목록">- 목록: 순서가 있는 목록</h4>
<p>내림차순으로 자동 정렬됨</p>
<pre><code>1. 첫번째
2. 두번째
3. 세번째</code></pre><h4 id="--목록-순서가-없는-목록">- 목록: 순서가 없는 목록</h4>
<p>내림차순으로 자동 정렬됨
혼용해도 같은 결과로 나타남</p>
<pre><code>+ 빨강
    + 초록
        + 파랑

* 빨강
    - 초록
        + 파랑</code></pre><h4 id="--코드블럭1">- 코드블럭1</h4>
<pre><code>&lt;pre&gt;&lt;code&gt;{code}&lt;/code&gt;&lt;/pre&gt;

예)
&lt;pre&gt;&lt;code&gt;print(&#39;this is readme file.&#39;)&lt;/code&gt;&lt;/pre&gt;

* pre를 빼면 코드불럭이 끝까지 안 가고 text에서 끊김</code></pre><h4 id="--코드블럭2">- 코드블럭2</h4>
<pre><code>```{code}```

예)

```print(&#39;this is readme file.&#39;)```
</code></pre><h4 id="--수평선">- 수평선</h4>
<pre><code>* * *
***
***** 
- - - 
--------------</code></pre><h4 id="--외부링크">- 외부링크</h4>
<pre><code>Link: [Google](http://google.com, &quot;google link&quot;)

또는
* 외부링크: &lt;http://google.com&gt;</code></pre><h4 id="--강조">- 강조</h4>
<pre><code>* *single asterisks*
* _single undersores_
* **double asterisks**
* __double undersores__
* ~~cancleline~~</code></pre><h4 id="--이미지">- 이미지</h4>
<p>이미지가 어딘가 업로드돼있어야 함</p>
<pre><code>![Alt text](/path/to/img.jpg &quot;Optional title)</code></pre><ul>
<li>github 저장소에서 New issue 클릭</li>
<li>text area에 이미지 업로드(드래그)하면 markdown link가 생성 &gt; 복사</li>
<li>readme 에 붙여넣기</li>
</ul>
<hr>
<p>remote에 있는 README파일을 LOCAL로 다운받을 수 있음
= cat README.md
= git pull origin master</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.11] Git - Merge and Conflict]]></title>
            <link>https://velog.io/@haeun_71/2023.12.06-Git-Merge-and-Conflict</link>
            <guid>https://velog.io/@haeun_71/2023.12.06-Git-Merge-and-Conflict</guid>
            <pubDate>Tue, 12 Dec 2023 05:27:28 GMT</pubDate>
            <description><![CDATA[<h4 id="실습환경-만들기">실습환경 만들기</h4>
<ul>
<li><p>remote repository 생성
: merge_project</p>
</li>
<li><p>local에 clone
: git_ws로 이동
= glt clone 주소(이름:토큰)</p>
</li>
<li><p>실습환경 체크
메인 - 서브
<img src="https://velog.velcdn.com/images/haeun_71/post/d3dd1043-8033-4580-a5a0-c16124372aaa/image.png" alt=""></p>
</li>
<li><p>파일 추가 후 저장
= cd merge_project
= cat &gt; test.txt
= my name is noma.
= git add test.txt
= git commit -m &#39;create&#39; test.txt</p>
</li>
<li><p>branch 생성 후 ㅍ파일 수정
= git checkout -b dev
= cat &gt;&gt; test.txt
= are you?
= cat test.txt
= git commit -m &#39;modify1&#39; test.txt</p>
</li>
<li><p>git log 확인
= git log</p>
</li>
</ul>
<h4 id="--merge-tool-설정">- Merge Tool 설정</h4>
<ul>
<li>git configuration 파일 열기
= git config --global -e</li>
<li>git merge 설정 추가<pre><code>[merge]
  tool = vscode
[mergetool &#39;vscode&#39;]
  cmd = &#39;code --wait $MERGED&#39;</code></pre><h2 id="--merge">- Merge</h2>
<h3 id="--git-merge">- git merge</h3>
<h4 id="--현재-위치한-branch에-다른-branch를-병합">- 현재 위치한 branch에 다른 branch를 병합</h4>
주종관계가 있어서 &#39;~에, ~를&#39; 이 중요함</li>
</ul>
<pre><code>= git merge &lt;branchname&gt; = 다른 브렌치 이름을 넣어줘야함
</code></pre><h4 id="--main-branch로-이동">- main branch로 이동</h4>
<p>= git checkout master
= git branch</p>
<h4 id="--dev-branch-merge">- dev branch merge</h4>
<p>= git merge div</p>
<h4 id="--merge-결과-확인">- merge 결과 확인</h4>
<p>= git log</p>
<h2 id="--conflict">- Conflict</h2>
<h3 id="--merge-conflict">- merge conflict</h3>
<h4 id="--branch를-merge하는-과정에서-충돌이-날-수-있음-혹은-push-pull하는-과정에서도-충돌이-일어날-수-있음">- branch를 merge하는 과정에서 충돌이 날 수 있음. 혹은 push, pull하는 과정에서도 충돌이 일어날 수 있음</h4>
<p>this is - this is merge test와는 달리
this is merge test - this is conflict test 처럼 같은 선상에 다른 내용이 있을 때
<img src="https://velog.velcdn.com/images/haeun_71/post/f4b4efca-3204-410e-a582-a7df0b7bcd48/image.png" alt=""></p>
<h4 id="--main-branch에서-파일-수정">- main branch에서 파일 수정</h4>
<p>hello, noma를 만들자
= git branch
= cat &gt; test.txt
= hello, noma.
= git commit -m &#39;reset&#39; test.txt</p>
<h4 id="--conflich-test를-위한-branch생성">- conflich test를 위한 branch생성</h4>
<p>hello, noma를 카피함. 이동은 x
= git branch dev2</p>
<h4 id="--main-branch에서-파일-수정-1">- main branch에서 파일 수정</h4>
<p>hello, zero를 만들자
= cat test.txt
= git branch
= git checkout master
= cat &gt; test.txt
= hello, zero.
= cat test.txt
= git commit -m &#39;modify -zero&#39; test.txt</p>
<h4 id="--dev2-branch에서-파일-수정">- dev2 branch에서 파일 수정</h4>
<p>hello, base를 만들자
= git checkout dev2
= cat &gt; test.txt
= hello, base.
= git commit -m &#39;modify -base&#39; test.txt</p>
<h4 id="--main-branch에서-dev2-merge">- main branch에서 dev2 merge</h4>
<p>이때 양쪽이 같은 파일의 같은 부분을 수정했기 때문에 conflict 발생
= git checkout master
= git merge dev2
= merge conflict in test.txt</p>
<h4 id="--mergetool-실행">- MergeTool 실행</h4>
<p>conflict 발생 후 아래와 같이 MergeTool을 실행하면 conflict난 파일들이 차례로 열림
= git mergetool</p>
<ul>
<li>VSCode 에서 &#39;hello, base.&#39; 빼고 지운 후 저장</li>
<li>conflict 해제하려면 add, commit 한번 씩 해줘야함</li>
</ul>
<h4 id="--vscode-에서-conflict-파일-수정">- vscode 에서 conflict 파일 수정</h4>
<p>main branch와 dev2 branch의 diff를 &lt;&lt;&lt;&lt;, ====, &gt;&gt;&gt;&gt;로 표시</p>
<h4 id="--conflict-해제">- conflict 해제</h4>
<p>git add + git commit
= git add test.txt
= git commit</p>
<h4 id="--git-log로-확인">- git log로 확인</h4>
<p>= git log</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.06] Git - Log and Diff
]]></title>
            <link>https://velog.io/@haeun_71/2023.12.06-Git-Log-and-Diff</link>
            <guid>https://velog.io/@haeun_71/2023.12.06-Git-Log-and-Diff</guid>
            <pubDate>Thu, 07 Dec 2023 07:53:51 GMT</pubDate>
            <description><![CDATA[<p>** 참고
cat 파일이름(예 hello.py)
= 파일에 있는 내용을 보여줌</p>
<p>cat &gt; 파일이름
= 파일이 존재하면? 내용을 덮어쓰게 해줌
= 존재하지 않으면? 파일을 만들고, 내용을 입력할 수 있게 해줌</p>
<p>cat &gt;&gt; 파일이름
= 파일이 존재하면? 내용 뒤에 붙여넣기를 해줌</p>
<h4 id="실습환경-만들기vscode">실습환경 만들기(vscode)</h4>
<ul>
<li>Remote Repository 생셩</li>
<li>github에서 log_project 생성</li>
<li>주소 복사</li>
<li>local repository에 clone = git_ws폴더에 복제
git clone + 주소 이름:토큰@주소</li>
<li>파일 추가 후 저장
= cd log_project
= cat &gt; hello.py
= print(&#39;hello, world&#39;)</li>
<li><ul>
<li>ctrl + d 키로 입력한 내용 저장
= git add hello.py
= git commit -m &#39;create&#39; hello.py</li>
</ul>
</li>
<li>파일 수정 후 저장
= cat &gt; hello.py
= print(&#39;hello, cat&#39;)
= git commit -m &#39;modify1&#39; hello.py</li>
<li>branch 생성 후 이동
= git checkout -b dev
= git branch</li>
<li>파일 수정 후 저장
= cat &gt; hello.py
= print(&#39;hello, dog&#39;)
= git commit -m &#39;modify2&#39; hello.py</li>
</ul>
<h2 id="--git-log">- Git Log</h2>
<h4 id="--branch-별-변경이력을-볼-수-있음">- branch 별 변경이력을 볼 수 있음</h4>
<p>= git log
현재 위치한 branch의 변경 이력을 보여줌</p>
<ul>
<li>예) git log 실습1
1) main branch로 이동
= git checkout main
2) main branch 로그 확인
= git log
3) dev branch로 이동
= git checkout dev
2) dev branch 로그 확인
= git log
== main에서의 로그도 포함해서 보여줌</li>
</ul>
<h2 id="--git-editor-설정">- Git Editor 설정</h2>
<h4 id="--wait-옵션은-command-line으로-vscode를-실행시켰을-경우-vscode인스턴스를-닫을-때까지-command를-대기">--wait 옵션은 command line으로 vscode를 실행시켰을 경우, vscode인스턴스를 닫을 때까지 command를 대기</h4>
<pre><code>= git config --global core.editor &lt;editorname&gt; --wait

= git config --global core.editor &#39;core --wait&#39;

= git config --global core.editor &#39;core&#39;

= git config --global core.editor &#39;vim&#39;
-&gt; esc 는 명령모드 / i 는 수정모드
-&gt; esc - :q! 눌러서 나올 수 있음</code></pre><h2 id="--git-diff-tool-설정">- Git Diff Tool 설정</h2>
<p>버전 간의 차이점 조회가능</p>
<h4 id="--git-configuration-파일-열기">- Git Configuration 파일 열기</h4>
<pre><code>= git config --global -e

= global에 설정된 editor옵션을 수정하겠다</code></pre><h4 id="--git-diff-설정-추가">- Git Diff 설정 추가</h4>
<pre><code>[diff]
    tool = vscode
[difftool &quot;vscode&quot;]
    cmd = &quot;code --wait --diff $LOCAL $REMOTE&quot;</code></pre><h4 id="--git-diff---local-branch-간-비교">- Git Diff - local branch 간 비교</h4>
<pre><code>= git diff &lt;branch1&gt; &lt;branch2&gt;</code></pre><ul>
<li><p>예) 
git diff main dev</p>
</li>
<li><p>예) vscode의 기능을 이용하게 됨
git difftool main dev</p>
</li>
</ul>
<h4 id="--git-diff---commit-간-비교">- Git Diff - commit 간 비교</h4>
<pre><code>= git diff &lt;commithash&gt; &lt;commithash&gt;</code></pre><ul>
<li>예) commit Hashcode 확인(commit뒤의 문자열)
= git log</li>
<li>예) 비교할 버전을 정하고, 해시코드를 복사해옴
= git difftool c5f107068b1e9b42a42e77a5276c09e3e879cdb0
880d19f0f95c4382ac8657a31d075e523a9fbc08</li>
</ul>
<h4 id="--git-diff---마지막-commit과-이전-commit-비교">- Git Diff - 마지막 commit과 이전 commit 비교</h4>
<pre><code>= git diff HEAD HEAD^ 
        (뜻: 마지막, 마지막 직전)</code></pre><ul>
<li>예) commit Hashcode 확인(commit뒤의 문자열)
= git difftool HEAD HEAD^<h4 id="--git-diff---마지막-commit과-현재-수정사항-확인">- Git Diff - 마지막 commit과 현재 &#39;수정사항&#39; 확인</h4>
<pre><code>= git diff HEAD</code></pre></li>
<li>예) commit Hashcode 확인(commit뒤의 문자열)
= cat &gt; hello.py
= print(&#39;hello, pig&#39;)
= git difftool HEAD
아직 COMMIT 안했는데도 DIFF를 보여줌</li>
</ul>
<h4 id="--git-diff---local-and-remote-간-비교">- Git Diff - Local and Remote 간 비교</h4>
<pre><code>= git diff &lt;branch&gt; origin/&lt;branch2&gt;
             local         remote</code></pre><ul>
<li>예) 
1) 일단 현재 main branch 상태를 remote repository로 push
= git push origin main
2) 아까 수정한 파일을 commit(local repository의 main branch에만 반영됨)
반영 시켜주고(cat version), 수정한 걸 올려줌
= git commit -m &#39;modify3&#39; hello.py
3) local repository와 remote branch 비교
= git difftool main origin/main</li>
</ul>
<h4 id="--git-graph-확인">- Git graph 확인</h4>
<p>현재 폴더를 vscode 로 열기 위해 아래와 같은 명령어 입력</p>
<pre><code>= log_project % code .</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.06] Git - remote repository]]></title>
            <link>https://velog.io/@haeun_71/2023.12.06-Git-remote-repository</link>
            <guid>https://velog.io/@haeun_71/2023.12.06-Git-remote-repository</guid>
            <pubDate>Wed, 06 Dec 2023 09:09:13 GMT</pubDate>
            <description><![CDATA[<h2 id="--remote-repository-생성">- Remote Repository 생성</h2>
<p>참고 - README File</p>
<ul>
<li>프로젝트에 대한 설명, 사용방법, 라이센스, 설치방법 등에 대한 내용을 기술하는 파일</li>
<li>나, 직장동료, 프로그램 사용자를 위해 존재</li>
</ul>
<p>참고 - .gitignore</p>
<ul>
<li>git버전 관리에서 제외할 파일목록을 지정하는  파일</li>
<li>사용자가 원하지 않는 파일들을 자동으로 commit 대상에서 제외시켜줌</li>
</ul>
<h3 id="--default-branch">- default branch</h3>
<p>디폴드값은 main
remote repository 생성할 때마다 이름도 같이 생성가능 
(사용자메뉴 - 세팅 -repositories - master로 업데이트 가능)</p>
<h3 id="--remote-repository-복제하기">- remote repository 복제하기</h3>
<p>local repository를 생성하지 않은 상태에서 git clone 명령을 사용해 remote repository를 local에 복제가능</p>
<h4 id="--git-clone">- Git Clone</h4>
<p>앞서 폴더 만들고
++ Git Init으로 해당폴더를 초기화하고
++ remote repository를 등록하고
++ remote repository의 내용을 pull 하는 모든 과정을 Git Clone으로 할 수 있음
= git clone <a href="https://github.com/">https://github.com/</a><repository>.git</p>
<h4 id="--git-clone-with-username-and-token">- Git Clone with username and token</h4>
<p>= git clone https://<username>:<token>@github.com/<repository>.git</p>
<p>** 참고 : 상위폴더로 이동
= cd ..</p>
<h3 id="--branch">- branch</h3>
<h4 id="--branch-조회local-branch">- branch 조회(local branch)</h4>
<p>local에서 만들었다 해도 push안하면 local에만 있음
= git branch
==&gt; * main (=현재위치가 main이다)</p>
<h4 id="--branch-조회remote-branch">- branch 조회(remote branch)</h4>
<p>= git branch -r</p>
<h4 id="--branch-조회local--remote-branch">- branch 조회(local + remote branch)</h4>
<p>= git branch -a</p>
<h4 id="--branch-생성">- branch 생성</h4>
<pre><code>= git branch &lt;branchname&gt;
= 예) git branch branch01</code></pre><h4 id="--branch-이동">- branch 이동</h4>
<pre><code>= git checkout &lt;branchname&gt;
= 예) git checkout branch01</code></pre><h4 id="--branch-생성--이동">- branch 생성 + 이동</h4>
<pre><code>= git checkout -b &lt;branchname&gt;
= 예) git checkout -b branch02</code></pre><h4 id="--github-에서-branch확인">- github 에서 branch확인</h4>
<p>local repository에서 생성된 branch는 remote repository에서 보이지 않음</p>
<h4 id="--branch-생성-remote에">- branch 생성 (remote에)</h4>
<pre><code>
= git push origin &lt;branchname&gt;
local과는 다르게 서버는 위치까지는 이동x</code></pre><h4 id="--branch-삭제local">- branch 삭제(local)</h4>
<pre><code>= git branch -d &lt;branchname&gt;
= 예) 
  git checkout main 
  git branch -d branch02
  git branch -a (목록조회)</code></pre><h4 id="--branch-삭제remote에">- branch 삭제(remote에)</h4>
<pre><code>= git puch origin --delete &lt;branchname&gt;</code></pre><p>** local, remote 두 공간에서 작업하는 걸 구분짓고, 어느 한 쪽에서 하는 걸 상대방에게 알려줘야한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2023.12.06] Git - local repository]]></title>
            <link>https://velog.io/@haeun_71/2023.12.06-Git-local-repository</link>
            <guid>https://velog.io/@haeun_71/2023.12.06-Git-local-repository</guid>
            <pubDate>Wed, 06 Dec 2023 08:39:07 GMT</pubDate>
            <description><![CDATA[<h2 id="--local-repository">- local repository</h2>
<h3 id="--local-repository-구성">- local repository 구성</h3>
<h4 id="--local-repository는-git이-관리하는-3단계로-구성돼있음">- local repository는 Git이 관리하는 3단계로 구성돼있음</h4>
<ul>
<li>working directory(작업공간) - 실제 소스파일, 생성한 파일들이 존재
우리가 보는 폴더. git이 관리하지는 않는데 add하면 스테이지로 올라가면서 관리가 시작됨.</li>
<li>index(stage) - standing area(준비영역) 의 역할. git add한 파일들이 존재
수정해서 commit하는 순간 버전이 매겨지고, head에 올라감</li>
<li>HEAD - 최종 확정본, git commit 한 파일들이 존재
<img src="https://velog.velcdn.com/images/haeun_71/post/848d91d8-f6f7-4d4c-a3b5-1ebf39a94c4a/image.png" alt=""><h3 id="--local-repository-생성">- local repository 생성</h3>
<h4 id="--workspace-생성">- workspace 생성</h4>
= mkdir git_ws</li>
</ul>
<h4 id="--workspace-directory-생성">- workspace directory 생성</h4>
<p>= 실습할 repository 생성
workspace로 이동한 뒤 workspace directory 생성
= cd git_ws
= mkdir test_project</p>
<h4 id="--git-init">- Git init</h4>
<p>폴더에서 git을 초기화하는 명령어를 사용하면 해당 폴더를 git이 관리하기 시작
= git init</p>
<h4 id="--git-init-실습">- Git init 실습</h4>
<p>생성한 폴더로 이동해 git init을 실행하면 repository가 생성됨
= cd test_project
= git init</p>
<h4 id="--git-확인">- .Git 확인</h4>
<p>.git 폴더가 생성된 걸 확인 -&gt; .git으로 이동해서 파일을 살펴보면 git관련 파일들이 생성된 것 확인
= ls -all
= cd .git
= ls -all</p>
<h4 id="--파일-생성">- 파일 생성</h4>
<p>working directory 에 파일 생성
참고: touch 명령어 = 빈파일을 생성
= touch test.txt
= ls
= test.txt</p>
<h4 id="--git-status">- git status</h4>
<p>git에 존재하는 파일 확인
= git status</p>
<h4 id="--git-add">- git add</h4>
<p>working directory 에서 변경된 파일을 index(stage)에 추가
= git add <filename></p>
<ul>
<li>예)
git add text.txt
git status</li>
</ul>
<h4 id="--git-commit">- git commit</h4>
<p>index(stage)에 추가된 변경사항을 HEAD에 반영(확정)
= git commit -m &quot;commit에 대한 설명&quot; <filename></p>
<ul>
<li>예)
git commit -m &quot;first commit&quot; test.txt
git status</li>
</ul>
<h3 id="--remote-repository-등록">- Remote Repository 등록</h3>
<h4 id="--local-repository에-remote-repository-등록">- local repository에 remote repository 등록</h4>
<p>= git remote add origin <a href="https://github.com/">https://github.com/</a><repository>.git</p>
<h4 id="--remote-repository-등록-with-username-and-token">- remote repository 등록 with username and token</h4>
<p>= git remote add origin https://<username>:<token>@github.com/<repository>.git</p>
<pre><code>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


git remote add origin https://haeun71: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@github.com/haeun71/exam_project.git
</code></pre><p><a href="https://ish0301.tistory.com/entry/8%EC%A3%BC%EC%B0%A8-%EA%B9%83%ED%97%88%EB%B8%8C-remote-origin-%EC%82%AD%EC%A0%9C">https://ish0301.tistory.com/entry/8%EC%A3%BC%EC%B0%A8-%EA%B9%83%ED%97%88%EB%B8%8C-remote-origin-%EC%82%AD%EC%A0%9C</a>  </p>
<h4 id="--remote-repository-정보-확인">- remote repository 정보 확인</h4>
<p>= git remote -v    </p>
<h3 id="--remote-repository에-변경내용-push하기">- Remote Repository에 변경내용 push하기</h3>
<p>local repository(HEAD)에 반영된 변경내용을 remote repository에도 반영하기 위해서는 Git Push를 사용</p>
<h4 id="--git-push">- Git Push</h4>
<p>= git push origin <branchname>
= git push origin master(혹은 main)</p>
<h4 id="--remote-repository-확인">- Remote Repository 확인</h4>
<p>Remote Repository 페이지에서 새로고침하면 push된 파일이 보임</p>
<h3 id="--local-repository에-pull하기">- local repository에 pull하기</h3>
<p>Remote Repository의 내용에 맞춰 local repository를 갱신하려면 git pull을 사용</p>
<h4 id="--read-me-파일-생성홈페이지">- Read me 파일 생성(홈페이지)</h4>
<ul>
<li>add a readme 버튼 클릭</li>
<li>내용 확인(모두 default 설정으로)</li>
<li>하단의 commit new life 버튼 선택<h4 id="--git-pull">- git pull</h4>
= git pull origin <branchname>
= git pull origin master</li>
</ul>
<h4 id="--텍스트-메시지-출력">- 텍스트 메시지 출력</h4>
<p>= cat exam.txt</p>
]]></description>
        </item>
    </channel>
</rss>