KR20180121732A - 블록 기반 데이터 분석 방법 및 시스템 - Google Patents

블록 기반 데이터 분석 방법 및 시스템 Download PDF

Info

Publication number
KR20180121732A
KR20180121732A KR1020170055403A KR20170055403A KR20180121732A KR 20180121732 A KR20180121732 A KR 20180121732A KR 1020170055403 A KR1020170055403 A KR 1020170055403A KR 20170055403 A KR20170055403 A KR 20170055403A KR 20180121732 A KR20180121732 A KR 20180121732A
Authority
KR
South Korea
Prior art keywords
block
data analysis
user
data
blocks
Prior art date
Application number
KR1020170055403A
Other languages
English (en)
Other versions
KR102327913B1 (ko
Inventor
강동민
조영일
양찬우
서경원
김솔
Original Assignee
엔에이치엔엔터테인먼트 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔에이치엔엔터테인먼트 주식회사 filed Critical 엔에이치엔엔터테인먼트 주식회사
Priority to KR1020170055403A priority Critical patent/KR102327913B1/ko
Priority to JP2018078448A priority patent/JP2018190400A/ja
Priority to US15/964,127 priority patent/US10296304B2/en
Publication of KR20180121732A publication Critical patent/KR20180121732A/ko
Application granted granted Critical
Publication of KR102327913B1 publication Critical patent/KR102327913B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

블록 기반 데이터 분석 방법 및 시스템이 개시된다. 컴퓨터에 의해 실행되는 데이터 분석 방법에 있어서, 프로그래밍 언어 기반의 함수 및 명령어들이 속성에 따라 분류된 복수의 그룹을 대상으로, 그룹 별로 서로 다른 모양으로 맵핑된 블록을 제공하는 단계, 제공된 상기 블록과 관련하여 사용자 선택을 입력받기 위한 사용자 인터페이스를 제공하는 단계, 상기 사용자 인터페이스를 통해 선택된 블록들을 조합한 사용자 작성 블록에 기반하여 데이터 분석 플로우를 생성하는 단계, 상기 사용자 작성 블록에 기반한 데이터 분석 플로우를 언어 변환 엔진을 통해 상기 프로그래밍 언어 기반의 데이터 분석 코드로 변환하는 단계, 및 변환된 상기 데이터 분석 코드에 기초하여 데이터 분석을 수행하는 단계를 포함할 수 있다.

Description

블록 기반 데이터 분석 방법 및 시스템{METHOD AND SYSTEM FOR ANALYZING DATA BASED ON BLOCK}
아래의 설명은 스칼라(scala), 파이썬(python) 등의 프로그래밍 언어를 기반으로 보안 데이터를 분석하는 기술에 관한 것이다.
최근 PC 이외에 태블릿(tablet), 스마트폰(smart phone)과 같은 고성능의 휴대용 기기들이 등장하면서, 데스크탑 PC를 통한 인터넷 접속뿐만 아니라 모바일 접속을 통해 모바일 쇼핑, 검색, 메일 확인 등을 즐기는 인구가 크게 증가하고 있다. 이러한 휴대용 기기의 보급화 및 모바일 인터넷 기술의 발달로, 인터넷 상에 존재하는 많은 데이터들이 웹로봇, 웹크롤러, 스파이더 등을 통해 수집되고 있으며, 수집된 빅 데이터를 원하는 목적에 따라 분석하여 이용하고 있다.
기존의 데이터 분석 시스템은 스칼라(scala), 파이썬(python) 등의 프로그래밍 언어를 이용하여 작성된 데이터 분석 코드를 기반으로 빅 데이터를 분석하였다. 다시 말해, 스칼라, 파이썬 등의 프로그래밍 언어를 학습한 사용자는 데이터 분석 코드를 작성할 수 있으나, 해당 프로그래밍 언어를 학습하지 않은 사용자는 데이터 분석 코드를 작성하기 어려워, 다른 사용자에 의해 작성된 데이터 분석 플로우를 직관적으로 이해하는데 어려움이 존재하며, 유지 보수가 어려워진다.
이에 따라, 파이썬, 스칼라 등의 프로그래밍 언어를 학습하지 못한 사용자라 할지라도, 특정 데이터 파일과 관련하여 자신이 제어 또는 수정하고자 데이터 분석 플로우를 쉽게 작성하도록 도와주는 데이터 분석 기술이 요구된다.
한국공개특허 제10-2013-0155808 호는 하둡 기반의 대용량 불균형 데이터 분류분석 시스템 및 방법에 관한 것으로, 교통 빅데이터를 통합하여 학습 데이터 모델을 생성하고, 생성된 학습 데이터 모델에 기초하여 데이터 분석을 수행하는 기술을 개시하고 있다.
파이썬, 스칼라 등의 프로그래밍 언어를 학습하지 못한 사용자라 할지라도, 특정 데이터 파일과 관련하여 자신이 제어 또는 수정하고자 데이터 분석 플로우를 쉽게 작성하도록 도와주는 데이터 분석 방법 및 시스템을 제공하고자 한다.
또한, 또한, 다른 사용자에 의해 작성된 데이터 분석 플로우를 해당 프로그래밍 언어를 알지 못하더라도 직관적으로 이해하도록 도와주는 데이터 분석 방법 및 시스템을 제공하고자 한다.
컴퓨터에 의해 실행되는 데이터 분석 방법에 있어서, 프로그래밍 언어 기반의 함수 및 명령어들이 속성에 따라 분류된 복수의 그룹을 대상으로, 그룹 별로 서로 다른 모양으로 맵핑된 블록을 제공하는 단계, 제공된 상기 블록과 관련하여 사용자 선택을 입력받기 위한 사용자 인터페이스를 제공하는 단계, 상기 사용자 인터페이스를 통해 선택된 블록들을 조합한 사용자 작성 블록에 기반하여 데이터 분석 플로우를 생성하는 단계, 상기 사용자 작성 블록에 기반한 데이터 분석 플로우를 언어 변환 엔진을 통해 상기 프로그래밍 언어 기반의 데이터 분석 코드로 변환하는 단계, 및 변환된 상기 데이터 분석 코드에 기초하여 데이터 분석을 수행하는 단계를 포함할 수 있다.
컴퓨터에 의해 실행되는 데이터 분석 시스템에 있어서, 프로그래밍 언어 기반의 함수 및 명령어들이 속성에 따라 분류된 복수의 그룹을 대상으로, 그룹 별로 서로 다른 모양으로 맵핑된 블록을 제공하고, 제공된 상기 블록과 관련하여 사용자 선택을 입력받기 위한 사용자 인터페이스를 제공하는 블록 제공부, 상기 사용자 인터페이스를 통해 선택된 블록들을 조합한 사용자 작성 블록에 기반하여 데이터 분석 플로우를 생성하는 플로우 생성부, 상기 사용자 작성 블록에 기반한 데이터 분석 플로우를 언어 변환 엔진을 통해 상기 프로그래밍 언어 기반의 데이터 분석 코드로 변환하는 코드 변환부, 및 변환된 상기 데이터 분석 코드에 기초하여 데이터 분석을 수행하는 데이터 분석부를 포함할 수 있다.
컴퓨터로 구현되는 전자 기기와 결합되어 데이터 분석 방법을 실행시키기 위해 기록매체에 저장된 컴퓨터 프로그램에 있어서, 상기 데이터 분석 방법은, 프로그래밍 언어 기반의 함수 및 명령어들이 속성에 따라 분류된 복수의 그룹을 대상으로, 그룹 별로 서로 다른 모양으로 맵핑된 블록을 제공하는 단계, 제공된 상기 블록과 관련하여 사용자 선택을 입력받기 위한 사용자 인터페이스를 제공하는 단계, 상기 사용자 인터페이스를 통해 선택된 블록들을 조합한 사용자 작성 블록에 기반하여 데이터 분석 플로우를 생성하는 단계, 상기 사용자 작성 블록에 기반한 데이터 분석 플로우를 언어 변환 엔진을 통해 상기 프로그래밍 언어 기반의 데이터 분석 코드로 변환하는 단계, 및 변환된 상기 데이터 분석 코드에 기초하여 데이터 분석을 수행하는 단계를 포함할 수 있다.
데이터 분석 플로우를 미리 정의된 다양한 모양의 블록으로 표현함으로써, 스칼라(scala), 파이썬(python), SQL(structured query language) 등의 언어를 학습하지 못한 사용자라 할지라도, 특정 데이터 파일과 관련하여 자신이 제어 또는 수정하고자 데이터 분석 플로우를 쉽게 작성하도록 도와줄 수 있다.
또한, 다른 사용자에 의해 작성된 데이터 분석 플로우를 미리 정의된 다양한 모양의 블록들을 조립한 형태로 제공함으로써, 해당 프로그래밍 언어를 알지 못하더라도 데이터 분석 플로우가 무엇을 의미하는지를 직관적으로 이해하도록 도와줄 수 있다. 예를 들어, 사내 보안 분석 등과 같이 로컬(local) 네트워크에서 서로 다른 팀 간에 협업을 위해 공유되는 데이터 파일에 대한 데이터 분석 플로우가 블록이 조립된 형태로 표현됨에 따라, 해당 데이터 파일의 편집 및 제어가 용이할 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.
도 3은 본 발명의 일실시예에 따른 전자기기의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 블록도이다.
도 4는 본 발명의 일실시예에 따른 데이터 분석 방법의 예를 도시한 흐름도이다.
도 5는 본 발명의 일실시예에 있어서, 그룹 별로 미리 지정된 블록들을 도시한 도면이다.
도 6은 본 발명의 일실시예에 있어서, 블록들을 조합하여 데이터 분석 플로우를 생성하는 동작을 설명하기 위해 제공되는 도면이다.
도 7은 본 발명의 일실시예에 있어서, 시각화된 다양한 모양의 블록 및 각 블록에 지정된 항목들을 도시한 예시도이다.
도 8은 본 발명의 일실시예에 있어서, 블록 기반의 데이터 분석 플로우를 데이터 분석 코드로 변환하는 동작을 나타내는 도면이다.
도 9는 본 발명의 일실시예에 있어서, 다른 사용자와 데이터 분석 플로우를 공유하는 동작을 설명하는 흐름도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
본 실시예들은 데이터 분석 플로우를 미리 정의된 블록들의 조합(즉, 조립)으로 표현하는 데이터 분석 방법 및 시스템에 관한 것으로서, 특히, 파이썬, 스칼라, SQL 등의 언어에서 코딩(coding) 시 사용되는 함수들 및 명령어들을 속성(즉, 기능)에 따라 여러 그룹으로 분류하고, 그룹 별로 맵핑된 블록을 이용하여 데이터 분석 플로우를 표현하고, 블록들을 조립하여 표현된 데이터 분석 플로우를 시스템 자체에서 자동으로 코딩 변환하여 데이터 분석을 수행하는 기술에 관한 것이다. 예를 들어, 리눅스(Linux), 유닉스(Unix) 기반 플랫폼에서 작성된 셸 스크립트(shell script) 등을 해당 프로그래밍 언어를 학습하지 않은 사용자가 편집 가능하도록, GUI 타입으로 시각화된 블록들을 제공하고, 제공된 블록들 중 선택된 블록들이 조립된 형태로 데이터 분석 플로우를 제공하는 기술에 관한 것이다.
본 실시예들에서, '블록'은 상하좌우 방향으로 조립 가능한 형태의 퍼즐 블록을 나타내는 것으로서, 화면 상에서 사용자에 의해 선택된 블록들이 상하좌우 방향으로 순차적으로 조립되어 데이터 분석 플로우가 나타내는 정보가 직관적으로 표현될 수 있다.
본 실시예들에서, 프로그래밍 언어는 객체 지향 프로그래밍 언어와 함수형 프로그래밍의 요소가 결합된 다중패러다임 프로그래밍 언어(예컨대, 스칼라, 파이썬) 이외에 DB화된 데이터를 관리하기 위해 이용되는 SQL 등의 대화식 프로그래밍 언어를 모두 포함할 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다.
복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 전자 기기 1(110)은 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있다.
통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메시(mesh) 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.
서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다.
도 2는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다. 도 2에서는 하나의 전자 기기에 대한 예로서 전자 기기 1(110), 그리고 하나의 서버에 대한 예로서 서버(150)의 내부 구성을 설명한다. 다른 전자 기기들(120, 130, 140)이나 서버(160) 역시 동일한 또는 유사한 내부 구성을 가질 수 있다.
전자 기기 1(110)과 서버(150)는 메모리(211, 221), 프로세서(212, 222), 통신 모듈(213, 223) 그리고 입출력 인터페이스(214, 224)를 포함할 수 있다. 메모리(211, 221)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(211, 221)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기 1(110)에 설치되어 구동되는 브라우저나 블록 기반 데이터 분석을 위한 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 드라이브 메커니즘(drive mechanism)을 이용하여 메모리(211, 221)와는 별도의 컴퓨터에서 판독 가능한 기록 매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록 매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록 매체가 아닌 통신 모듈(213, 223)을 통해 메모리(211, 221)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로 상술한 서버(160))이 네트워크(170)를 통해 제공하는 파일들에 의해 설치되는 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(211, 221)에 로딩될 수 있다.
프로세서(212, 222)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(211, 221) 또는 통신 모듈(213, 223)에 의해 프로세서(212, 222)로 제공될 수 있다. 예를 들어 프로세서(212, 222)는 메모리(211, 221)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 모듈(213, 223)은 네트워크(170)를 통해 전자 기기 1(110)과 서버(150)가 서로 통신하기 위한 기능을 제공할 수 있으며, 다른 전자 기기(일례로 전자 기기 2(120)) 또는 다른 서버(일례로 서버(160))와 통신하기 위한 기능을 제공할 수 있다. 일례로, 전자 기기 1(110)의 프로세서(222)가 메모리(211)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청(일례로 데이터 분석 서비스를 위한 요청)이 통신 모듈(213)의 제어에 따라 네트워크(170)를 통해 서버(150)로 전달될 수 있다. 역으로, 서버(150)의 프로세서(222)의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(223)과 네트워크(170)를 거쳐 전자 기기 1(110)의 통신 모듈(213)을 통해 전자 기기 1(110)로 수신될 수 있다. 예를 들어 통신 모듈(213)을 통해 수신된 서버(150)의 제어 신호나 명령 등은 프로세서(222)나 메모리(211)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기 1(110)이 더 포함할 수 있는 저장 매체로 저장될 수 있다.
입출력 인터페이스(214, 224)는 입출력 장치(215)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 어플리케이션의 통신 세션을 표시하기 위한 디스플레이와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(214)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 보다 구체적인 예로, 전자 기기 1(110)의 프로세서(222)는 메모리(211)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(150)나 전자 기기 2(120)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(214)를 통해 디스플레이에 표시될 수 있다.
또한, 다른 실시예들에서 전자 기기 1(110) 및 서버(150)는 도 2의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기 1(110)은 상술한 입출력 장치(215) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 전자 기기 1(110)이 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 전자 기기 1(110)에 더 포함되도록 구현될 수 있음을 알 수 있다.
본 발명의 실시예들에 따른 데이터 분석 시스템은 어플리케이션이 실행되는 장치에 구현될 수 있다. 다시 말해, 본 발명의 실시예들에 따른 블록 기반의 데이터 분석 방법은 어플리케이션이 설치 및 구동되는 모든 장치에서 실행될 수 있으며, 이외에 사내 전산 서버, 빅데이터나 보안 데이터 분석 서비스를 제공하는 서버에서 실행될 수도 있다.
예를 들어, 전자기기(110)의 화면에 표시된 블록들 중 사용자에 의해 선택된 블록들을 조합한 데이터 분석 플로우관련 정보를 어플리케이션을 통해 전자기기(110)로부터 서버(150)는 제공받을 수 있으며, 제공받은 데이터 분석 플로우관련 정보에 기초하여 언어 변환 엔진을 통해 데이터 분석 플로우를 데이터 분석 코드로 변환하여 데이터 분석을 수행할 수 있다. 그리고, 서버(150)는 데이터 분석 결과를 어플리케이션을 통해 다시 전자기기(110)로 제공함으로써, 데이터 분석 결과가 전자기기(110)의 화면에 표시되도록 제어할 수 있다.
이후에서는 설명의 편의를 위해 서버(150)에서 데이터 분석 서비스를 제공하는 프로그램 코드 또는 어플리케이션이 저장된 전자 기기(110)에서 해당 프로그램 코드나 어플리케이션을 실행함에 따라, 블록들을 조합하여 데이터 분석 플로우를 생성하여 데이터 분석을 실시예를 설명한다.
도 3은 본 발명의 일실시예에 따른 전자기기의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 블록도이고, 도 4는 본 발명의 일실시예에 따른 데이터 분석 방법의 예를 도시한 흐름도이다.
전자기기(110)는 데이터 분석 시스템을 구현할 수 있으며, 도 3에 도시된 바와 같이 전자기기(110)에 포함된 프로세서(212)는 구성요소들로서 블록 제공부(310), 플로우 생성부(320), 코드 변환부(330) 및 데이터 분석부(340)를 포함할 수 있다. 이러한 프로세서(212) 및 프로세서(212)의 구성요소들은 도 4의 데이터 분석 방법이 포함하는 단계들(410 내지 450)을 수행하도록 전자기기(110)를 제어할 수 있다. 이때, 프로세서(212) 및 프로세서(212)의 구성요소들은 메모리(211)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다. 여기서, 프로세서(212)의 구성요소들은 전자기기(110)에 저장된 프로그램 코드가 제공하는 제어 명령에 따라 프로세서(212)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 예를 들어, 프로세서(212)가 상술한 제어 명령에 따라 데이터 분석 방법에 있어서, 사용자 작성 블록에 기반한 데이터 분석 플로우를 프로그래밍 언어 기반의 데이터 분석 코드로 변환하는 동작의 기능적 표현으로 코드 변환부(330)가 사용될 수 있다.
먼저, 전자기기(110)는 서버(150)로부터 제공받은(예컨대, 다운로드) 데이터 분석 방법을 위한 프로그램의 파일이 저장된 프로그램 코드를 메모리(212)에 로딩할 수 있다. 예를 들어, 전자 기기(110)에서 데이터 분석 서비스를 위한 프로그램(또는 어플리케이션)이 실행되면, 운영체제의 제어에 따라 프로그램의 파일로부터 프로그램 코드가 메모리(211)에 로딩될 수 있다. 그리고, 데이터 분석 시스템인 전자기기(110)의 화면 상에 데이터 분석 플로우 생성을 위해 미리 지정된 다양한 퍼즐 조각 모양의 블록들이 제공될 수 있다.
410 단계에서, 데이터 분석 서비스를 위한 프로그램(또는 어플리케이션)이 실행되면, 블록 제공부(310)는 프로그래밍 언어 기반의 함수들 및 명령어들이 속성(즉, 함수 및 명령어의 고유 기능)에 따라 사전에 미리 분류된 복수의 그룹을 대상으로, 그룹 별로 서로 다른 모양으로 맵핑된(mapping) 블록들을 제공할 수 있다.
일례로, 프로그래밍 언어 기반의 함수들 및 명령어들(연산자 포함)은 로딩(loading), 변환(transform), 필터링(filtering), 취합 및 저장(save) 중 어느 하나의 그룹으로 분류될 수 있다. 여기서, 로딩(loading)은 이미 생성된 데이터 파일들 중 해당 파일이 포함하고 있는 정보(즉, 내용)을 편집 또는 수정하기 위해 해당 파일을 전자기기(110)의 메모리(211)로 읽어드리는 기능이 정의된 함수 및 명령어가 속하는 그룹을 나타낼 수 있다. 예컨대, 스칼라(scala) 언어의 경우, load가 소스(source) 그룹으로 분류될 수 있다. 그리고, 변환, 필터링 및 취합은 생성하고자 하는 파일 또는 로딩된 파일의 정보를 생성 및 수정하기 위한 기능이 정의된 함수, 명령어들이 속하는 그룹을 나타낼 수 있다. 저장(save)은 생성 또는 수정된(즉, 편집된) 파일을 저장하기 위한 기능이 정의된 함수나 명령어들이 속하는 저장 그룹을 나타낼 수 있다. 예컨대, 스칼라(scala) 언어의 경우, save가 싱크(sink) 그룹으로 분류될 수 있다. 그룹 별로 다양한 모양으로 미리 정의된 블록들이 맵핑(mapping)될 수 있다. 예컨대, 그룹의 식별자 정보 및 그룹 별로 속하는 함수나 명령어를 나타내는 지시자가 매칭되어 데이터베이스에 저장 및 유지될 수 있다. 이때, 그룹의 식별자 정보와 해당 그룹에 맵핑된 블록을 나타내는 지시자(indicator) 역시 매칭되어 저장 및 유지될 수 있다.
420 단계에서, 블록 제공부(310)는 제공된 블록들과 관련하여 사용자 선택을 입력받기 위한 사용자 인터페이스를 제공할 수 있다.
일례로, 블록 제공부(310)는 화면에 미리 지정된 제1 영역에 그룹 별로 사전에 미리 지정된 블록들이 표시되도록 제어할 수 있다. 그리고, 블록 제공부(310)는 제1 영역에 표시되는 블록들을 대상으로, 사용자 인터페이스를 통해 사용자에 의해 선택된 블록이 화면에 미리 지정된 제2 영역에 표시되도록 제어할 수 있다. 예컨대, 복수의 그룹들 중 사용자에 의해 선택된 특정 그룹을 나타내는 표시정보가 선택되면, 선택된 특정 그룹에 해당하는 블록들이 제1 영역에 표시될 수 있다. 그리고, 제1 영역에 표시된 블록들 중 사용자에 의해 선택된 적어도 하나의 블록이 제2 영역으로 이동(예컨대, 드래그앤 드롭)되어 표시될 수 있다.
430단계에서, 플로우 생성부(320)는 사용자 인터페이스를 통해 선택된 블록들을 조합한 사용자 작성 블록에 기반하여 데이터 분석 플로우를 생성할 수 있다.
예를 들어, 화면 상의 제1 영역에서 제2 영역으로 드래그앤 드롭(drag & drop)된 블록들을 상하좌우 방향으로 조립할 수 있다. 조립된 블록들 중 적어도 하나의 블록을 대상으로 복사, 삭제 등의 블록 편집을 위한 기능이 제공될 수 있으며, 저장에 해당하는 표시 정보가 선택되면, 플로우 생성부(320)는 사용자 작성 블록이 완성된 것으로 결정하고, 완성된 사용자 작성 블록을 데이터 분석 플로우로 생성할 수 있다.
440 단계에서, 코드 변환부(330)는 생성된 데이터 분석 플로우를 언어 변환 엔진을 통해 프로그래밍 언어 기반의 데이터 분석 코드로 변환할 수 있다.
이때, 코드 변환부(330)는 사용자에 의해 선택된 프로그래밍 언어의 종류에 기초하여, 데이터 분석 플로우를 데이터 분석 코드로 변환할 수 있다. 예를 들어, 스칼라 언어가 선택된 경우, 블록들이 조립된 형태로 표현된 데이터 분석 플로우를 각 블록에 해당하는 함수, 명령어, 및 연산자들을 호출하여 스칼라 언어기반의 코드로 변환할 수 있다. 다른 예로, 파이썬 언어가 선택된 경우, 블록들이 조립된 형태로 표현된 데이터 분석 플로우를 각 블록에 해당하는 함수, 명령어, 및 연산자들을 호출하여 파이썬 언어기반의 코드로 변환할 수 있다. 이외에 다양한 프로그래밍 언어기반의 코드로 변환이 가능하며, 선택된 언어로의 코드 변환을 위해 어플리케이션 또는 프로그램 코드 실행 시 초기 화면에서 파일을 생성 또는 읽어드리는 화면 상에서, 사용자에 의해 적용하고자 하는 프로그래밍 언어가 선택될 수 있다.
450 단계에서, 데이터 분석부(340)는 변환된 데이터 분석 코드에 기초하여 데이터 분석을 수행할 수 있다. 그리고, 데이터 분석부(340)는 분석 결과를 화면을 통해 사용자에게 제공할 수 있으며, 분석 결과를 해당 파일과 연관하여 저장 및 유지할 수 있다.
도 5는 본 발명의 일실시예에 있어서, 그룹 별로 미리 지정된 블록들을 도시한 도면이다.
도 5를 참고하면, 화면 510과 같이, 그룹 별로 미리 지정된 블록들은 블록 별로 구분되어 표시될 수도 있고, 화면 520과 같이 하나의 화면 상에 모든 블록들이 표시될 수도 있다. 510 및 520을 참고하면, 블록들이 표시되는 영역의 상단에는 생성하고자 하는 파일의 이름을 입력하거나 또는 로딩된 파일의 이름을 나타내는 정보 입력창(515)이 표시될 수 있다.
510을 참고하면, 변환 그룹에 해당하는 표시 정보(511)가 선택되면, 변환 그룹에 속하는 함수, 명령어 및 연산자에 해당하는 블록이 표시될 수 있다. 이때, 선택된 그룹은 선택되지 않은 나머지 그룹들과 구분되도록 다른 색상으로 표시될 수 있다. 취합 그룹에 해당하는 표시 정보(513)가 선택되면, 취합 그룹에 해당하는 함수, 명령어 및 연산 등에 해당하는 블록이 표시될 수 있다. 필터링 그룹에 해당하는 표시 정보(512)가 선택되면, 필터링 그룹에 해당하는 함수, 명령어 및 연산자 등에 해당하는 블록이 표시될 수 있다.
예컨대, "if then"에 해당하는 "만약 그렇다면"의 문자열(string)을 포함하는 블록, "if then else"에 해당하는 "만약 그렇다면 아니라면"의 문자열(string)을 포함하는 블록, "grep"에 해당하는 "일치하는"의 문자열(string)을 포함하는 블록 등이 화면(510)에 표시될 수 있다. 즉, 각 블록에 해당하는 함수 및 명령어들과 관련된 속성(즉, 기능)을 나타내는 문자열(string, 예컨대, 만약 그렇다면 등)이 해당 블록 내에 삽입되어 표시될 수 있다. 그리고, 각 블록은 블록에 해당하는 함수 및 명령어의 속성에 따라 텍스트, 숫자 등의 정보를 입력하고 미리 지정된 항목을 선택하기 위한 적어도 하나의 정보 입력창을 포함할 수 있다. 예컨대, 로딩된 파일에 포함된 정보를 대상으로, 특정 문자열이나 특정 라인에 해당하는 정보만을 필터링하고자 하는 경우, 해당 문자열이나 라인을 입력받기 위한 정보 입력창(514)이 grep에 해당하는 블록 내에 삽입되는 형태로 표시될 수 있다.
그룹을 나타내는 표시 정보가 표시되는 영역(516)에는 변환, 필터링, 취합 이외에, 로딩 및 저장을 나타내는 표시 정보를 더 포함할 수 있다. 로딩에 해당하는 표시 정보가 선택되면, 파일, 명령 수행 결과, 권한 등이 로딩될 수 있다. 저장이 선택되면, 블록들이 조합된 사용자 작성 블록이 나타내는 데이터 분석 플로우가 저장될 수 있다.
도 6은 본 발명의 일실시예에 있어서, 블록들을 조합하여 데이터 분석 플로우를 생성하는 동작을 설명하기 위해 제공되는 도면이다.
도 6을 참고하면, 화면의 제1 영역(610)에 표시되는 블록들 중 사용자가 제어하고자 하는 기능을 나타내고 있는 문자열을 포함하는 블록이 선택될 수 있으며, 선택된 블록이 제 2영역(620)으로 드래그앤 드롭될 수 있다.
예컨대, 특정 파일에서 결과값이 특정 조건을 만족하는 결과를 얻고자 하는 경우(로그인 계정 등의 보안 분석 시 입력된 데이터의 권한이 맞는지 확인하고자 하는 경우), 블록들이 표시되는 제1 영역(610)에서 "권한을 가져올 수 있다면"의 문자열을 포함하는 블록(611)이 제2 영역으로 드래그앤 드롭될 수 있다. 그리고, "만약 그렇다면 아니라면"의 문자열을 포함하는 블록(612)이 제2 영역으로 드래그앤 드롭될 수 있다. 이때, 제2 영역에 이미 표시된 블록(621)의 주변 영역으로 상기 블록(622)이 드롭됨에 따라, 플로우 생성부(320)는 블록(621)과 블록(622)이 조립되도록 제어할 수 있다. 제1 영역에는 파일 로딩과 관련된 블록(611)의 정보 입력창에 디폴트(default)로 설정된 "권한"이 표시되어 있으나, 파일 내용을 불러오고자 하는 경우, 정보 입력창에서 항목이 파일 내용으로 변경 선택될 수 있다. 예컨대, 권한이 표시된 정보 입력창이 선택되면, 설정 가능한 항목들이 리스트 형태로 표시될 수 있다. 미리 지정된 설정 가능 항목들 중 선택된 어느 하나의 항목(예컨대, 파일 내용, 613)이 해당 블록의 정보 입력창에 표시될 수 있다. 이때, 항목의 변경은 제1 영역에서 수행될 수도 있고, 해당 블록이 제2 영역으로 이동된 이후에, 제2 영역에서 수행될 수도 있다. 그리고, 특정 조건을 만족하는지, 필터링 등을 위해 특정 문자열이나 숫자 등을 입력하고자 하는 경우, 입력하고자 하는 문자열 입력을 위한 블록(614)이 속성이 다른 블록 내에 삽입될 수 있다. 예컨대, grep 기능(즉, 속성)에 해당하는 블록 내에 상기 블록(614)에 삽입될 수 있다.
제1 영역에 배치된 블록들 중 사용자에 의해 선택되어 제2 영역으로 이동된 블록들을 대상으로, 블록 조합이 완료되면 630과 같이 사용자 작성 블록에 기반하여 조합된 블록들 간의 연결 관계가 직관적으로 나타내는 데이터 분석 플로우가 생성될 수 있다. 이에 따라, 로딩된 파일이 작성된 데이터 분석 코드에 해당하는 프로그래밍 언어를 사용자가 모르더라도, 해당 파일에서 확인하고자 하는 정보에 대한 결과를 요청하는 데이터 분석 플로우를 생성할 수 있다.
도 7은 본 발명의 일실시예에 있어서, 시각화된 다양한 모양의 블록 및 각 블록에 지정된 항목들을 도시한 예시도이다.
도 7에서는 프로그래밍 언어의 함수 및 명령어 등이 맵핑된 블록의 GUI를 나타낼 수 있으며, 단위 함수가 속하는 그룹 별로 맵핑된 블록들을 도시하고 있다.
예컨대, 단위 함수가 수행하는 고유의 기능(즉, 속성)에 따라 단위 함수 각각은 소스 그룹, 변환 그룹, 필터링 그룹, 취합 그룹, 싱크 그룹 등으로 분류될 수 있으며, 각 그룹 별로 블록이 맵핑될 수 있다. 이때, 블록은 블록에 해당하는 함수 및 명령어의 속성에 따라 미리 지정된 항목들 중 특정 항목을 선택하거나, 조건을 입력받기 위한 정보 입력창을 포함할 수 있으며, 해당 블록이 수행하는 기능을 나타내는 문자열을 포함할 수 있다.
예를 들어, 단위 함수는 load(710), grep(720), if(730), cut(740), wc(750), bc(760), save(770) 등을 포함할 수 있으며, 아래의 표 1에서는 단위 함수, 해당 함수가 속하는 그룹을 나타낼 수 있다.
그룹(분류) 단위 함수 속성(설명)
소스(source) load 데이터를 읽음(불러오기)
변환(transform) sed 문장의 단어를 치환
변환(transform) sort 여러 문장을 정렬함
필터링(filtering) cut 특정 컬럼(column)을 선택
필터링(filtering) grep, if 패턴이나 값에 맞는 데이터를 선택
취합 wc/bc 라인/컬럼의 값을 취득함(sum, max, min, avg)
싱크(sink) save 데이터를 저장
도 7을 참고하면, 소스 그룹에 속하는 함수 load에는 읽어오기라는 속성과 관련된 복수의 항목들이 미리 지정될 수 있다. 예컨대, 권한, 파일 내용, 명령어 수행 결과, 파일의 사용자, 파일의 그룹 등이 단위 함수 load에 해당하는 블록(710)의 식별자 정보와 매칭되어 미리 지정될 수 있다. 여기서, "권한"이 load에 해당하는 블록의 디폴트(default)로 미리 지정되어 제1 영역에 배치된 해당 블록의 정보 입력창에 표시될 수 있다. 그리고, 상기 항목을 변경하기 위해 정보 입력창이 선택되면, 권한을 포함하여 나머지 항목들(파일 내용, 명령어 수행 결과, 파일의 사용자, 파일의 그룹 등)이 리스트 형태로 제공될 수 있다. 그러면, 해당 리스트에서 선택된 항목이 블록 내에 삽입된 정보 입력창(711)에 표시될 수 있다. 이때, 파일 이름, 파일의 사용자 등을 입력하기 위한 블록(712)이 블록(711) 내에 삽입될 수 있으며, load의 고유 기능(즉, 속성)에 해당하는 문자열인 "데이터를 가져올 수 있다면"이 해당 블록 내에 표시될 수 있다.
필터링 그룹에는 grep, if, cut 등의 단위 함수가 속할 수 있다. grep에는 파일에서 특정 문자열을 찾는 속성과 관련된 복수의 항목들이 미리 지정될 수 있다. 예를 들어, 일치하는, 일치하지 않는 등의 항목이 grep에 해당하는 블록(720)의 식별자 정보와 매칭되어 미리 지정될 수 있다. 이때, 항목의 선택을 위한 정보 입력창(721) 및 상기 일치하거나 일치하지 않는 특정 문자열을 입력받기 위한 정보 입력창(722)이 블록(720) 내에 삽입된 형태로 표시될 수 있다.
취합 그룹에는 wc, bc 등의 단위 함수가 속할 수 있다. bc(760)의 경우, 함수 bc가 수행하는 고유 기능과 관련된 연산자들(예컨대, SUM, MIN, MAX, AVG)이 항목으로 미리 지정될 수 있다.
저장 그룹에는 단위 함수 save가 속할 수 있으며, save에 해당하는 블록(770)은 소스 그룹을 통해 읽어드린 데이터 파일을 대상으로 변환, 필터링, 취합 그룹에 따라 수행된 연산의 결과를 저장 및 표시하기 위해 이용될 수 있다.
이처럼, 사용자 작성 블록은 변환, 필터링, 취합 중 어느 하나의 그룹과, 소스 그룹, 싱크 그룹이 조합된 하나의 세트가 완성되면, 완성된 사용자 작성 블록이 데이터 분석 플로우로 생성될 수 있다.
도 8은 본 발명의 일실시예에 있어서, 블록 기반의 데이터 분석 플로우를 데이터 분석 코드로 변환하는 동작을 나타내는 도면이다.
도 8을 참고하면, 블록들이 조합되어 사용자 작성 블록(810)이 완성되면, 사용자 작성 블록 기반의 데이터 분석 플로우가 언어 변환 엔진(820)을 통해 데이터 분석을 수행하고자 하는 프로그래밍 언어로 해석이 가능한 데이터 분석 코드(830)로 변환될 수 있다. 예를 들어, 각 블록들은 해당 블록이 나타내는 함수, 명령어의 속성에 따라 서로 다른 모양 및 색상이 지정될 수 있다. 그리고, 코드 변환부(330)는 언어 변환 엔진(820)을 통해 여러 블록들이 조합된 사용자 작성 블록 중 소스 그룹 및 싱크 그룹에 해당하는 블록을 기준으로 수평 방향 및 수직 방향으로 연결된 블록들이 나타내는 함수 및 명령어를 결정하고, 각 블록 별로 지정된 항목 및 조건을 추출하여, 데이터 분석 코드(830)를 생성할 수 있다. 그리고, 데이터 분석 코드(830)를 기반으로 수행된 분석 결과가 다시 화면을 통해 표시될 수 있으며, 해당 파일 및 데이터 분석 플로우와 함께 매칭되어 저장될 수 있다. 그러면, 상기 데이터 분석 플로우는 다른 사용자들과 공유될 수 있다.
도 9는 본 발명의 일실시예에 있어서, 다른 사용자와 데이터 분석 플로우를 공유하는 동작을 설명하는 흐름도이다.
도 9를 참고하면, 910 단계에서, 데이터 분석부(340)는 사용자 작성 블록에 기반한 데이터 분석 플로우를 해당 데이터 파일과 연관하여 저장 및 유지할 수 있다. 예컨대, 로딩된 데이터 파일의 이름 및 작성된 블록 파일의 이름이 매칭되어 저장될 수 있다.
920 단계에서, 생성된 데이터 분석 플로우는 네트워크를 통해 다른 사용자들과 공유될 수 있다.
921 단계에서, 블록 파일의 이름을 검색하여 데이터 분석 플로우는 화면에 로딩할 수 있다. 예컨대, 다른 사용자의 전자기기 화면에 로딩되는 데이터 분석 플로우는 블록들이 조합된 사용자 작성 블록(810) 형태로 표시될 수 있다.
그러면, 922 단계에서, 해당 데이터 분석 플로우의 데이터 분석을 위해 이용되는 프로그래밍 언어를 다른 사용자가 모르더라도, 로딩된 데이터 분석 플로우에서 블록을 추가하거나 삭제, 조건 등을 변경함으로써, 데이터 분석 플로우를 수정할 수 있다.
일례로, 사용자 작성 블록(810)에 해당하는 데이터 분석 플로우에서 조건이 추가된 경우(예컨대, 파일 내용에서 일치하는 문자열이 추가된 경우), 제1영역에서 grep관련 블록을 제2 영역의 해당 부분에 추가하거나 또는 제2 영역의 grep 관련 블록을 복사하여 해당 부분에 추가하고, 추가된 블록 내에 문자열을 입력함으로써, 추가된 조건을 반영하여 데이터 분석을 수행하기 위한 사용자 작성 블록을 생성할 수 있다.
다른 예로, 결과값관련 조건을 수정하고자 하는 경우, 로딩된 사용자 작성 블록(810)에 해당하는 데이터 분석 플로우에서 결과값관련 정보 입력창에 수정하고자 하는 조건값을 입력함으로써, 해당 데이터 분석 플로우가 수정될 수 있다. 그러면, 해당 파일과 연관하여 저장된 데이터 분석 플로우는 수정된 데이터 분석 플로우로 업데이트될 수 있다.
923 단계에서, 수정된 데이터 분석 플로우는 언어 변환 엔진을 통해 데이터 분석 코드로 변환될 수 있으며, 변환된 데이터 분석 코드를 기반으로 데이터 분석된 결과가 화면에 표시될 수 있다.
이처럼, 블록들을 조합하여 작성된 데이터 분석 플로우가 해당 파일과 연관하여 저장 및 공유됨에 따라, 해당 파일이 수행하는 작업과 관련하여 협업하는 팀의 구성원이 프로그래밍 언어를 학습하지 않은 사용자라 할지라도 데이터 분석 플로우를 쉽게 수정할 수 있다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (16)

  1. 컴퓨터에 의해 실행되는 데이터 분석 방법에 있어서,
    프로그래밍 언어 기반의 함수 및 명령어들이 속성에 따라 분류된 복수의 그룹을 대상으로, 그룹 별로 서로 다른 모양으로 맵핑된 블록을 제공하는 단계;
    제공된 상기 블록과 관련하여 사용자 선택을 입력받기 위한 사용자 인터페이스를 제공하는 단계;
    상기 사용자 인터페이스를 통해 선택된 블록들을 조합한 사용자 작성 블록에 기반하여 데이터 분석 플로우를 생성하는 단계;
    상기 사용자 작성 블록에 기반한 데이터 분석 플로우를 언어 변환 엔진을 통해 상기 프로그래밍 언어 기반의 데이터 분석 코드로 변환하는 단계; 및
    변환된 상기 데이터 분석 코드에 기초하여 데이터 분석을 수행하는 단계
    를 포함하는 데이터 분석 방법.
  2. 제1항에 있어서,
    상기 블록은 소스(source), 변환(transform), 필터링(filtering), 취합, 및 싱크(sink) 중 어느 하나의 그룹에 맵핑되는 것
    을 특징으로 하는 데이터 분석 방법.
  3. 제1항에 있어서,
    상기 그룹 별로 서로 다른 모양으로 맵핑된 블록을 제공하는 단계는,
    상기 블록이 나타내는 속성 정보를 해당 블록 상에 함께 표시하여 제공하는 것
    을 특징으로 하는 데이터 분석 방법.
  4. 제1항에 있어서,
    상기 블록과 관련하여 사용자 선택을 입력받기 위한 사용자 인터페이스를 제공하는 단계는,
    상기 블록에 해당하는 함수 및 명령어들의 속성에 따라 미리 지정된 항목들 중 특정 항목을 선택하기 위한 정보 입력창을 상기 블록 내에 삽입하여 제공하는 단계; 및
    상기 정보 입력창을 통해 선택된 항목을 나타내는 지시자(indicator)를 해당 블록과 연관하여 저장하는 단계
    를 포함하는 데이터 분석 방법.
  5. 제1항에 있어서,
    상기 프로그래밍 언어 기반의 데이터 분석 코드로 변환하는 단계는,
    상기 사용자 작성 블록에 기반한 데이터 분석 플로우를 다중패러다임 프로그래밍 언어 중 사용자에 의해 선택된 언어에 해당하는 데이터 분석 코드로 변환하는 것
    을 특징으로 하는 데이터 분석 방법.
  6. 제1항에 있어서,
    상기 사용자 작성 블록은 화면의 제1 영역에 표시되는 상기 블록 중 상기 사용자 인터페이스에 해당하는 제2 영역으로 드래그(drag) 앤 드롭된 블록을 조합한 블록을 나타내는 것
    을 특징으로 하는 데이터 분석 방법.
  7. 제1항에 있어서,
    사용자 작성 블록에 기반하는 상기 데이터 분석 플로우는 해당 데이터 파일과 연관하여 저장됨에 따라, 상기 데이터 파일을 로딩하는 다른 사용자와 공유되는 것
    을 특징으로 하는 데이터 분석 방법.
  8. 컴퓨터에 의해 실행되는 데이터 분석 시스템에 있어서,
    프로그래밍 언어 기반의 함수 및 명령어들이 속성에 따라 분류된 복수의 그룹을 대상으로, 그룹 별로 서로 다른 모양으로 맵핑된 블록을 제공하고, 제공된 상기 블록과 관련하여 사용자 선택을 입력받기 위한 사용자 인터페이스를 제공하는 블록 제공부;
    상기 사용자 인터페이스를 통해 선택된 블록들을 조합한 사용자 작성 블록에 기반하여 데이터 분석 플로우를 생성하는 플로우 생성부;
    상기 사용자 작성 블록에 기반한 데이터 분석 플로우를 언어 변환 엔진을 통해 상기 프로그래밍 언어 기반의 데이터 분석 코드로 변환하는 코드 변환부; 및
    변환된 상기 데이터 분석 코드에 기초하여 데이터 분석을 수행하는 데이터 분석부
    를 포함하는 데이터 분석 시스템.
  9. 제8항에 있어서,
    상기 블록은 소스(source),변환(transform), 필터링(filtering), 취합, 및 싱크(sink) 중 어느 하나의 그룹에 맵핑되는 것
    을 특징으로 하는 데이터 분석 시스템.
  10. 제8항에 있어서,
    상기 블록 제공부는,
    상기 블록이 나타내는 속성 정보를 해당 블록 상에 함께 표시하여 제공하는 것
    을 특징으로 하는 데이터 분석 시스템.
  11. 제8항에 있어서,
    상기 블록 제공부는,
    상기 블록에 해당하는 함수 및 명령어들의 속성에 따라 미리 지정된 항목들 중 특정 항목을 선택하기 위한 정보 입력창을 상기 블록 내에 삽입하여 제공하고, 상기 정보 입력창을 통해 선택된 항목을 나타내는 지시자(indicator)를 해당 블록과 연관하여 저장하는 것
    을 특징으로 하는 데이터 분석 시스템.
  12. 제8항에 있어서,
    상기 코드 변환부는,
    상기 사용자 작성 블록에 기반한 데이터 분석 플로우를 다중패러다임 프로그래밍 언어 중 사용자에 의해 선택된 언어에 해당하는 데이터 분석 코드로 변환하는 것
    을 특징으로 하는 데이터 분석 시스템.
  13. 제8항에 있어서,
    상기 사용자 작성 블록은 화면의 제1 영역에 표시되는 상기 블록 중 상기 사용자 인터페이스에 해당하는 제2 영역으로 드래그(drag) 앤 드롭된 블록을 조합한 블록을 나타내는 것
    을 특징으로 하는 데이터 분석 시스템.
  14. 제8항에 있어서,
    사용자 작성 블록에 기반하는 상기 데이터 분석 플로우는 해당 데이터 파일과 연관하여 저장됨에 따라, 상기 데이터 파일을 로딩하는 다른 사용자와 공유되는 것
    을 특징으로 하는 데이터 분석 시스템.
  15. 컴퓨터로 구현되는 전자 기기와 결합되어 데이터 분석 방법을 실행시키기 위해 기록매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 데이터 분석 방법은,
    프로그래밍 언어 기반의 함수 및 명령어들이 속성에 따라 분류된 복수의 그룹을 대상으로, 그룹 별로 서로 다른 모양으로 맵핑된 블록을 제공하는 단계;
    제공된 상기 블록과 관련하여 사용자 선택을 입력받기 위한 사용자 인터페이스를 제공하는 단계;
    상기 사용자 인터페이스를 통해 선택된 블록들을 조합한 사용자 작성 블록에 기반하여 데이터 분석 플로우를 생성하는 단계;
    상기 사용자 작성 블록에 기반한 데이터 분석 플로우를 언어 변환 엔진을 통해 상기 프로그래밍 언어 기반의 데이터 분석 코드로 변환하는 단계; 및
    변환된 상기 데이터 분석 코드에 기초하여 데이터 분석을 수행하는 단계
    를 포함하는 컴퓨터 프로그램.
  16. 제15항에 있어서,
    상기 블록은 소스(source), 변환(transform), 필터링(filtering), 취합 및 싱크(sink) 중 어느 하나의 그룹에 맵핑되는 것
    을 특징으로 하는 컴퓨터 프로그램.

