[Alteryx] Alteryx 소개 및 기초적인 사용법(Input, Select, Output)Alteryx란? Alteryx는 직관적인 UI와 Drag&Drop 방식의 워크플로우를 통해 간편하게 작업할 수 있는 데이터 분석 및 ETL 툴이다. 코딩 없이 데이터를 분석, 처리, 변환 할 수 있게 도와주는 툴이지만 기본xl-shine.tistory.comBrowse Tool Palette의 In/Out tab에 위치해있다. Browse Tool을 원하는 위치에 Drag&Drop하여 데이터를 연결해주고 실행하면 좌측 Configuration 영역에서 데이터 통계를 시각적으로 확인하고 분석할 수 있다. Workflow 중간 단계에서 데이터가 올바르게 변환되었는지 확인하거나 처리 완료된 데이터를 시각적으로 확..
Alteryx란? Alteryx는 직관적인 UI와 Drag&Drop 방식의 워크플로우를 통해 간편하게 작업할 수 있는 데이터 분석 및 ETL 툴이다. 코딩 없이 데이터를 분석, 처리, 변환 할 수 있게 도와주는 툴이지만 기본적인 SQL 지식이 있어야 워크플로우를 이해하기 쉽고, 활용성 측면에서도 SQL 로직 구현 유무에 따라 Output의 품질이 달라진다. 또한, 무료 툴이 아니다보니 개인적으로 사용할 때는 비용적인 측면에서 부담이 될 수 있다. 화면 구성Tool Palette - 영역에 있는 Tool들을 Canvas 영역에 Drag&Drop하여 Workflow를 작성할 수 있다.Canvas - Tool들을 연결해 Workflow를 설계, 작업하고, 데이터 흐름을 시각적으로 구성할 수 있다.Configu..
GROUPING() 함수는 SELECT 절에서 사용하는 함수이다. GROUPING() 함수의 인자로 그룹핑 대상인 컬럼을 지정하면 해당 컬럼이 NULL일 때 1, NOT NULL일 때 2를 반환하는 함수이다.SELECT B.DNAME , A.JOB , SUM(A.SAL) , GROUPING(B.DNAME) AS GP1 , GROUPING(A.JOB) AS GP2 FROM EMP A , DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY ROLLUP(B.DNAME, A.JOB) ORDER BY 1,2; 이를 CASE-WHEN 절과 함께 활용하면 NULL 값을 소계, 총계 등으로 지정할 수 있다.SELECT CASE WHEN T.GP1 = 1 ..
CUBE() 함수는 인자로 받는 컬럼으로 만들 수 있는 모든 조합으로 집계하여 추출하는 함수이다. 위와 같은 결과를 얻으려면, 다음과 같이 작성할 수 있다.SELECT B.DNAME , SUM(A.SAL) FROM EMP A , DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY CUBE(B.DNAME) ORDER BY 1; 얼핏보면 ROLLUP() 함수와 다를 거 없는 함수처럼 보이지만, CUBE() 함수는 받는 인자가 많아질수록 조합이 다양해져 출력하는 결과가 훨씬 많아진다. SELECT B.DNAME , A.JOB , SUM(A.SAL) FROM EMP A , DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY C..
GROUPING SETS() 함수는 이전 포스팅에서 다뤘던 ROLLUP()과 마찬가지로 GROUP BY 절에서 사용하는 함수이며, 인자로 받는 컬럼 별 집계함수 값을 리턴하는 함수이다. 위와 같은 결과를 얻고 싶을 때, GROUPING SETS 함수를 활용하면 다음과 같이 짤 수 있다.SELECT B.DNAME , SUM(A.SAL) FROM EMP A , DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY GROUPING SETS(B.DNAME) ORDER BY 1; 근데 뭔가 이상하지 않은가? 위와 같은 결과를 더 쉽게 추출하는 방법을 우리는 알고 있다.SELECT B.DNAME , SUM(A.SAL) FROM EMP A , DEPT B WHER..
일상적인 업무에서 쿼리를 짜다 보면, 합계를 구하고 싶을 때가 정말 많다. 예시로 DEPT 테이블의 부서명 컬럼을 기준으로 해당 부서에 속한 사원들의 총 급여를 구하려면 쿼리를 어떻게 짜야할까? 확장 GROUP 함수를 모른다면, 다음과 같이 작성했을 것이다.SELECT B.DNAME , SUM(A.SAL) FROM EMP A , DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY B.DNAME UNION ALLSELECT NULL , SUM(A.SAL) FROM EMP A ORDER BY 1; 위 방식이 틀렸다는 것은 아니다. 하지만 확장 GROUP 함수를 쓴다면 다음처럼 간략하게 표현 가능하다.SELECT B.DNAME , SUM(A.SAL) ..
좌측 그리드의 row를 클릭하면 오른쪽 그리드가 조회되는 화면을 만들었는데, 좌측 그리드의 값에 따라 조회하는 테이블이 각각 달라서 우측 그리드의 컬럼을 정적인 값으로 고정하기 힘들었다. 할 순 있었지만 애매한 단어 선택으로 사용자에게 혼란을 야기할 것이 분명했고, 이는 곧 수정 요청 사항으로 접수되기 마련이다(경험이다). 그래서 우측 그리드가 조회될 때마다 컬럼을 동적으로 세팅되도록 설계했다. 이 때 동적으로 세팅되는 컬럼 값을 조회해오는 컬럼 값 그대로 뿌려주니 전부 영어로 출력되어, 데이터를 알아보기 어려워서 각각의 테이블 컬럼 코드와 매핑된 컬럼 값을 가져와서 뿌려주기로 했다.SELECT * FROM ALL_COL_COMMENTS WHERE TABLE_NAME = '테이블명' OR SELEC..