반응형 전체 글81 [Sqlite] YoY, MoM, DoD 분석하기 Sqlite를 이용해서 시계열 분석 중 YoY, MoM, DoD 등 구간비교를 하는 방법에 대해서 정리해 보도록 하겠습니다. 특정 시간 구간의 데이터를 이전 시간의 구간 데이터와 비교함으로써 많은 이점을 얻을 수 있는데 계절성등을 확인할 때 유용하게 사용할 수 있습니다. 실제로 많은 데이터들이 과거 같은시점, 전 달의 같은 날짜 등과 같이 1년, 1달, 혹은 1일 주기로 데이터를 비교하며 증감 추이를 신중하게 관찰하는 것을 알 수 있습니다. 각각을 YoY(Year over Year, 전년 대비 증감률), MoM(Month over Month, 전월 대비 증감률), DoD(Day over Day) 전일 대비 증감률이라는 용어로 구분해서 부르고 있죠. 계절성(seasonality)은 일정한 간격을 두고 규칙.. 프로그래밍/Sqlite 2023. 1. 10. [Sqlite] 날짜 차원(Date Dimension) 테이블 만들기 시계열 분석을 할 때 주의해야 할 것은 중간에 측 데이터가 생기는 상황에서의 대응입니다. 이를 처리하기 위해서 날짜 차원 테이블을 이용하는데 날짜 차원 테이블은 특정 구간 내 모든 날짜별로 값이 저장된 행이 있는 정적 테이블을 의미합니다. 대부분의 데이터베이스에서 기본적으로 내장되어 있는 테이블이지만 sqlite를 이용할 경우 날짜 차원 테이블을 이용하기 위해서는 직접 만들어주는 수 밖에 없습니다. 다음의 쿼리문을 실행시키면 date_dim이라는 이름의 날짜 차원 테이블을 생성할 수 있습니다. 1. 날짜 차원 테이블 생성 쿼리 -- Create a table to permanently store the output CREATE TABLE date_dim AS -- Initiate the recursive.. 프로그래밍/Sqlite 2023. 1. 6. [Sqlite] 이동평균(moving avg) 계산하기 데이터베이스를 시계열 분석을 하게 되면 이동평균을 계산하는 상황이 많이 발생합니다. 이동평균을 구하면 데이터의 노이즈를 줄여주어 경향성을 파악하는데 도움이 많이 되기 때문이죠. 다음은 Postgre에서 이동평균을 구하는 하나의 예제 sql문입니다. 이를 sqlite 문법을 이용해서 구현할 때 어떤 차이점이 있는지 확인해 보도록 하겠습니다. 1. Postgre SELECT a.sales_month ,a.sales ,avg(b.sales) as moving_avg ,count(b.sales) as records_count FROM sales a JOIN sales b on a.kind_of_business = b.kind_of_business and b.sales_month between a.sales_mo.. 프로그래밍/Sqlite 2023. 1. 6. [sqlite] date_part 기능 사용하기 Postgre와 같은 데이터베이스에서 날짜 및 시간 데이터 조작을 위한 명령어 중 date_part라는 명령어가 있습니다. 예를 들어 판매날짜가 저장되어 있는 sales_month라는 열의 데이터에서 연도 정보를 추출하기 위해서 다음과 같이 사용합니다. SELECT date_part('year', sales_month) as sales_year; 하지만 sqlite는 위와 같이 date_part와 같은 명령어가 없습니다. 하지만 위와 같은 결과를 출력하기 위해서 아래와 같이 작성해 줄 수 있습니다. SELECT strftime('%Y-01-01', sales_month) as sales_year; 이렇게 작성할 경우 sales_year에 연도를 제외한 나머지 월, 일 정보가 1월 1일로 변경된 날짜가 저.. 프로그래밍/Sqlite 2023. 1. 5. [Flutter] for와 forEach Flutter에서 가장 대표적으로 사용하는 반복문은 for와 forEach입니다. 각각 외부반복, 내부반복으로 구분합니다. 문법에 대해서 간단히 정리해 보면 다음과 같습니다. 1에서 6까지 숫자가 차례대로 저장되어 있는 리스트의 각 원소를 출력하는 코드를 작성해 보도록 하겠습니다. 구현된 코드는 다음과 같습니다. void main() { final lists = [1, 2, 3, 4, 5, 6]; for (int i = 0; i < lists.length; i++) { print('for loop: ${lists[i]}'); } lists.forEach((e){ print('forEach loop: $e'); }); } 가장 먼저 1에서 6까지 원소로 이루어진 lists 리스트를 정의합니다. for문에서.. 프로그래밍/Flutter & Dart 2023. 1. 5. [Flutter] Cascade Operator 오늘은 Cascade Operator에 대해서 알아보도록 하겠습니다. 계단식 표기법으로도 불립니다. Cascade Operator를 사용하면 동일 객체에서의 일련의 작업을 보다 깔끔하게 표현할 수 있습니다. 다음과 같이 정의된 User class가 있다고 가정해 봅시다. class User{ String name = ''; int age = 0; } void main() { User user = User(); user.name = 'juhan'; user.age = 23; User user1 = User() ..name = 'juhan' ..age = 23; } User class는 하위에 name과 age라는 두 개의 속성을 가지고 있습니다. User class를 이용해서 새로운 인스턴스를 만들고 새로.. 프로그래밍/Flutter & Dart 2023. 1. 5. [Flutter] Future Builder 함수를 통해서 어떤 값을 리턴할 때 우리는 기본적으로 즉각적으로 값은 반환하는 상황을 주로 사용하였습니다. 하지만 애플리케이션 외부로부터 데이터를 전달받는 상황이라면 함수가 실행되고 나서 네트워크 문제등에 의해서 값을 바로 출력할 수 없는 경우가 발생합니다. 이 때 Future Builder를 이용해서 값을 받을 수 있습니다. Future Builder를 이용하면서 Future 타입의 데이터를 다루게 되는데 말 그대로 미래의 어느 한 시점(in the future)에 얻게 되는 데이터를 의미합니다. 다음의 소스코드를 통해서 값이 출력되는 과정을 살펴보도록 하겠습니다. 우리가 흔히 사용하는 함수는 함수가 호출되는 즉시 값을 반환하고 반환된 값을 변수에 저장한 뒤 화면에 출력하는 방법으로 사용됩니다. (ge.. 프로그래밍/Flutter & Dart 2023. 1. 5. [sqlite] csv로부터 데이터베이스 만들기(windows) csv 파일을 sqlite 데이터베이스 파일로 변환하기 위한 방법은 다음과 같습니다. 먼저 실행창에 'PowerShell'을 검색하여 'Windows PowerShell'을 엽니다. csv 파일이 있는 폴더로 이동합니다. 예를 들어 sales.csv 라는 이름의 csv 파일을 mydatabase.db라는 데이터베이스를 만들고 그 안에 table1이라는 이름으로 저장한다고 하면 다음과 같이 명령어를 입력합니다. sqlite3 mydatabase.db ".mode csv" ".import sales.csv table1" ".exit" 명령어를 실행하면 cvs가 위치한 폴더에 mydatabase.db 라는 데이터베이스 파일이 생성되고 SQLite Expert Personal 프로그램을 통해서 데이터베이스를 열.. 프로그래밍/Sqlite 2023. 1. 5. [Flutter] 보이지 않는 위젯(layout widget) flutter를 사용함에 있어서 가장 많이 듣게 되는 단어는 단연 위젯(widget)입니다. 플러터는 거의 대부분(almost) 위젯으로 이루어져 있다고 해도 과언이 아닐 정도로 위젯이 차지하는 비중은 대단합니다. 위젯을 한마디로 표현하라고 하면, 'UI를 만들기 위해서 사용되는 class 집합'정도로 표현할 수 있겠습니다. 아무리 복잡한 화면도 가장 간단한 위젯의 조합으로부터 시작됩니다. 위젯을 쌓고 또 쌓다 보면 화면이 만들어지는 것이죠. 그렇기 때문에 이 위젯에 대해서 정확히 이해하고 있어야 화면 내에 UI 컴포넌트를 적재적소에 원하는 크기로 삽입할 수 있습니다. layout Widget vs UI element Widget 위젯은 크게 레이아웃 위젯(layout widget)과 UI 요소 위젯(U.. 프로그래밍/Flutter & Dart 2022. 12. 31. [Flutter] const, final의 차이점(feat. immutable, stateless vs stateful 차이점) Immutable? flutter를 배우기 시작하면서 가장 많이 듣는 단어 중 하나가 바로 immutable이라는 단어입니다. 사전적인 뜻은 '변하지 않는' 정도의 뜻을 가지고 있습니다. HTML도 아니고 상태가 계속 바뀌고 더군다나 상태 관리에 대한 솔루션도 여러 가지 존재하는 마당에 immutable이라는 것은 무슨 이야기일지 오늘 한번 알아보도록 하겠습니다. flutter의 위젯이 immutable이라고 이야기하는 이유는 widget의 변경이 생기면 flutter는 아예 그 위젯을 재생성(re-build) 하기 때문입니다. 그렇기 때문에 immutable이라고 이야기할 수 있는 것이죠. 애니메이션 효과들도 어떻게 보면 widget의 재생성의 과정이 빠르게 반복되는 거라고 하네요. flutter의 공.. 프로그래밍/Flutter & Dart 2022. 12. 30. 언리얼 엔진 5 설치하기 지난 번 첫째아들이 유니티를 배워보고 싶다고 도전했다가 어려워서 실패를 하고 바로 언리얼 5로 전환했습니다. 언리얼 엔진 5를 설치하는 과정을 공유하고자 합니다. 설치 과정이 어렵지는 않습니다. 다만 넉넉잡아 60Gb 이상의 하드디스크 용량을 확보 해야지 설치할 수 있다는 점만 유의하시면 되겠습니다. 먼저 Unreal Engine도 Unity와 마찬가지로 hub가 있습니다. 다만 Unreal Engine의 허브는 스팀과 공유하고 있다는 차이가 있네요. 일단 아래 웹페이지에 접속해 보도록 합니다. https://www.unrealengine.com/en-US/download Download Unreal Engine Follow these steps to download and install Unreal E.. 프로그래밍 2022. 12. 29. [Flutter] Go Router를 이용해서 페이지 이동하기 go route는 flutter에서 페이지 간 이동 시 URL기반의 API를 이용해서 쉽게 이동할 수 있도록 도와주는 패키지입니다. 1. Go Router 설정하기 import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; const Color darkBlue = Color.fromARGB(255, 18, 32, 47); void main() { runApp(MyApp()); } final GoRouter _router = GoRouter( routes: [ GoRoute( path: '/', builder: (context, state) => HomePage(), ), GoRoute( path: '/classA',.. 프로그래밍/Flutter & Dart 2022. 12. 29. 이전 1 2 3 4 5 6 7 다음 반응형