KR1020170055403A 2017-04-28 2017-04-28 블록 기반 데이터 분석 방법 및 시스템 KR102327913B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170055403A KR102327913B1 (ko) 2017-04-28 2017-04-28 블록 기반 데이터 분석 방법 및 시스템
JP2018078448A JP2018190400A (ja) 2017-04-28 2018-04-16 ブロック基盤データ分析方法、システムおよびプログラム
US15/964,127 US10296304B2 (en) 2017-04-28 2018-04-27 Method and system for analyzing data based on block

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170055403A KR102327913B1 (ko) 2017-04-28 2017-04-28 블록 기반 데이터 분석 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20180121732A true KR20180121732A (ko) 2018-11-08
KR102327913B1 KR102327913B1 (ko) 2021-11-19

Family

ID=63916324

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170055403A KR102327913B1 (ko) 2017-04-28 2017-04-28 블록 기반 데이터 분석 방법 및 시스템

Country Status (3)

Country Link
US (1) US10296304B2 (ko)
JP (1) JP2018190400A (ko)
KR (1) KR102327913B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11645125B2 (en) 2019-05-28 2023-05-09 Samsung Sds Co., Ltd. Method and apparatus for executing workflow including functions written in heterogeneous programing language
WO2023191136A1 (ko) * 2022-03-30 2023-10-05 주식회사 씨에스리 빅데이터 분석 시각화 장치 및 방법

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6543785B1 (ja) * 2019-03-26 2019-07-10 萌希 関野 ブロック型プログラミングシステムにおける新たな言語変換方法
JP7296798B2 (ja) * 2019-06-28 2023-06-23 三菱電機エンジニアリング株式会社 プログラミング学習装置および学習プログラム
CN110737409B (zh) * 2019-10-21 2023-09-26 网易(杭州)网络有限公司 数据加载方法、装置和终端设备
WO2021153620A1 (ja) * 2020-01-29 2021-08-05 株式会社Preferred Networks プログラミング学習支援方法、プログラミング学習支援装置及びプログラム
CN112241416A (zh) * 2020-10-16 2021-01-19 四川长虹电器股份有限公司 一种利用python语法语义构建复杂sql语句的系统及方法
WO2022124018A1 (ja) * 2020-12-11 2022-06-16 株式会社Preferred Networks プログラミング学習ソフトウェア、プログラミング学習装置及びプログラミング学習方法
US20230418566A1 (en) * 2022-06-22 2023-12-28 Amazon Technologies, Inc. Programmatically generating evaluation data sets for code generation models

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11353164A (ja) * 1998-06-09 1999-12-24 Toshiba Corp ソースプログラム生成システムおよびソースプログラム生成方法ならびにチャート生成システムおよびチャート生成方法
JP2004355066A (ja) * 2003-05-27 2004-12-16 Just Syst Corp 情報分析支援システム、情報分析支援方法およびその方法をコンピュータに実行させるプログラム
JP2010244110A (ja) * 2009-04-01 2010-10-28 Alpine Electronics Inc ソフトウエア設計支援装置及びコンピュータプログラム
JP2014186508A (ja) * 2013-03-22 2014-10-02 Canon Inc プログラミング装置、プログラミング支援方法及びプログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0683601A (ja) * 1992-09-02 1994-03-25 Fuji Facom Corp プログラム開発支援装置
JP2755154B2 (ja) * 1994-02-23 1998-05-20 日本電気株式会社 プログラム変換処理装置およびプログラム変換処理方法
KR100692172B1 (ko) * 2005-03-30 2007-03-12 아이티플러스 주식회사 종합 문자열 분석기 및 그 분석 방법
US20080159633A1 (en) * 2007-01-03 2008-07-03 Blue Reference, Inc. Method and Apparatus for Managing Data-Analysis Parts in a Word Processor Application
EP2329389A4 (en) * 2008-08-13 2013-02-27 ENHANCING THE PERFORMANCE OF A SOFTWARE APPLICATION
US8671397B2 (en) * 2011-09-27 2014-03-11 International Business Machines Corporation Selective data flow analysis of bounded regions of computer software applications
US20130227529A1 (en) * 2013-03-15 2013-08-29 Concurix Corporation Runtime Memory Settings Derived from Trace Data
US9710264B2 (en) * 2013-10-28 2017-07-18 International Business Machines Corporation Screen oriented data flow analysis
KR101563406B1 (ko) 2013-12-13 2015-10-26 건국대학교 산학협력단 하둡 기반의 대용량 불균형 데이터 분류분석 시스템 및 방법
WO2015139048A1 (en) * 2014-03-14 2015-09-17 Concurrent, Inc. Cluster (sub) graph isomorphism logical data flow mapping rules
US10025571B1 (en) * 2014-07-17 2018-07-17 Google Llc Optimized execution of dynamic languages
US9335911B1 (en) * 2014-12-29 2016-05-10 Palantir Technologies Inc. Interactive user interface for dynamic data analysis exploration and query processing
JP2016218924A (ja) * 2015-05-25 2016-12-22 富士通株式会社 情報処理装置、電子機器、情報処理プログラム及び処理プログラム
US10310826B2 (en) * 2015-11-19 2019-06-04 Intel Corporation Technologies for automatic reordering of sparse matrices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11353164A (ja) * 1998-06-09 1999-12-24 Toshiba Corp ソースプログラム生成システムおよびソースプログラム生成方法ならびにチャート生成システムおよびチャート生成方法
JP2004355066A (ja) * 2003-05-27 2004-12-16 Just Syst Corp 情報分析支援システム、情報分析支援方法およびその方法をコンピュータに実行させるプログラム
JP2010244110A (ja) * 2009-04-01 2010-10-28 Alpine Electronics Inc ソフトウエア設計支援装置及びコンピュータプログラム
JP2014186508A (ja) * 2013-03-22 2014-10-02 Canon Inc プログラミング装置、プログラミング支援方法及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11645125B2 (en) 2019-05-28 2023-05-09 Samsung Sds Co., Ltd. Method and apparatus for executing workflow including functions written in heterogeneous programing language
WO2023191136A1 (ko) * 2022-03-30 2023-10-05 주식회사 씨에스리 빅데이터 분석 시각화 장치 및 방법

Also Published As

Publication number Publication date
KR102327913B1 (ko) 2021-11-19
US20180314499A1 (en) 2018-11-01
US10296304B2 (en) 2019-05-21
JP2018190400A (ja) 2018-11-29

Similar Documents

Publication Publication Date Title
KR102327913B1 (ko) 블록 기반 데이터 분석 방법 및 시스템
US11475215B2 (en) Digital processing systems and methods for dynamic work document updates using embedded in-line links in collaborative work systems
US10466971B2 (en) Generation of an application from data
US9087296B2 (en) Navigable semantic network that processes a specification to and uses a set of declaritive statements to produce a semantic network model
US9639240B2 (en) Computer-implemented method for launching an installed application
CN1713179B (zh) 在对象模型中的影响分析
CN106062711B (zh) 用于复合控件的方法、系统和计算机存储介质
US20130283141A1 (en) Client Agnostic Spatial Workflow Form Definition and Rendering
Lerman et al. Programming entity framework: code first
KR20150143472A (ko) 컨트롤 이벤트의 생성 기법
AU2017265144B2 (en) Information retrieval
Powell Microsoft Power BI cookbook: Creating business intelligence solutions of analytical data models, reports, and dashboards
US20200342029A1 (en) Systems and methods for querying databases using interactive search paths
JP2023182817A (ja) ウェブサイト構築システム用の構成可能なアプリケーションの作成および処理のためのシステムおよび方法
US20220300542A1 (en) System and method for translating a software query in an automated integration process into natural language
CN106599241A (zh) 一种gis软件中针对大数据的可视化管理方法
RU2679971C2 (ru) Осуществление доступа к семантическому контенту в системе разработки
US9904452B2 (en) Building user specific user interface instances
KR102277240B1 (ko) 키워드 관계 구조를 이용한 동의어 추출 방법 및 시스템
US11269857B2 (en) Structured data collection, presentation, validation and workflow management
Zhao The database construction of intangible cultural heritage based on artificial intelligence
US20180113721A1 (en) Systems and methods for generating a self-updating maintenance page
Toms et al. Mastering geospatial analysis with Python: explore GIS processing and learn to work with GeoDjango, CARTOframes and MapboxGL-Jupyter
KR102195191B1 (ko) 키워드 관계 구조를 이용한 신규 키워드 추출 방법 및 시스템
JPH11282882A (ja) 文書管理方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right