KR102134494B1 - 위치 정보를 가진 데이터 프로파일링 - Google Patents
위치 정보를 가진 데이터 프로파일링 Download PDFInfo
- Publication number
- KR102134494B1 KR102134494B1 KR1020157013542A KR20157013542A KR102134494B1 KR 102134494 B1 KR102134494 B1 KR 102134494B1 KR 1020157013542 A KR1020157013542 A KR 1020157013542A KR 20157013542 A KR20157013542 A KR 20157013542A KR 102134494 B1 KR102134494 B1 KR 102134494B1
- Authority
- KR
- South Korea
- Prior art keywords
- records
- values
- collection
- field
- value
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
프로파일링 데이터는 적어도 하나의 필드들의 제1 세트에 나타나는 별개 값들의 제1 세트에 대해, 대응하는 위치 정보를 생성하는 단계; 필드들의 상기 제1 세트에 대해, 상기 별개 값에 대한 상기 위치 정보와 별개 값들의 상기 제1 세트로부터의 별개 값을 식별하는 엔트리들(209)의 대응하는 리스트를 생성하는 단계; 적어도 하나의 필드들의 제2 세트에 대해, 필드들의 상기 제2 세트에 나타나는 별개 값들의 제2 세트로부터의 별개 값을 식별하는 각 엔트리를 가진, 엔트리들의 대응하는 리스트를 생성하는 단계; 및 필드들의 상기 제1 세트에 나타나는 적어도 하나의 값에 대한 상기 위치 정보를 이용하는 상기 컬렉션의 적어도 하나의 레코드의 위치를 정하는 단계와, 상기 위치가 정해진 레코드들의 필드들의 상기 제2 세트에 나타나는 적어도 하나의 값을 결정하는 단계에 적어도 부분적으로 기초하여, 결과 정보(240)를 생성하는 단계를 포함하는, 레코드들의 액세스된 컬렉션(203)을 처리하는 단계를 포함한다.
Description
적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 것과 관련된다.
본 출원은 2012년 10월 22일에 출원된 미국 출원 번호 61/716,766에 대해 우선권을 주장한, 2013년 8월 2일에 출원된 미국 출원 번호 13/958,057에 대해 우선권을 주장하며, 상기 문헌은 본원에 참조로 원용된다.
본 설명은 위치 정보를 가진 프로파일링 데이터에 관한 것이다
저장된 데이터세트들은 종종 다양한 특징이 알려지지 않은 데이터를 포함한다. 데이터세트 내의 데이터는 각 필드들(또한 "속성" 또는 "열들(columns)"로 불리는)에 대하여 값들을 가진 레코드들로 체계화될 수 있다. 필드 내의 값들은 상기 필드에 대하여 연관된 데이터 포맷 정보에 따라 포맷되고 인코딩된, 아마도 널 (possibly null) 값들을 포함하는, 문자열들(strings), 숫자들 또는 임의의 데이터를 포함할 수 있다. 일부 경우에 필드에 대한 데이터 포맷 정보가 알려지나 상기 필드에 나타나는 실제 값들은 알려질 수 없다. 예를 들어, 데이터 세트 내의 레코드들에 대해 필드들에 대한 일반적인 값들 또는 값들의 범위들, 상기 데이터세트 내의 레코드들의 상이한 필드들 간의 관계들, 또는 상이한 필드들의 값들 간의 종속성들은 알려지지 않을 수 있다. 데이터 프로파일링은 이러한 특성들을 결정하기 위해 데이터세트의 소스를 검사하는 단계를 포함할 수 있다.
본 발명은 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 효과적으로 프로파일링하기 위한 방법, 컴퓨터 판독가능한 매체, 및 시스템을 제공하는 것을 목적으로 한다.
일 측면에서, 일반적으로 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법은 상기 데이터 저장 시스템에 결합된 인터페이스를 통해 상기 데이터 저장 시스템에 저장된 레코드들의 적어도 하나의 컬렉션을 액세스하는 단계; 및 레코드들의 상기 컬렉션의 적어도 하나의 지정된 필드들에 나타나는 값들을 특징짓는 결과 정보를 생성하기 위해 레코드들의 상기 컬렉션을 처리하는 단계를 포함한다. 상기 처리 단계는 상기 컬렉션 내의 상기 레코드들의 적어도 하나의 필드들의 제1 세트에 나타나는 별개 값들의 제1 세트에 대해, 대응하는 위치 정보- 상기 대응하는 위치 정보는 상기 별개 값들의 제1 세트의 각 별개 값에 대해, 상기 별개 값이 나타나는 모든 레코드를 식별함-를 생성하는 단계, 적어도 하나의 필드들의 상기 제1 세트에 대해, 상기 별개 값에 대한 상기 위치 정보와, 상기 별개 값들의 제1 세트로부터의 별개 값을 식별하는 각 엔트리를 가진, 엔트리들의 대응하는 리스트를 생성하는 단계, 적어도 하나의 필드들의 상기 제1 세트와 상이한 상기 컬렉션 내의 상기 레코드들의 적어도 하나의 필드들의 제2 세트에 대해, 적어도 하나의 필드들의 상기 제2 세트에 나타나는 별개 값들의 제2 세트로부터의 별개 값을 식별하는 각 엔트리를 가진, 엔트리들의 대응하는 리스트를 생성하는 단계, 및 적어도 하나의 필드들의 상기 제1 세트에 나타나는 적어도 하나의 값에 대한 상기 위치 정보를 이용하는 레코드들의 상기 컬렉션의 적어도 하나의 레코드의 위치를 정하는 단계, 및 상기 위치가 정해진 레코드의 적어도 하나의 필드들의 상기 제2 세트에 나타나는 적어도 하나의 값을 결정하는 단계에 적어도 부분적으로 기초하여, 레코드들의 상기 컬렉션의 상기 적어도 하나의 지정된 필드들에 나타나는 값들을 특징짓는 상기 결과 정보를 생성하는 단계를 포함한다.
측면들은 다음의 특징들 중 적어도 하나를 포함한다.
각 엔트리는 별개 값이 적어도 하나의 필드들의 세트에 나타나는 레코드들의 개수의 카운트(count)를 더 식별한다.
상기 처리 단계는 상기 식별된 카운트(count)에 의해 각 리스트의 엔트리들을 분류하는 단계를 더 포함한다.
상기 처리 단계는 상기 별개 값들의 제2 세트에 대하여, 대응하는 위치 정보- 상기 대응하는 위치 정보는 상기 별개 값들의 제2 세트 내의 각 별개 값에 대해, 상기 별개 값이 나타나는 모든 레코드를 식별함-를 생성하는 단계를 더 포함하되, 상기 적어도 하나의 필드들의 제2 세트에 대응하는 상기 리스트에 대해, 상기 별개 값의 제2 세트로부터의 별개 값을 식별하는 각 엔트리는 상기 별개 값에 대한 위치 정보를 포함한다.
상기 처리 단계는 상기 레코드들의 적어도 하나의 필드들의 상기 제1 세트에 나타나는 각 쌍(pair) 내의 제1 값과 상기 레코드들의 적어도 하나의 필드들의 상기 제2 세트에 나타나는 각 쌍 내의 제2 값을 가진, 값들의 별개 쌍들의 세트에 대해, 대응하는 위치 정보- 상기 대응하는 위치정보는 값들의 각 별개 쌍에 대하여, 상기 값들의 별개 쌍이 나타나는 모든 레코드를 식별함-를 생성하는 단계를 더 포함한다.
상기 값들의 별개 쌍들의 세트로부터의 값들의 별개 쌍에 대한 위치 정보를 생성하는 단계는 별개 값들의 상기 제1 세트로부터의 제1 별개 값에 대한 위치 정보와 별개 값들의 상기 제2 세트로부터의 제2 별개 값에 대한 위치 정보 간의 교차(intersection)를 결정하는 단계를 포함를 포함한다.
*상기 교차를 결정하는 단계는 상기 컬렉션 내의 레코드를 위치를 정하기 위해 상기 제1 별개 값에 대한 상기 위치 정보를 이용하는 단계, 및 상기 제2 별개 값을 결정하기 위해 상기 위치가 정해진 레코드를 이용하는 단계를 이용하는 단계를 포함한다.
상기 방법은 복수의 리스트들의 그룹을 분류하는 단계를 더 포함하되, 상기 복수의 리스트들은 각 리스트 내의 엔트리들에서 식별되는 별개 값들의 개수에 의해, 상기 적어도 하나의 필드들의 제2 세트들에 대응하는 상기 리스트와 상기 적어도 하나의 필드들의 제1 세트에 대응하는 상기 리스트를 포함한다.
상기 처리 단계는 상기 레코드들의 적어도 하나의 필드들의 상기 제1 세트에 나타나는 각 쌍 내의 제1 값과 적어도 하나의 필드들의 상기 제1 세트와 상이한 상기 레코드들의 적어도 하나의 필드들의 제2 세트에 나타나는 각 쌍 내의 제2 값을 가진, 값들의 별개 쌍들의 세트에 대해, 대응하는 위치 정보- 상기 대응하는 위치 정보는 값들의 각 별개 쌍에 대해, 상기 값들의 별개 쌍이 나타나는 모든 레코드을 식별함-를 생성하는 단계, 및 상기 값들의 별개 쌍들의 세트에 대해, 상기 값들의 별개 쌍에 대한 위치 정보와, 상기 값들의 별개 쌍들의 세트로부터의 값들의 별개 쌍을 식별하는 각 엔트리를 가진, 엔트리들의 대응하는 리스트를 생성하는 단계를 더 포함한다.
상기 위치 정보는 상기 별개 값이 나타나는 모든 레코드에 대해 고유(unique) 인덱스 값을 식별한다.
상기 위치 정보는 특정한 고유 인덱스 값을 분류하여 특정한 고유 인덱스 값을 식별한다.
상기 위치 정보는 상기 위치 정보 내의 상기 고유한 인덱스 값을 인코딩하여 고유 인덱스 값을 식별한다.
상기 고유 인덱스 값을 인코딩하는 단계는 상기 고유 인덱스 값에 대응하는 벡터 내의 위치에서 비트를 저장하는 단계를 포함한다.
상기 컬렉션은 적어도 하나의 필드들의 상기 제1 세트를 포함하는 필드들을 가진 레코드들의 제1 서브세트와 적어도 하나의 필드들의 상기 제2 세트를 포함하는 필드들을 가진 레코드들의 제2 서브세트를 포함한다.
상기 처리단계는 (1) 상기 제1 서브세트의 모든 레코드를 가진 고유 인덱스 값을 연관시키는 레코드들의 상기 제1 서브세트의 필드의 인덱스 값들과, (2) 값들의 상기 제2 서브세트의 모든 레코드를 가진 키 값을 연관시키는 레코드들의 상기 제2 서브세트의 필드의 키 값들 간의 매핑(mapping)을 제공하는 정보를 생성하는 단계를 더 포함하되, 상기 키 값은 상기 제1 서브세트의 레코드들을 제2 서브세트의 레코드들과 링크한다.
상기 위치 정보는 상기 별개 값이 나타나는 모든 레코드에 대해 고유 인덱스 값들을 식별한다.
또 다른 측면에서, 일반적으로, 컴퓨터 프로그램은 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위하여, 컴퓨터 판독가능한 저장 매체에 저장된다. 상기 컴퓨터 프로그램은 상기 컴퓨터 프로그램은 컴퓨팅 시스템이 상기 데이터 저장 시스템에 결합된 인터페이스를 통해 상기 데이터 저장 시스템에 저장된 레코드들의 적어도 하나의 컬렉션을 액세스하고; 레코드들의 상기 컬렉션의 적어도 하나의 지정된 필드들에 나타나는 값들을 특징짓는 결과 정보를 생성하기 위해 레코드들의 상기 컬렉션을 처리하도록 하는 인스트럭션들을 포함하되, 상기 처리 단계는 상기 컬렉션 내의 상기 레코드들의 적어도 하나의 필드들의 제1 세트에 나타나는 별개 값들의 제1 세트에 대해, 대응하는 위치 정보- 상기 대응하는 위치 정보는 상기 별개 값들의 제1 세트의 각 별개 값에 대해, 상기 별개 값이 나타나는 모든 레코드를 식별함-를 생성하는 단계, 적어도 하나의 필드들의 상기 제1 세트에 대해, 상기 별개 값에 대한 상기 위치 정보와, 상기 별개 값들의 제1 세트로부터의 별개 값을 식별하는 각 엔트리를 가진, 엔트리들의 대응하는 리스트를 생성하는 단계, 적어도 하나의 필드들의 상기 제1 세트와 상이한 상기 컬렉션 내의 상기 레코드들의 적어도 하나의 필드들의 제2 세트에 대해, 적어도 하나의 필드들의 상기 제2 세트에 나타나는 별개 값들의 제2 세트로부터의 별개 값을 식별하는 각 엔트리를 가진, 엔트리들의 대응하는 리스트 생성하는 단계, 및 적어도 하나의 필드들의 상기 제1 세트에 나타나는 적어도 하나의 값에 대한 상기 위치 정보를 이용하는 레코드들의 상기 컬렉션의 적어도 하나의 레코드의 위치를 정하는 단계, 상기 위치가 정해진 레코드들의 적어도 하나의 필드들의 상기 제2 세트에 나타나는 적어도 하나의 값들을 결정하는 단계에 적어도 부분적으로 기초하여, 레코드들의 상기 컬렉션의 상기 적어도 하나의 지정된 필드들에 나타나는 값들을 특징짓는 상기 결과 정보를 생성하는 단계를 포함한다.
또 다른 측면에서, 일반적으로 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 컴퓨팅 시스템은 상기 데이터 저장 시스템에 저장된 레코드들의 적어도 하나의 컬렉션을 액세스하도록 구성된 상기 데이터 저장 시스템에 결합된 인터페이스; 및 레코드들의 상기 컬렉션의 적어도 하나의 지정된 필드에 나타나는 값들을 특징짓는 결과 정보를 생성하기 위해 레코드들의 상기 컬렉션을 처리하도록 구성된 적어도 하나의 프로세서를 포함한다. 상기 처리 단계는 상기 컬렉션 내의 상기 레코드들의 적어도 하나의 필드들의 제1 세트에 나타나는 별개 값들의 제1 세트에 대해, 대응하는 위치 정보- 상기 대응하는 위치 정보는 상기 별개 값들의 제1 세트의 각 별개 값에 대해, 상기 별개 값이 나타나는 모든 레코드를 식별함-를 생성하는 단계, 적어도 하나의 필드들의 상기 제1 세트에 대해, 상기 별개 값에 대한 상기 위치 정보와, 상기 별개 값들의 제1 세트로부터의 별개 값을 식별하는 각 엔트리를 가진, 엔트리들의 대응하는 리스트를 생성하는 단계, 적어도 하나의 필드들의 상기 제1 세트와 상이한 상기 컬렉션 내의 상기 레코드들의 적어도 하나의 필드들의 제2 필드에 대해, 적어도 하나의 필드들의 상기 제2 세트에 나타나는 별개 값들의 제2 세트로부터의 별개 값을 식별하는 각 엔트리를 가진, 엔트리들의 대응하는 리스트를 생성하는 단계, 및 적어도 하나의 필드들의 상기 제1 세트에 나타나는 적어도 하나의 값에 대한상기 위치 정보를 이용하는 레코드들의 상기 컬렉션의 적어도 하나의 레코드의 위치를 정하는 단계, 및 상기 위치가 정해진 레코드의 적어도 하나의 필드들의 상기 제2 세트에 나타나는 적어도 하나의 값을 결정하는 단계에 적어도 부분적으로 기초하여, 레코드들의 상기 컬렉션의 상기 적어도 하나의 지정된 필드들에 나타나는 값들을 특징짓는 상기 결과 정보를 생성하는 단계를 포함한다.
다른 측면에서, 일반적으로, 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링 하기 위한 컴퓨팅 시스템은 상기 데이터 저장 시스템에 저장된 레코드들의 적어도 하나의 컬렉션을 액세스하기 위한 수단; 및 상기 레코드들의 컬렉션의 적어도 하나의 지정된 필드들에 나타나는 값들을 특징짓는 결과 정보를 생성하기 위해 상기 레코드들의 컬렉션을 처리하기 위한 수단을 포함한다. 상기 처리는 상기 컬렉션 내의 상기 레코드들의 적어도 하나의 필드들의 제1 세트에 나타나는 별개 값들의 제1 세트에 대해, 대응하는 위치 정보- 상기 대응하는 위치 정보는 상기 별개 값들(distinct values)의 제1 세트 내의 각 별개 값에 대해, 상기 별개 값이 나타나는 모든 레코드를 식별함- 를 생성하는 단계, 상기 적어도 하나의 필드들의 제1 세트에 대해, 상기 별개 값에 대한 상기 위치 정보와, 상기 별개 값들의 제1 세트로부터의 별개 값을 식별하는 각 엔트리를 가진, 엔트리들의 대응하는 리스트를 생성하는 단계, 상기 적어도 하나의 필드들의 제1 세트와 상이한 상기 컬렉션 내의 상기 레코드들의 적어도 하나의 필드들의 제2 세트에 대해, 상기 적어도 하나의 필드들의 제2 세트에 나타나는 별개 값들의 제2 세트로부터의 별개 값을 식별하는 각 엔트리를 가진, 엔트리들의 대응하는 리스트를 생성하는 단계, 및 상기 적어도 하나의 필드들의 제1 세트에 나타나는 적어도 하나의 값들에 대하여 상기 위치 정보를 이용하는 상기 레코드들의 컬렉션의 적어도 하나의 레코드의 위치를 정하는 단계, 및 상기 위치가 정해진 레코드의 적어도 하나의 필드들의 상기 제2 세트에 나타나는 적어도 하나의 값을 결정하는 단계에 적어도 부분적으로 기초된, 레코드들의 상기 컬렉션의 상기 적어도 하나의 지정된 필드들에 나타나는 값들을 특징짓는 상기 결과 정보를 생성하는 단계를 포함한다.
측면들은 적어도 하나의 다음의 장점을 포함한다.
일부 데이터 프로파일링 절차들은 "도메인"이 상기 데이터세트의 레코드들의 적어도 하나의 필드들, 필드들의 결합들, 또는 필드의 조각들(fragments)을 구성하는, 상기 데이터세트의 레코드들의 도메인에서 별개 값들(distinct values)의 센서스를 컴파일(compiling)하여 데이터세트의 데이터 품질 측정을 계산한다. 센서스가 도메인에 대해 컴파일될 때, 센서스 데이터는 상기 도메인에 대해 별개 값들의 세트를 열거하고 각 별개 값을 가진 레코드들의 개수의 카운트들(counts)을 포함하는 것이 저장된다. 예를 들어, 센서스 데이터는 상기 별개 값이 상기 선택된 도메인에 나타나는 레코드들의 개수의 카운트(count)와 상기 선택된 도메인에 나타나는 별개 값을 포함하는 각 값 카운트 엔트리(each value count entry)를 가지는, 선택된 도메인에 대해 값 카운트 엔트리들의 리스트로 배열될 수 있다. 일부 실시예에서, 각 필드는 별개의 도메인이다. 일부 실시예에서, 상기 센서스 데이터는 센서스 데이터는 단일 데이터세트에 저장되고, 선택적으로 빠른 랜덤 액세스를 위해 필드에 의해, 예를 들어 각 필드에 대해 하나씩, 인덱스된다 반면에 다른 실시예들에서, 센서스 데이터가 다수 데이터세트에 저장될 수 있다.
데이터 품질 측정들은 별개 값들의 분포 및 개수, 지정된 검증 규칙들에 따른 유효 및 무효 값들의 분포 및 개수, 적어도 하나의 필드들의 다른 세트 내의 값들이 고정되게 유지될 때 적어도 하나의 필드들의 하나의 세트 내의 값들의 분포 및 개수와 적어도 두 개의 필드 내의 값들 간 상관관계 (또한 "함수 종속성"으로 불리는)를 포함할 수 있다. 특정 측정은 연산될 때마다, 적합한 센서스가 데이터세트 내의 데이터를 처리하여 취해질 수 있다. 그러나, 필드들의 결합에 대하여 데이터 품질 측정을 계산할 때와 같은 일부 경우에, 데이터의 전체 볼륨이 다시 처리되도록 요구하는 대신에, 필드들의 상기 결합에 대한 계산들이 개별 필드들에 대해 이미 계산된 저장된 센서스 데이터를 이용하여 수행될 수 있다.
일부 실시예에서, 선택된 도메인을 위한 센서스 데이터는 센서스 데이터의 각 별개 값에 대해, 상기 별개 값이 상기 선택된 도메인에 나타나는 모든 레코드를 식별하는 위치 정보를 포함할 수 있다. 상기 위치 정보는 데이터의 전체 볼륨(full volume)에 대해 단지 한번만 계산될 필요가 있다. 필드들의 결합들을 포함하는 데이터 품질 측정들의 이후 평가(Subsequent evaluation)는, 특히, 분할(segmentation), 상관관계(correlation), 또는 다수 필드들을 통합하는 검증 규칙들(validation rules)을 포함하는 측정들, 은 새로운 센서스 데이터를 계속하기 위해 데이터세트의 레코드를 저장하는 소스로 되돌아 가지 않고 위치 정보를 가진 기존(existing) 센서스 데이터로부터 직접 계산될 수 있다. 이는 추가 데이터 품질 측정의 계산을 훨씬 더 효율적이 게 한다. 또한, 위치 정보를 가진 센서스 데이터는 데이터 품질 결과들로 드릴 다운(drill down)하기 위해, 즉, 데이터 품질 결과와 연관된 근본적인(underlying) 데이터 레코드들, 예를 들어, 무효 레코드들 또는 기본 키 필드 내의 중복 레코드들, 을 반환하기 위해 이용된다. 만일 상이한 데이터세트들의 도메인들이 프로파일된다면, 인덱스 맵은 상기 상이한 데이터세트들의 레코드들을 관련시키기 위해 조인 연산(join operation)을 수행할 필요성을 피하기 위해 이용된다.
본 발명의 다른 특징들 및 장점들은 다음 설명, 및 청구범위로부터 명확해 질 것이다.
본 발명은 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 효과적으로 프로파일링하기 위한 방법, 컴퓨터 판독가능한 매체, 및 시스템을 제공하는 장점이 있다.
도 1은 프로파일링 데이터를 위한 시스템의 블록 다이어그램이다.
도 2A는 데이터 프로파일링 절차에 대한 데이터와 동작들의 개략도이다.
도 2B는 데이터 프로파일링 절차에 대한 흐름도이다.
도 3은 함수 종속성 결과에 대하여 생성된 데이터의 개략도이다.
도 4는 결합된 센서스 생성에 대한 절차의 흐름도이다.
도 5는 결합된 센서스 생성에 대한 데이터의 개략도이다.
도 6A는 함수 종속성을 결정하기 위한 절차에 대한 흐름도이다.
도 6B은 함수 종속성 정보를 가진 결합된 센서스의 일 실시예이다.
도 7은 에지 드릴 다운 절차의 개략도이다.
도 8A는 인덱스 맵에 대한 데이터의 개략도이다.
도 8B는 함수 종속성 결과에 대한 데이터의 개략도이다.
도 9는 노드 드릴 다운 절차의 개략도이다.
도 10은 세그먼트된 결합된 센서스와 세그먼트 센서스에 대한 데이터의 개략도이다.
도 11은 세그먼트 큐브에 대한 데이터의 개략도이다.
도 2A는 데이터 프로파일링 절차에 대한 데이터와 동작들의 개략도이다.
도 2B는 데이터 프로파일링 절차에 대한 흐름도이다.
도 3은 함수 종속성 결과에 대하여 생성된 데이터의 개략도이다.
도 4는 결합된 센서스 생성에 대한 절차의 흐름도이다.
도 5는 결합된 센서스 생성에 대한 데이터의 개략도이다.
도 6A는 함수 종속성을 결정하기 위한 절차에 대한 흐름도이다.
도 6B은 함수 종속성 정보를 가진 결합된 센서스의 일 실시예이다.
도 7은 에지 드릴 다운 절차의 개략도이다.
도 8A는 인덱스 맵에 대한 데이터의 개략도이다.
도 8B는 함수 종속성 결과에 대한 데이터의 개략도이다.
도 9는 노드 드릴 다운 절차의 개략도이다.
도 10은 세그먼트된 결합된 센서스와 세그먼트 센서스에 대한 데이터의 개략도이다.
도 11은 세그먼트 큐브에 대한 데이터의 개략도이다.
도 1은 데이터 프로파일링 기술이 사용될 수 있는 예시적인 데이터 처리 시스템(100)을 도시한다. 시스템(100)은 저장 디바이스들 또는 온라인 데이터 스트림에 대한 연결들 같은 적어도 하나의 데이터 소스(102)를 포함하고, 이들 각각은 다양한 저장 포맷들 (예컨대, 데이터베이스 테이블들, 스프레드시트 파일들, 플랫 텍스트 파일들, 또는 메인 프레임에 의해 이용되는 네이티브 포맷) 중 임의의 것으로 데이터를 저장할 수 있다. 실행 환경(104)은 프로파일링 모듈(106)과 처리 모듈(108)을 포함한다. 상기 실행 환경(104)은 UNIX 운영 시스템과 같은, 적합한 운영 시스템의 제어 하에서 적어도 하나의 범용 컴퓨터에서 호스팅될(hosted) 수 있다. 예를 들어, 실행 환경(104)은 복수의 중앙 처리 유닛(CPUs), 로컬(예컨대, 가령 SMP 컴퓨터와 같은 멀티프로세서 시스템), 또는 로컬 분산 (예컨대, 클러스터들 또는 MPPs로 결합된 복수의 프로세서들), 또는 원격, 또는 원격 분산된 (예컨대, 로컬 영역 네트워크(LAN) 및/또는 광역 네트워크(WAN)), 또는 이들의 임의의 조합을 이용하는 컴퓨터 시스템의 구성을 포함하는 다중 노드 병렬 컴퓨팅 환경을 포함할 수 있다.
프로파일링 모듈(106)은 데이터 소스(102)로부터 데이터를 판독하고 처리 모듈(108) 및 프로파일링 모듈(106)에 액세스 가능한 프로파일링 데이터 스토어(110)에 프로파일링 요약 정보를 저장한다. 예를 들어, 상기 프로파일링 데이터 스토어(110)는 상기 실행 환경(104) 내에서 액세스 가능한 별도의 데이터 저장 시스템 내에 또는 상기 데이터 소스(102)의 저장 디바이스 내에서 유지될 수 있다. 상기 프로파일링 요약 정보에 기초하여, 상기 처리 모듈(108)은 데이터 정리(cleansing), 데이터를 또 다른 시스템으로 로딩(loading), 또는 상기 데이터 소스(102)에 저장된 객체(objects)에 대한 액세스 관리(managing)를 포함하며, 상기 데이터 소스(102) 내의 데이터에 대한 다양한 처리 작업들을 수행할 수 있다. 상기 데이터 소스(102)를 제공하는 저장 디바이스는, 예를 들어, 실행 환경(104)을 실행하는 컴퓨터에 연결된 저장 매체(예컨대, 하드 드라이브(112)) 상에 저장되는, 실행 환경(104)에 대하여 로컬(local)이거나, 예를 들어, 원격 연결 또는 서비스 (예컨대, 클라우드 컴퓨팅 인프라스트럭처(cloud computing infrastructure)에 의해 제공됨)를 통해 실행 환경(104)을 실행하는 컴퓨터와 통신하는 원격 시스템(예컨대, 메인프레임 (114))에 호스팅되는, 실행 환경(104)에 대하여 원격일 수 있다.
프로파일링 모듈(106)은 데이터 소스(102)에 저장된 데이터를 판독할 수 있고, 예를 들어, 함수 종속성(functional dependency) 또는 분할(segmentation)에 기초한 데이터 품질 측정들을 계산하기 위한 유용한 분석을 포함하는, 효율적인 방식으로 다양한 종류의 분석을 수행할 수 있다. 일부 실시예에서, 상기 분석은 데이터 소스(102)에 저장된 데이터세트(dataset)의 레코드들의 각 개별 필드에 대해 센서스 데이터(census data)를 생성하고, 프로파일링 데이터 스토어(110)에 상기 센서스 데이터를 저장하는 것을 포함한다. 상기 설명한 바와 같이, 도메인에 나타나는 각 별개 값(distinct value)에 대한 엔트리(entry)를 포함하는, 특정 데이터세트 내의 레코드들의 특정 도메인에 대한 센서스 데이터는 별개 값(distinct value)이 나타나는 특정 데이터세트 내의 레코드들의 각각의 위치들을 식별하는 (예컨대, 레코드 인덱스 값들로) 위치 정보를 또한 포함할 수 있다. 일 실시예에서, 연관된 값들에 대한 센서스 엔트리의 생성 동안에, 벡터는 연관된 값들을 가지는 모든 레코드의 고유 레코드 식별자들(unique record identifiers)로 채워진다. 만일 데이터세트의 원본 데이터(original data) 내의 레코드들이 고유 레코드 식별자들을 갖지 않는다면, 이러한 레코드 식별자들은 예를 들어, 각각의 레코드에 연속된 숫자의 시퀀스를 할당하여, 프로파일링 절차들(profiling procedures)의 일부로 생성되고, 상기 레코드들에 추가될 수 있다. 이 위치 정보는 이후 센서스 엔트리들 내에 포함될 수 있고, 이하에서 더 상세히 설명된 바와 같이, 함수 종속성(functional dependency) 또는 분할(segmentation)에 대한 계산들을 위하여 추가적으로 결합된 센서스 데이터의 생성에 이용될 수 있다.
위치 정보를 저장하기 위한 다른 실시예가 가능하고, 그 중 일부는 감소된 저장 공간 및/또는 성능에 관한 장점들을 제공할 수 있다. 예를 들어, 비트 벡터는 레코드 식별자들의 벡터 대신 이용될 수 있다. 상기 비트 벡터의 각 비트는 특정 레코드 식별자에 대응하고, 만일 대응하는 레코드 식별자를 가진 연관된 레코드가 연관된 값을 갖는다면, 비트가 설정된다. 비트 벡터의 비트들과 레코드 식별자 간의 대응성(correspondence)은 명시적이거나 암시적일 수 있다. 예를 들어, 대응하는 레코드 식별자들로 비트를 연관시키는, 일대일 대응일 필요는 없는, 명시적인 매핑이 있을 수 있거나, 각 비트의 위치가 레코드 위치들의 순차적인 순서(sequential ordering)에 대응하는 암시적인 매핑이 있을 수 있다. 일부 실시예에서, 상기 결과로 나온 비트 벡터는 스토리지(storage)에서의 추가 저장(savings)을 위해 압축된다.
위치 정보는 또한 비트 벡터들의 벡터에 저장될 수 있다. 예를 들어, 비트 벡터 내의 각 비트는, 아마도(possibly) 상호 참조된 파일(cross-referenced file)에 저장된 레코드 식별자와 비트 위치 간의 매핑을 통해 , 연관된 레코드 식별자에 대응한다. 비트 벡터들의 벡터 내의 비트 벡터 엔트리의 벡터-인 덱스는 값이 발생하는 (예컨대, 다수 데이터 파티션들에 병렬인 상기 센서스 데이터를 처리할 때) 데이터 파티션 또는 필드 내의 단어 수와 같은 부가 정보를 암시적으로 인코드(encode)하기 위해 이용될 수 있다. 명시적인 부가 정보는 비트 벡터들의 벡터 내의 빅트 벡터 엔트리에 연관되거나 비트 벡터와 연관된 추가 필드에서지정될 수 있다. 이 부가 정보는 나중에 사용되기 위하여 상기 값을 포함하는 레코드들의 세트들을 구별하기 위해 이용될 수 있다.
도 2A는 데이터 프로파일링 절차 동안에 수행되는 동작들(operations)과, 프로파일링 모듈(106)에 의해 데이터 소스(102)로부터의 적어도 하나의 데이터세트들에 수행되는 것과 같이, 상기 절차 동안에 생성되고 수신되는 데이터의 일 실시예를 도시한다. 도 2A와 2B를 참조하면, 상기 프로파일링 모듈(106)은 프로파일될 각각의 데이터세트들(201)이 생성될 위치 정보에 의해 참조될 수 있는 각 레코드에 대해 잘-정의된 위치(well-defined location)를 제공하는, 각 데이터세트 내의 레코드들 각각에 대한 인덱스 값을 가진다는 것을 보증하기 위한 인덱싱 연산(indexing operation)(200)을 수행한다. 예를 들어, 특정 데이터세트에 대한 인덱스 값들은 기본 키 값(primary key value), 스토리지 어드레스, 범위가 정해진 파일(delimited file) 내의 위치, 자신의 테이블 행 번호, 또는, 레코드의 임의의 다른 고유한 속성(unique attribute)에 기초한 각 레코드에 할당된 증가 정수(incrementing integer)(예컨대, 1부터 시작하고 1씩 증가하는)일 수 있다. 할당된 인덱스 값은, 예를 들어, 프로파일링 데이터 스토어(110)에 또는 데이터 소스(102)에 새로운 데이터세트로 저장되거나, 데이터 소스(102)의 원본 데이터세트들 내의 각 레코드에 대한 필드로 값을 추가하여(by adding), 인덱스된 데이터세트들(203)을 제공하도록 각각의 레코드에 명시적으로 추가될 수 있다. 원본 데이터세트가 인덱스로 이용될 수 있는 필드를 이미 포함하는 경우에, 인덱싱 연산(200)은 생략되거나 단지 인덱스로 해당 필드를 이용할 수 있는 능력을 검증하도록 수행될 수 있다. 인덱싱 연산(200)은 이하에서 더 상세히 설명된 바와 같이, 하나의 데이터세트에 대한 인덱스들과 다른 데이터세트의 인덱스들 간의 대응성(correspondence)을 제공하는 인덱스 맵(index map)을 생성하는 단계를 포함할 수 있다.
프로파일링 모델(106)은 도메인들의 선택된 세트 각각에 대하여 위치 정보를 가진 센서스를 계산하는 센서스 연산(205)을 수행한다. 이 예에서, 각 도메인은 단일 필드이다. 따라서, 이 예에서, 상기 센서스 연산(205)의 결과들은 특정 데이터세트의 특정 필드에 대해 각각, 센서스 데이터(207)의 다수 세트들이다. 각 데이터세트는 프로파일링을 위해 지정된 필드들의 세트를 갖거나 디폴트로(by default) 각 데이터세트의 모든 필드들이 프로파일될 수 있다. 다른 실시예에서, 도메인은 필드의 조각(fragment)이거나 복수의 필드들의 결합 또는 필드들의 조각들(fragments)일 수 있다. 특정 도메인에 대한 센서스 데이터의 각 세트는 (또한 "센서스"로 불리는) 도메인 내에서 발생하는 별개 값들(distinct values), 특정 값이 발생된 레코드들의 개수의 카운트(count), 특정 값이 발생된 레코드를 식별하는 연관된 위치 정보를 포함하는 엔트리들의 리스트를 포함한다. 일부 실시예에서, 상기 카운트(count)는 필요한 때 위치 정보로부터 유도될 수 있기 때문에 명시적으로 센서스에 포함되지 않는다 (예컨대, 상기 값이 발생된 상기 레코드들의 위치를 정하는 비트 벡터 내의 비트들의 합(sum)은 상기 값이 발생된 레코드들의 개수를 산출할 수 있다). 일부 실시예에서, 프로파일링 모듈(106)은 도메인 내의 값들의 위치를 특징짓거나 자격을 주는 정보와 같은, 위치 정보를 증가시키기 위한 추가 정보를 축적한다.
프로파일링 모듈(106)은 바라는 멀티 도메인 데이터 프로파일링 결과를 지정하는 입력(예컨대 사용자 입력)을 수신하고, 센서스 데이터(207)의 세트들이 생성된 이후에 잠재적으로 긴 시간을 수신할 수 있다. 입력은 또한 계산에 포함될 멀티 도메인들을 (명시적으로 또는 암시적으로) 지정할 수 있다. 멀티 도메인 데이터 프로파일링 결과를 계신하기 위하여, 프로파일링 모듈(106)은 지정된(specified) 도메인들의 각각의 필드들에 대하여 센서스들의 컬렉션(collection)(209)을 선택한다. 멀티 도메인 데이터 프로파일링 결과의 하나의 유형은 동일한 레코드(예컨대, 동일한 인덱스에서)의 각각의 필드에서 발생하는 값들의 고유 튜플들(unique tuples)을 지정하는 "결합된 센서스(combined census)"이다. 멀티 도메인 데이터 프로파일링 결과들의 다른 유형들은 함수 종속성(functional dependency) 결과 또는 분할(segmentation) 결과를 포함하고, 그것들 각각은 아래에서 상세히 설명되는 바와 같이, 결합된 센서스의 계산과 함께 시작한다.
선택적으로, 프로파일링 모듈(106)은, 센서스들과, 각 센서스 내의 센서스 엔트리들이, 현재 멀티 도메인 데이터 프로파일링 결과또는 장래의 멀티 도메인 프로파일링 결과들의 계산을, 더욱 효과적으로 하기 위해 컬렉션(209)을 분류할 수 있다. 이 예에서, 각 센서스는 엔트리들이 발생들의 카운트(count of occurrences)에 의한 내림차순으로 발생할 수 있도록 분류되어서(201), 가장 공통(common) 값이 처음에 나타난다. 또한, 일부 실시예들에서, 발생들의 동일한 카운트(count)를 가진 다른 값보다 상기 데이터세트에 더 일찍 처음에 나타나는 값이 상기 분류된 센서스에 더 일찍 나타나도록, 상기 엔트리들은 위치 정보에 의해 서브-분류될 수 있다. 이것은 두 개의 서로 다른 값에 대하여, 하나의 값의 최초 출현(appearance)(예컨대, 최소 레코드 인덱스)이 다른 값의 최초 출현(appearance)과 달라야 하기 때문에, 센서스 값들에 대해 잘 정의된 순서(well-defined ordering)를 제공한다. 센서스들의 컬렉션(209)은 각 센서스 내의 별개 값들(distinct values)의 개수에 의해 역시 분류되고(220), 가장 공통(common) 값들의 카운트들(counts)에 의해 내림차순으로 서브-분류된다. 이러한 분류는 (별개 값들(distinct values)의 개수에서) 더 짧은 센서스들이 더 일찍 발생하는 분류된 센서스들의 분류된 컬렉션(220)을 야기하고, 별개 값(distinct value)들의 동일한 개수를 가진 두 개의 센서스들에 대하여, 가장 공통(common) 값이 더 큰 카운트들(counts)을 가지는 것이 더 일찍 발생한다. 함수 종속성(functional dependency)에 대응하는 이러한 멀티 도메인 데이터 프로파일링 결과에 대하여, 상대적으로 낮은 별개 값(distinct value)들의 개수를 가진 필드들 간에 함수 종속성(functional dependence)이 있을 가능성이 더 높다. 별개 값(distinct value)들의 개수가 증가함에 따라, 상기 필드는 가짜로(spuriously) 다른 값들과 상관되는(correlated) 경향이 있는, 낮은 중복 값들(duplicate values)의 개수를 가진 속성(attribute), 기본 키(primary key)와 같은 고유한 속성(unique attribute)을 나타낼 가능성이 더 높다. 더 긴 센서스들 이전에 더 짧은 센서스들을 순서화(ordering)하여, 함수 종속성 분석과 연관될 가능성이 더 많은 필드들이 더 빨리 처리될 것이다. 일부 경우에서, 상기 결과가 분류된 컬렉션(225) 내의 모든 센서스들의 모든 엔트리들을 처리하는 것을 지속하지 않고 계산될 수 있는 정지 상태(halting condition)를 인식하는 것을 심지어 가능하게 할 수도 있다. 함수 종속성(functional dependency) 이외의 멀티 도메인 데이터 프로파일링 결과들에 대하여, 케이스 분류(case sorting)가 필수적이 아닐 수 있는, 결과를 계산하도록 전체 분류된 컬렉션들(225)을 처리하는 것이 필수적일 수 있다. 이 예에서 상기 분류(210)는 분류(220) 전에 발생하나 다른 예들에서 분류(220)는 분류(210) 전에 발생할 수 있다.
프로파일링 모듈(106)은 분류된 컬렉션(225) 내의 센서스 엔트리들이 순차적으로 판독되고 결합된 센서스(combined census)(240)를 초래하는 다른 센서스 엔트리들로부터의 정보와 결합되는 결합된-센서스 생성 동작(combined-census generation operation)(230)을 수행한다. 상이한 센서스 엔트리들로부터의 정보를 효율적으로 결합하기 위해, 프로파일링 모듈(106)은 아래에서 좀 더 상세히 설명되는 바와 같이, 결합된 센서스(240)의 생성에 관련있는 인덱스된 데이터세트(106)에서의 레코드들의 위치를 정하기 위해 위치 정보를 이용한다. 결합된 센서스 생성 동작(230)의 멀티플 패스들(multiple passes)이 수행될 수 있다. 예를 들어, 만일 결합된 센서스(240)의 튜플이 둘 이상의 필드로부터의 값들을 포함한다면, 후에 그 튜플에 대해 결합된 센서스(240) 내의 센서스 엔트리를 구성할 때, 프로파일링 모듈(106)은 첫번째 패스 내의 필드들 중 2개에 대하여 페어와이즈(pairwise) 결합을 수행하고, 이후 패스들 에서 센서스 엔트리는 이전에 형성된 결합된 센서스(240)의 버전에서의 임의의 엔트리와 결합될 수 있다.
도 3을 참조하면, 상기 프로파일링 절차의 일 예가 도시된다. A-원본 데이터세트(300)는 A-인덱스된 데이터세트(310)를 제공하기 위해 (인덱싱 동작(200)으로) 인덱스될 수 있다. 상기 A-원본 데이터세트(300)는 3개로 도시된 열들(columns)에 대응하는, 3개 필드들을 가지며, 상기 3개의 필드들에 대해, 각각 "d", "q", "d8" 값들을 가진 데이터세트 내의 첫번째 레코드를 가지는, 6개의 도시된 행들(rows)에 대응하는, 6개의 레코드들을 가진다. ("1"부터 시작하는) 증가하는 정수 값들을 가지는 대체 키 필드(surrogate key field)는 A-인덱스된 데이터세트(310) 내의 각 레코드를 고유하게 식별하기 위한 위치 인덱스로 레코드들의 시작에 추가된다. 이 예에서, 상기 프로파일링 모듈(106)은 A-원본 데이터세트(300)의 처음 두 개의 필드들에 대해 센서스들의 분류된 A-센서스 컬렉션(320)을 계산한다. 제1 필드(예컨대, 상기 제1 열)은 "g"로 명명되고, 제2 필드(예컨대, 제2 열)는 "f"로 명명되고, 제3 필드는 이 예에서 프로파일되지 않기 때문에 제3 필드의 명칭은 이 예와 무관하다. 따라서 A-센서스 컬렉션 내에, g-필드("g-센서스"로 불림)에 대한 하나와 f-필드("f-센서스"로 불림)에 대한 하나인, 두 개의 센서스가 있다. A-센서스 컬렉션(320) 내의 각 센서스는 값, 상기 값의 발생들의 개수의 카운트(count), 및 상기 값에 대한 위치 정보를 나타내는 레코드 인덱스들의 벡터를 포함하는 각 엔트리를 가지는, 엔트리들의 분류된 리스트를 포함한다. 따라서, f- 센서스에 대해 공백으로 구분된(space-delimited) 문자열 "q 3 A[1,4,5]"로 도시된 이 예에서 첫번째 센서스 엔트리는 상기 벡터 "A[1,4,5]"에 의해 지시된 바와 같이 A-인덱스된 데이터세트(310)의 레코드들 1, 4, 및 5에 나타나고 값 "q"는 A- 원본 데이터세트(300)에 3번 발생된다는 것을 지시한다. 각 필드에 대한 센서스는 값들의 카운트(count)에 의해 내림차순(descending order)으로 분류되고 위치 정보 벡터 내의 첫번째 인덱스에 의해 오름 차순(ascending order)으로 서브-분류된다(sub-sorted). A- 센서스 컬렉션(320) 내의 센서스들의 세트는 이 예에서 g-필드에 대한 센서스 전에 f-필드에 대한 센서스를 배치하는, 처음에 가장 짧은 센서스들을 두는(putting), 각 센서스 내의 별개 값(distinct value)들의 개수로 역시 분류된다.
프로파일링 모듈(106)은 결합된 센서스(330)를 계산하기 위해 결합된-센서스 생성 동작(230)을 수행한다. 이 예에서, 결합된 센서스내의 튜플은 한 쌍의 값이다. 공백으로-구분된 문자열(space-delimited string) "g f d q 2 3 2 A[1,4]" 로 도시된 이 예에서 상기 결합된 센서스 내의 첫번째 엔트리는 상기 쌍의 첫번째 필드는 "g"이고, 상기 쌍의 두번째 필드는 "f"이며, 첫번째 필드 값은 "d"이고, 첫번째 필드의 값은 "d"이고, 두번째 필드의 값은 "q"이고, 첫번째 값이 2번 발생하고, 두번째 값은 3번 발생하고, 첫번째 필드의 첫번째 값 (예컨대, "d"의 g-값)과 두번째 필드의 두번째 값(예컨대, "q"의 f-값) 양쪽 모두를 포함하는 레코드들의 개수는 2이고, A-인덱스된 데이터세트(310) 내의 이들 레코드는 벡터 "A[1,4]"에 의해 지시된 바와 같이 1과 4라는 것을 지시한다. 결합된 센서스(330)는 이하에서 더욱 상세히 설명된 바와 같이, 이후에 다양한 데이터 프로파일링 분석 결과들을 계산하기 위해 이용될 수 있다.
일부 실시예에서, 결합된 센서스에 기초된 결과는 위에서 설명된 예에 대해 함수 종속성 결과(340)와 같이, 사용자 인터페이스에서 그래프로(graphically) 디스플레이될 수 있다. 각 원은 필드 "g" 및 "f'에 대한 라벨들(labels) 하에서 별개 값(distinct value)을 포함하고, 상기 값의 카운트(count)는 (g- 필드에 대하여 왼쪽 및 f-필드에 대하여 오른쪽에 ) 원과 함께 도시된다. 원들 사이의 각 방향성 에지(directed edge)는 각 끝에서 값들의 페어링(pairing)을 지시하고, 에지 위의 카운트(count)는 상기 쌍을 공유하는 레코드들의 개수이다. 다양한 카운트(count)들로부터, 필드들의 쌍 및 개별적인 값들의 상기 상관관계(correlation)의 평가(assessment)가 결정되고 프로파일링 모듈(106)에 의해 디스플레이될 수 있다. 이 예에서, 프로파일링 모듈(106)은 "g가 f를 결정한다"는 평가를 디스플레이할 수 있다.
일부 실시예에서, 상기 결합된 센서스 생성 동작(230)은 필드에 대해 개별적인 센서스들에 나타나는 별개 값(distinct value)들의 카티전 곱(Cartesian product)을 형성할 필요 없이 함께(예컨대 동일한 레코드 내의) 두 개의 필드에 나타나는 값들의 별개 쌍들의 결합된 센서스를 생성할 수 있다. 이러한 카티전 곱(Cartesian product)은, 예를 들어, 이러한 카티전 곱으로부터 형성된 값들의 모든 쌍에 대한 위치 정보를 획득하고 두 값 모두를 공유하는 레코드의 위치를 결정하도록(to locate) 연관된 위치 정보의 교차(intersection)를 계산하여, 이러한 결합된 센서스를 계산하기 위해 이용될 수 있다. 완전한(full) 카티전 곱을 이용하는 이 프로세스는, 그러나, 많은 쌍들이 그들의 위치 정보에서 중첩을 가질 수 없기 때문에 비효율적일 수 있다. 도 4의 흐름도와 도 5의 개략도는 그들의 위치 정보에서 중첩을 공유하는 이러한 쌍들을 효과적으로 식별하고 결합할 수 있는, 상기 결합된 센서스 생성 동작(230)에 이용되고, 그렇지 않은 쌍들은 피할 수 있는 절차를 도시한다. 이 예에서, 위치 정보는 레코드 인덱스들의 벡터로 설명되고 도시될 것이나 벡터에 대한 계산들은 위치 정보의 다른 표현들을 이용하여 수행될 수 있다. 예를 들어, f-값 위치 정보 "f-A[]" 와 g-값 위치 정보 "g-A[]"에 대해, f-A[]와 g-A[]의 교차는, 각 비트 벡터들에 논리 AND 연산(logical AND operation)을 수행함으로써, 비트 벡터들로 표현되는 양(both) 벡터들로, 수행될 수 있다.
도 4의 흐름도의 단계들은, 위에서 개략적으로 설명한 바와 같이, A- 센서스 컬렉션(320)이 첫번째 센서스 (이 실시예에서 f-센서스)의 분류된 엔트리들을 통해 반복하여 필드들 f 및 g에 대해, 준비된 이후에 시작한다. 프로파일링 모듈(106)은 f-센서스의 다음 센서스 엔트리(예컨대, 처음 반복에 대한 첫번째 센서스)를 판독한다(400). 현재 엔트리의 f-값에 대한 연관된 위치 정보로부터, 그 값이 나타나는 첫번째 레코드는 그 레코드의 g-필드에 존재하는 페어링된(paired) g-값을 찾기 위해 A-인덱스된 데이터세트(310)에서 룩업 된다(410). 프로파일링 모듈(106)은 상기 g-값과 연관된 g-센서스로부터의 위치 정보를 검색한다(420). 결과물인 g-값 위치 정보 (g-A[])는 현재의 f-값 그러나 상이한 g-값을 가진 레코드들의 남은 세트 (f-A[] = f-A[] AND (NOT g-A[]))에 대한 위치 정보를 업데이트 하는 정보를 저장하기 위하여(440) 그리고 상기 쌍 (f-A[] AND g-A[])을 공유하는 모든 레코드들을 식별하는 정보를 저장하기 위해(430) f-값 위치 정보 (f-A[])와 결합된다. 페어링된 값들(paired values)은 결합된 센서스(330)에 기록된다(450). 남은 세트에 대한 위치 정보는 위치 정보가 비어있는지를 결정하도록 체크된다(460). 만약 위치 정보가 비어있지 않다면, 남은 세트 내의 제1 레코드는 A-인덱스된 데이터세트(310)로부터의 현재 f-값과 페어링되는(paired) 다른 g-값을 찾기 위해 룩업(look up)된다. 만일 남은 세트에 대한 위치 정보가 비었다면, 이후 f-센서스로부터의 다음 센서스 엔트리는 또다른 반복을 수행하기 위하여 판독된다(400). f-센서스 내의 엔트리들 모두가 절차의 완전 반복으로 판독되고 처리된 이후에, 상기 결합된 센서스(330)는 완료될 것이다.
도 5는 부분적으로 완료된 결합된 센서스(330')가 있는 지점까지, 프로파일링 모듈(106)에 의해 수행된 동작들의 시퀀스(sequence)를 나타내는 화살표와 함께 도 4의 절차의 일 예를 도시한다. A- 센서스 컬렉션(320) 내의 f-센서스의 센서스 엔트리들은 이전 분류에 기초하여 가장 공통 f-값인, f-값 "q" 를 가지는 첫번째 엔트리로 시작하여, 차례로 고려된다, 이다. 위치 정보 벡터 내의 첫번째 성분(element) "1"은 A-인덱스된 데이터세트(310) 내의 대응하는 레코드에서 g-필드의 값을 룩업(look up)하기 위해 이용된다(522). 이 예에서, 대응하는 레코드 (예컨대, 인덱스 위치 1에서의 레코드)에서, g-필드는 값 "d"를 갖는다. 값 "d"에 대한 g-센서스 엔트리가 위치 정보 벡터로 지시된 바와 같이 값 "d"를 공유하는 레코드들의 완전한 세트를 검색하기 위해 룩업된다 (524). f-값 "q"에 대한 위치 정보 벡터는 레코드들 중 두 개의 세트들에 대해 위치 정보를 형성하기 위한 g-값 "d"에 대한 위치 정보와 비교된다(526): "q" 와 "d" (g AND f) 값들의 쌍을 가지는 레코드들의 세트(527) 및 "q" 그러나 "d"가 아닌 (f AND NOT g) 값을 가지는 레코드들의 세트(528). 공유된 값들에 대한 위치 정보는 결합된 센서스(330')의 적절한 엔트리에 벡터로 저장된다(529). 이 예에서 결합된 센서스의 엔트리는 값들 및 이러한 레코드들의 개수 양쪽 모두를 포함하는 모든 레코드들에 대한 위치 정보, 그들의 센서스 카운트들(counts), 상기 값들, 각 값에 대한 소스로 구성된다. 엔트리 "g f d q 2 3 2 A[ 1,4 ]"는 g-값 "d"가 2번 발생하고, f-값 "q"가 3번 발생하고, 위치 인덱스 1 및 4에 대응하는, 양쪽 값을 공유하는 2개의 레코드가 있다는 것을 지시한다.
프로파일링 모듈(106)은 값 "q"를 갖는 레코드들의 나머지 세트(528)를 처리한다. 위치 정보 벡터의 첫번째 (그리고 단 하나의) 요소(element) "5"는 g-필드에 대한 값 "b"를 산출하는, A-인덱스된 데이터세트(310)의 대응하는 레코드 내의 g-필드의 값을 룩업(look up)하기 위해 이용된다 (540). 값 "b" 에 대한 g-센서스 엔트리는 상기 세트(528)와 비교되는, 위치 정보 A[5]를 검색하기 위해 룩업된다(looked up) (544). 이들 세트들의 교차는 계산되고(546) 결합된 센서스(330')의 적절한 엔트리에 분류된다. 세트들 간 차이(difference)는 이 경우 비어있으나 만일 그것이 아니라면, 절차는 f-필드의 이 특정 값 "q"와 페어링되는 g-필드의 추가 값들을 찾기 위하여 반복한다. f-값 "q" 을 갖는 레코드들의 세트가 소진될 때, 절차는 f-센서스의 다음 엔트리로 이동하고, 프로세스는 반복한다.
도 6A와 6B를 참조하면, 프로파일링 모듈(106)은 필드들의 쌍 내의 값들 사이의 상관관계(correlation) ("함수 종속성")를 결정하기 위한 절차를 수행하고, 함수 종속성 결과를 정량화(quantify)하는 상관관계 비율들(correlation fractions)을 포함하기 위해 결합된 센서스를 증가시킬(augment) 수 있다. 퍼텐셜(potential) 함수 종속성에 대하여 분석될 필드들의 쌍(pair)에 대한 결합된 센서스는, 위에서 설명된 바와 같이, 필드들에 대한 개별적인 센서스들에 기초되어 계산된다(600). 결합된 센서스의 엔트리에 포함된 값들의 각 쌍 내의 각 값에 대하여, "상관관계 비율(correlation fraction)"이 계산되고(610), 그것은 그 값들의 쌍 ("쌍 총합(count)")을 가지는 레코드들의 개수와 그 값("값 카운트(count)")을 가지는 레코드들의 개수에 대한 비율(ratio)을 나타낸다. 프로파일링 모듈(106)은 증가된 결합된 센서스(615)를 생성하도록 엔트리들 내의 상관관계 비율들(correlation fractions)(이 예에서 "1" 및 "2/3")을 저장한다. 예를 들어, 결합된 센서스 엔트리 "g f d q 2 3 2 A[1,4]"는 그들의 인덱스들 1 및 4에 의해 A-인덱스된 데이터세트(310)로 위치가 정해진 "d q" 값들의 쌍을 가진 2개의 레코드들, 및 필드 "f"의 값 "q"를 가진 3개의 레코드들, 필드 "g"의 값 "d"를 가진 2개 레코드이 있다는 것을 지시한다. ("d"와 페어링된) f-값 "q" 에 대한 상관관계 비율이 2/3인 반면에 ("q"와 페어링된) g-값 "d"에 대한 상관관계 비율은 2/2 = 1이다.
각각의 값에 대한 상관관계 비율들(correlation fractions)은 값들이 그 임계값에서 상관되는(correlated) 것을 결정하기 위해(620) 임계값과 비교된다. 예를 들어. 만일 상관관계 비율이 0.95의 임계값을 초과한다면, 100개의 인스턴스들(instances) 중 5개 이하는 현재의 것에 비해 상이한 페어링된 값(different paired value)을 가질 것이다. 여기서 "d"는 0.95 임계값에서 "q"와 상관되나나 반대는 아니다: 만일 g-값이 "d"라면, 이후 대응하는 f-값은 "q"가 될 것이 확실하나, 만일 f-값이 "q"라면, 대응하는 g-값이 "d"일 가능성(chance)은 단지 2/3이다.
주어진 임계값에서 상관된 (필드들 중 하나의) 값들과 연관된 레코드들의 총 개수가 카운트될 수 있고(630) 주어진 임계값에서 상관된 전체의 데이터세트의 레코드들의 비율를 결정하기 위해(640) 레코드들의 총 개수로 나뉜다. 만일 이 비율이 두번째 필드-상관관계 임계값를 초과한다면, 전체 필드는 다른 필드에 상관될 것이라고 알려져 있다. 일부 실시예에서, 필드 상관관계의 결정에 기여하는 레코드 카운트들(record counts)은 값의 인스턴스의 개수가 임계값 이하일 때 레코드들의 카운트(count)를 제외할 수 있거나, 잠재적으로 가짜인(potentially spurious) 이러한 값들에 기초한 상관관계를 보고(report)할 수 있다. 이것은 만일 인스턴스의 개수가 너무 작다면, 예를 들어 그것의 상대(partner) 값에 사소하게 상관된 값의 오직 하나의 인스턴스만이 있을 때, 상관관계는 우연(accidental)이거나 사소한(trivial) 것일 수 있기 때문이다.
필드-상관관계 계산은 다른 방향에서 상관된 레코드들의 비율을 결정하기 위해 다른 필드에 반복된다. 이 예에서, g-값들 모두는 개별적으로 f-값에 상관되고, 따라서 상관된 레코드들의 총 개수는 6이고, 레코드들의 총 개수는 6이며, 레코드들의 상관된 비율은 6/6 = 1이다. 상기 결과는 "g"는 "f"를 결정한다는 것이다: g- 값을 아는 것(knowledge)은 (이 필드 상관관계 임계값에서) 대응하는 f-값을 아는 것(knowledge)을 보장한다. 반대로, 어떠한 f-값들도 상관관계 임계값을 초과하지 않으면, 그 결과 f-필드는 g-필드에 상관되지 않는다.
도 7을 참조하면, 함수 종속성 결과(340)에서 A-쿼리 결과(710)까지의 에지 드릴 다운(edge drill-down)(700)이 이들 레코드에 나타나는 한 쌍의 값들을 나타내는 디스플레이된 결과(340) 내의 에지로 표현되는 레코드들에 연관된 좀 더 상세한 정보를 보여주기 위해 (예컨대, 그래픽 사용자 인터페이스에서 디스플레이된 결과(340)와 사용자 상호작용에 응답으로) 수행된다. 에지로 나타낸 값들의 쌍 "d q"는 그 쌍에 대한 위치 정보를 취득하기 위해 (발생 빈도에 의해 분류되고 위치 정보의 첫번째 인덱스에 의해 서브 분류된 결합된 센서스(330)과 동일한) 결합된 센서스 330"에서 룩업된다(725). 위치 정보는 이후 A-인덱스된 데이터세트(310)로부터 연관된 레코드들을 검색하기 위하여 이용된다. 이들 레코드들은 A-쿼리 결과(710)에 디스플레이된다(745).
이전 예에서, 동일한 데이터세트 내의 2개의 필드들(g 및 f)의 상관관계(correlation)가 계산되었다. 키 필드(key field)에 의해 링크된 상이한 데이터세트들의 2개의 필드들의 상관관계의 계산이 도 8A 와 8B에 도시된다. A- 원본 데이터세트(800)와 B- 원본 데이터세트(820) 각각은 3개의 필드를 가지며, 그것들 각각은 공통 키 필드(common key field)인 하나의 필드를 가진다. 공통 키 필드의 키 값들이 반드시 고유할 필요는 없다. 그러나, 상기 키 필드의 키 값들은 각 키 필드에서 동일한 키 값을 가지는 두 개의 데이터세트들 내의 대응하는 레코드들을 연관시키기 위해 제공된다. (A-레코드_id로 불리는) A-원본 데이터세트(800) 내의 각 레코드들에 대한 고유 식별자는 A-인덱스된 데이터세트(810)를 생성하기 위해 각 레코드에 대해 필드로 추가된다. 유사하게, (B-레코드_id로 불리는) B-원본 데이터세트(820) 내의 각 레코드에 대한 고유 식별자는 B-인덱스된 데이터세트(830)를 생성시키기 위한 필드로 추가된다. 인덱스 맵(840)은 동일한 레코드의 키 필드에서 키 필드 값과 각 A-레코드_id를 연관시키기 위해 이용될 수 있다. 따라서, 인덱스 맵(840)은 A-인덱스된 데이터 세트(810)의 첫 번째 두 열들의 사본(copy)이다. 인덱스 맵(840)은, 예를 들어, 프로파일링 데이터 스토어(110)내의 파일의 A-인덱스된 데이터세트(810)와 별도로 저장된다.
이 예에서, 키 필드는 (도 8A 에서 A-원본 데이터세트(800)의 첫번째 열에 도시된) A-원본 데이터세트(800)의 기본 키(primary key)와 (도 8A 에서 B-원본 데이터세트(820)의 두번째 열에 도시된) B-원본 데이터세트(820)의 외래 키(foreign key)이다. 상기 키 필드가 기본 키(primary key)이기 때문에 A-레코드_id 값들은 (그 키필드에 대한 B-레코드_id 값들 대신) 그 키 필드에 대한 매핑을 위하여 선택될 수 있다. 그러나, 데이터세트들은 각 데이터세트에 키 필드로 지정된 일부 필드가 있는 한, 이러한 기본-키/외래-키(primary-key/foreign-key) 관계를 반드시 가질 필요는 없다. 인덱스 맵(840)은 이 예와 같이, 양쪽의 데이터 세트들 모두가 두 개의 상이한 레코드들에서 반복되는 키 필드 값을 가지는, A-데이터세트에 기본 키(primary key) 값들을 복제할 수 있기 때문에 유용하다. 인덱스 맵(840)을 이용하여, 양쪽의 데이터세트들이 위치 정보를 지정하기 위한 레퍼런스의 공통 프레임을 갖도록 프로파일링 모듈(106)은 A-레코드_id 의 값들을 포함하는 새로운 필드를 가지는 B-인덱스된 데이터세트(830)의 새로운 버전을 생성한다. 그렇게 하려면, 프로파일링 모듈(106)은 대응하는 A-레코드_id 값들에 임의의 개수의 매치들(matches)을 찾기 위한 인덱스 맵(840)의 키 값들과 B-인덱스된 데이터세트(830)의 키 필드 값들을 비교한다. 이 예에서, ("k4"의 외래 키(foreign key) 값을 가진) B-인덱스된 데이터세트(830)에서의 하나의 레코드는 두 개의 상이한 A-레코드_id 값들로 매칭되고(845), 프로파일링 모듈(106)은 B/A-인덱스된 데이터세트(850)를 생성하기 위해 B-인덱스된 데이터세트(830)의 레코드들에 A-레코드_id를 부착(attach)할 때 두 개의 대응하는 레코드들을 추가한다(847) (인덱스로 추가된 "A4" 를 가진 하나, 및 인덱스로 추가된 "A6"를 가진 다른 하나). B-인덱스된 데이터세트(830)의 다른 레코드들은 인덱스 맵(840)의 단일 A-레코드_id 값과 매칭되어서, 그들은 인덱스로 추가된 대응하는 A-레코드_id 값을 가지는, B/A-인덱스된 데이터세트(850)에 추가된 단일한 각각의 레코드에 각각 대응한다.
이제 도 8B를 참조하면, A-센서스(860)는, (첫번째 필드의) A-레코드_id 값들에 대해 참조된 위치 정보를 가지는, A-인덱스된 데이터세트(810)의 세번째 필드에 대하여 계산되고, B-센서스(870)는, 인덱스 맵(840)을 이용하여 추가된 (첫번째 필드의) A-레코드_id 값들에 대해 역시 언급된 위치 정보를 가지는, B/A-인덱스된 데이터세트(850)의 다섯번째 필드에 대하여 계산된다. A 와 B 필드는 상관되지 않는다고 결론내리는 함수 종속성 결과(890)를 디스플레이하기 위해 계속하여(subsequently) 이용되는, ("A"로 라벨링된 A-센서스에서의 필드 및 "B"로 라벨링된 B-센서스에서의 필드를 가진) 센서스들로 표현되는 필드들의 쌍에 대하여 결합된 센서스(880)를 계산하기 위해 상기 설명된 바와 같이 두개의 센서스의 위치 정보가 결합된다(875).
도 9를 참조하면, 함수 종속성의 결과(890)로부터의 노드 드릴-다운(drill-down)(900)이 노드에 디스플레이된 값으로 표시되는 레코드들과 연관된 더 자세한 정보를 보여주기 위해 (예컨대, 그래픽 사용자 인터페이스에 디스플레이된 결과(890)를 가진 사용자 상호작용에 대한 응답으로) 수행된다. B 필드로부터의 "p" 값을 디스플레이하는 노드의 선택에 대한 응답으로, A-원본 데이터세트(800) 및 B-원본 데이터세트(820) 양쪽으로부터 그것에 대응하는 레코드들은 노드 쿼리(query) 결과(910)에 도시되고 검색된다. 드릴-다운은 엔트리를 (B 필드에 대하여 "p"를 포함하는) 각 매칭 엔트리를 찾기 위해 결합된 센서스(880) 내의 "p" 값을 최초로 룩킹 업(looking up)(915)하여 달성된다. 이들 엔트리들에 대한 위치 정보는 A[1,3,4,6]의 (A-레코드_id 값들에 대한) 위치 정보를 생산하기 위한 유니언(union)을 이용하여 결합된다. 이들 위치정보들 각각은 이후에 이들 위치들에서 임의의 레코드들을 검색하기 위한 A-인덱스된 데이터세트(810) 및 B/A-인덱스된 데이터세트(850) 양쪽에서 룩업된다(looked up)(925). A-인덱스된 데이터세트(810) 내의 검색된 레코드들은 "A"로 라벨링된 노드 쿼리 결과(910) 에 디스플레이된다(935). B-원본 데이터세트(820) 내의 검색된 레코드들 중 하나만이 디스플레이되도록 B-원본 데이터세트(820) 내의 검색된 레코드들은 임의의 동일한 B-레코드_id value 값을 공유하는 임의의 것과 중복이 제거된(de-duplicated) 임의의 것을 찾기 위해 비교된다. 이 예에서, A4 및 A6의 A-레코드_id 값들을 가진 레코드들은 B2의 동일한 B-레코드_id를 가진다. A-원본 데이터세트(800)에서의 레코드들의 복제 키(duplicate key) 필드 값은 단일의 B-원본 데이터세트(820) 레코드에 대응하는 다수 A-원본 데이터세트(800) 레코드들을 가짐으로써 의해 노드 쿼리 결과(910) 에 도시된다.
도 10에서, 분할(segmentation)을 가진 센서스의 계산 예가 도시된다. A-원본 데이터세트(1000)는 3개의 필드 f, g, 및 h 를 갖는다. (레코드_id로 불리는) A-원본 데이터세트(1000) 내의 각 레코드에 대한 고유 식별자(unique identifier)는 A-인덱스된 데이터세트(1010)를 생성하기 위해 각 레코드에 필드로 추가된다. 3개 필드들 각각에 대한 위치 정보를 가지는 분류된(sorted) 센서스들의 컬렉션(1020)이 계산된다. 일부 실시예에서, 시스템(100)은 지정된 (specified) 값들을 포함하기 위해 f-필드와 g-필드의 결합을 제한함으로써 주어진 세그먼트들(segments)(예컨대, 데이터 세트의 모든 레코드들보다 더 적은 수의 서브세트들(subsets)) 내의 h-필드의 데이터 프로파일 (예컨대, 값들의 분포)이 무엇인가?와 같은, 비즈니스 질문들(business questions)에 답하기 위해 사용자가 쿼리들(queries)을 형성하는 것을 가능하게 할 수 있다 예를 들어, f-필드는 각각, f-필드에 대하여 가능한 값들 "f" 또는 "m"을 가지는 레코드들로 성별(gender)를 나타낼 수 있다 ; 반면에 g-필드는 각각, g-필드에 대하여 가능한 값들 "p" 또는 "q"를 가지는 레코드들로 "외국의(foreign)" 또는 "국내의(domestic)"를 나타낼 수 있다. f-필드 및 g-필드에 세그먼트되는 데이터 프로파일 (예컨대, 센서스로 표현되는 것처럼)은 "외국 남성"에 대한 또는 "국내 여성"에 대한 h-필드의 가장 공통적인 값들이 무엇인가?와 같은 질문에 대한 답변을 용이하게 할 수 있다.
컬렉션(1020)은 A-원본 데이터세트(1000) 내의 모든 레코드들의 처리 요청 없이 세그먼트된 프로파일들을 계산하기 위해 이용될 수 있다. 세그먼트 센서스(1030)는 결합된 센서스를 계산하기 위하여 위에서 설명된 절차와 f-필드 및 g-필드 센서스들을 이용하여 결합된 센서스로 구성될 수 있다. 일부 실시예에서, 세그먼트 센서스(1030) 내의 각 엔트리는 해당 엔트리와 연관된 세그먼트의 편리한 식별을 위하여 고유 값 (세그먼트_id로 불리는)이 주어질 수 있다. 결합된 센서스를 계산하기 위한 절차가 세그먼트 센서스(1030)와 A-센서스 컬렉션(1020)에서의 h-필드 센서스의 결합인, 세그먼트된 결합된 센서스(1040)를 형성하기 위하여 다시 적용될 수 있다. 예를 들어, 세그먼트된 결합된 센서스(1040)의 h-s1 엔트리는 세그먼트 센서스(1030)의 s1 엔트리를 우선 취득하고 연관된 위치 정보 A[1,4]를 판독하여 계산될 수 있다. 위치 벡터의 제1 성분(element) "1"은 h-필드 값 "d" 및 대응하는 위치 정보 A[1,4]를 찾기 위해 A-센서스 컬렉션(1020) 의 h-필드에 대한 센서스에서 룩업된다(looked up). 세그먼트 센서스(1030)의 s1-라벨링된 엔트리의 위치 정보 A[1,4]는 h-센서스의 "d" 엔트리의 위치 정보 A[1,4]와 비교된다. 이러한 두 엔트리들 간의 위치 정보의 모든 요소들이 매치(match)하기 때문에, s1-세그먼트에 대한 상기 결과 결합된 센서스 엔트리 벡터는 "d 2 A[1,4]" 가 인 것이 발견되고, s1-세그먼트 내의 남은 위치 엔트리들이 없다. 이것은 s1-세그먼트는 오직 단일의 h-필드 값 "d" 만으로 구성된다는 것을 나타낸다. h-센서스 레코드들과 결합하는 다른 세그먼트 값들을 이용하여 결합된 센서스를 구성하는 것을 지속하는 것(Continuing)이 세그먼트된 결합된 센서스(1040)를 채운다.
도 11에, 세그먼트 큐브(segment cube)의 계산 예가 도시된다. 도 10의 예처럼 분할(segmentation)이 도 10의 실시예처럼 다수 필드들의 값들의 결합에 기초할 때, 세그먼트 큐브는 세그먼트된 센서스 결과들이 더 적은 필드들의 각 결합을 포함하는(involving) 세그먼트들에 대한 센서스 결과들로 재집계되는 것으로 구성될 수 있다. 도 10의 예에 대하여, 계산되는 세그먼트된 결합된 센서스(1040)는 "국내 여성" (예컨대, 세그먼트 s1)과 "외국 남성" (예컨대,세그먼트 s4)과 같은 세그먼트들을 나타낸다. 사용자는 세그먼트들 "외국" 또는 "남성" 에 대한 프로파일들(profiles)을 요청할 수 있다. 새로운 세그먼트들에 대하여 직접 도 10의 계산을 반복하는 것으로 복귀하는 대신에, 이전 분할(segmentation) 결과들이 아래와 같이 "세그먼트 큐브" 내의 이러한 다른 엔트리들을 연산하기 위한 h-센서스와 결합될 수 있다.
세그먼트 큐브(1020)를 형성하기 위하여, 먼저 원본 세그먼트 필드들의 모든 서브세트가 형성된다. 현재 예에서, 완전한 분할은 두 개의 분할 필드들 f와 g 에 기초한다. 두 개의 필드의 이 세트의 두 개의 서브 세트가 있다 : 세트는 오직 g만으로 이루어지는 세트와 오직 f만으로 이루어지는 세트. 이러한 세그먼트-큐브 필드 각각을 요청한다. 만일 원본 분할 필드들이 3개의 필드들 f, g 및 h로 구성된다면, 세그먼트-큐브 필드들은 세트 {f,g}, {f,h}, {g,h}, {f}, {g}, 및 {h}이다, 즉, 세그먼트-큐브 필드들은 분할 필드들의 모든 (비어있지 않은) 서브세트들의 세트의 멤버들(members)이다.
상기 세그먼트 큐브(1120) 내의 엔트리는 상기 세그먼트 큐브 필드들 각각에 연관된 각 별개 값(또는 값들의 결합)으로 구성된다. 일부 실시예에서, 세그먼트-큐브 필드들의 각 값에 대해, 그 값을 포함하는 세그먼트들의 컬렉션은 이러한 세그먼트들의 카운트(count)와 함께 상기 세그먼트 큐브(1120)를 분류하는 데이터 구조(data structure) 내의 세그먼트 위치 정보로 식별되고 유지된다. 대안은 (세그먼트 센서스 엔트리라 불리는) 세그먼트 센서스(1030)의 각 해당하는 엔트리에 대해 유니언(union)을 취하여 A-인덱스된 데이터세트(1010)에 추가된 레코드_id 에 대하여 위치 정보를 결합하는 것이다. 일반적으로 많은 레코드들보다 더 적은 수의 세그먼트들이 있기 때문에, A-위치 정보 (예컨대, 레코드_id 에 대한 위치 정보) 대신 세그먼트-위치 정보 (예컨대, 세그먼트_id에 대한 위치 정보)를 이용하는 것이 더욱 효율적 일 수 있다, 따라서 위치정보는 더욱 컴팩트하게(compact)될 것이다. 일부 실시예에서, 필드는 엔트리를 라벨링(label) 하기 위해 세그먼트 큐브(1120)의 각 엔트리에 추가된다.
상기 예에서, 세그먼트-큐브 필드 f는 세그먼트들 s1 및 s2 에서 값 "f"를 가진다, 따라서 상기 연관된 세그먼트 위치 정보는 S[s1,s2]이다. 이것은 세그먼트 큐브 엔트리 "c1 f f 2 S[s1,s2]"을 형성한다. 여기서, c1은 세그먼트 큐브 엔트리의 라벨(label)이고, "f" 가 세그먼트 큐브 필드의 값인 반면에, 첫번째 f는 세그먼트 큐브 필드이다. 이 값은 위치 정보 S[s1,2]에 의해 식별되는, 두 개의 세그먼트들에 나타난다. 또는, 세그먼트-큐브 필드 g는 세그먼트들 s1와 s4 에서 값 "q"를 가진다, 따라서 연관된 세그먼트 위치 정보는 S[s1,s4]이다. 세그먼트-큐브 엔트리는 "c4 g q 2 S[s1,s4]"이다.
상기 세그먼트된(segmented) 결합된 센서스(1040)는 다음 절차에 의해 세그먼트-큐브 A-센서스 컬렉션(1150)를 형성하도록 세그먼트 큐브(1120)와 결합된다. 세그먼트 큐브(1120)의 각 엔트리는 세그먼트들이 연관된 세그먼트-큐브 필드 값(들)을 포함하는 것을 식별하는 세그먼트-위치 정보를 포함한다. 상기 참조된 세그먼트들 각각에서 세그먼트- 센서스 엔트리들의 세트의 유니언(union)은 세그먼트-큐브 필드 값을 가진 센서스 엔트리들의 컬렉션을 제공한다. 예를 들어, c1 세그먼트 큐브 엔트리는 세그먼트 위치 정보 S[s1,s2]를 가진다. c1 세그먼트 결과는 세그먼트된(segmented) 결합된 센서스(1040) 내의 s1및 s2 결과들에서 센서스 엔트리들의 세트의 유니언(union)을 수행하여 형성된다. s2 세그먼트가 두 개의 엔트리들 "a 1 A[2]" 및 "e 1 A[6]"로 구성되는 반면에 s1 세그먼트는 단일의 엔트리 "d 2 A[1,4]"로 구성된다. 이들 엔트리들의 유니언(union)은 세 개의 엔트리들 모두의 세트이며, 세그먼트-큐브 A-센서스 컬렉션(1150)의 h-센서스의 c1-세그먼트를 형성한다. 세그먼트 큐브에서, c1-세그먼트는 필드 f 가 값 "f"를 가지는 이러한 레코드들로 구성되도록 보여진다. 따라서, h-센서스의 c1-세그먼트는 필드 f 가 값 "f"를 가진 상기 h-센서스 세그먼트이다. 이는 도 10의 A-센서스 컬렉션(1020)을 검사(inspecting)하여 확인될 수 있다. h-필드가 레코드들 A[1,4]에서 값 "d", 레코드 A[2]에서 "a" 및 레코드 A[6]에서 "e"를 가지는 반면에 f-필드는 레코드 A[1,2,4,6]에서 값 "f"를 가진다.
만일 값이 하나 이상의 세그먼트에 나타난다면, 결과에 대한 A-위치 정보는 각 세그먼트에서 A-위치 정보의 유니언(union)으로부터 형성된다. 이것은 도시된 세그먼트 큐브(1120)에서 발생하지 않는다, 그러나 만일 세그먼트-위치 정보 S[s2,s4]를 가진 세그먼트-큐브 엔트리가 있다면, 이후 "e" h-값이 세그먼트 s2 와 s4 모두에서 발생하므로, 상기 세그먼트-큐브 센서스 결과에서 "e" h-값 에 대한 A-위치 정보는 A[3,6]이 될 것이다, 즉, s2-세그먼트로부터의 A[6]과 s4-세그먼트로부터의 A[3]의 유니언(union)이다.
S[s2,s4]와 같은 세그먼트-큐브 엔트리는 필드들의 단순 결합들이라기 보다는 세그먼트들의 결합들을 취하여 형성되는 더욱 일반적인 세그먼트 큐브에서의 세그먼트-큐브 엔트리의 인스턴스(instance)이다. 일부 실시예에서, 이러한 세그먼트 결합이 허용된다. 이러한 엔트리에서, 허용된 세그먼트-필드 값들은 세그먼트들의 선택된 결합의 각 세그먼트와 연관된 값들에 대응한다. 이 실시예에서, S[s2,s4]의 세그먼트-큐브 엔트리는 f-g 필드들이 값 "f p" 또는 "m q" 중 어느 하나를 가진 세그먼트에 대응한다. 이는 복잡한 분할들이 필드들 및 필드-값들의 조건부 결합이 허용되는 곳에서 형성될 수 있게 한다.
멀티 필드 검증 규칙들(validation rules)이 원본 데이터세트들 내에서 모든 레코드들의 처리가 필요없는 위치정보를 가진 센서스에서 계산될 수 있다. 멀티 필드 검증 규칙(validation rule)은 유효한 것으로 간주될 레코드들에 대하여 동시에 만족되어야만 하는 적어도 두 개의 필드들의 값들에 조건들(conditions)을 적용한다. 상기 조건을 만족하지 않는 레코드들은 유효하지 않은 것으로 간주된다. 멀티 필드 검증 규칙(validation rule)의 예는 : 만일 f-값(성별)이 "f"라면, g-값 (외국/국내)은 반드시 "p"이다. 일부 실시예에서, 검증 규칙들(validation rules)은 네거티브(negative)로 표현될 수 있다, 즉 만일 만족된다면 무효인 것으로 레코드를 식별하는, 두 값들 또는 필드들을 결합하는 규칙이 주어진다. 본 예에서, 무효 레코드들을 식별하는 규칙은 다음과 같을 수 있다: 만일 f-값이 "f"이고, g-값이 "p"가 아니라면, 상기 레코드는 무효이다.
데이터 품질 보고(data quality report)는 적어도 하나의 검증 규칙들(validation rules)에 대한 유효 및 무효 레코드들(counts)의 카운트들(counts)을 포함할 수 있다. 만일 초기 센서스(initial census)가 획득되기 전에 검증 규칙들(validation rules)이 지정된다면(specified), 검증 규칙들은 센서스의 컬렉션 동안에 확인될 수 있고 획득된진 유효 및 무효 레코드들의 카운트들(counts)과 연관될 수 있다. 그러나, 종종 검증 규칙들(validation rules)은 센서스에 의해 드러난(uncovered) 값 결합들과 값들에 응답하여 초기 센서스(initial census) 이후에 제안된다. 이 경우에, 센서스를 다시취하고(retaking) 새로운 검증 규칙을 적용하는 것 대신에, 위치 정보를 가진 센서스가 센서스의 재계산(re-computing) 없이 유효 및 무효 레코드들을 식별하기 위해 이용될 수 있다. 멀티 필드 검증 규칙들(multi-field validation rules)이 필드 값들의 조건부 결합들(conditional combinations) 면에서 표현되기 때문에, 검증 규칙의 각 값에 대응하는 센서스 엔트리들은 일반적으로 위치 정보에 불 연산(Boolean operations)을 이용하여, 결합되고 그 규칙을 체크하기 위하여 이용될 수 있다. 무효로 간주되는 임의의 값 결합들은 무효로 표시되고 무효 레코드들의 컬렉션으로 카운트된다. 위치정보는 또한 검증 규칙(validation rule)) 하에서 유효 또는 무효 중 어느 하나인 특정 레코드들을 식별하기 위해 드릴 다운(drill down)에 이용될 수 있다.
검증 규칙(validation rule), '만일 f-값이 "f"라면, g 값은 반드시 "p"이다'를 고려해보자. A-센서스 컬렉션(1020)은 불(Boolean) 'f="f" 및 g="p"'을 계산하도록 이용될 수 있다. g="p"를 가진 이들 레코드들에 대한 위치 정보가 A[2,3,6]인 반면에 f="f"를 가진 레코드들에 대한 이 위치 정보는 A[1,2,4,6]이다. 유효 레코드들은 A[2,6]를 제공하기 위해 두 세트의 위치 정보의 교차(intersection)에 의해 형성된다. 무효 레코드들은 벡터 A[1,4]에 의해 위치가 정해진 무효 레코드들을 야기하는 불(Boolean) 'f="f" 및 g!="p"'에 의해 계산된 것들이다. 상기 결과로 초래된 위치정보는 이후에 유효 또는 무효 레코드들 중 하나를 검색하기 위하여 이용될 수 있다. 예를 들어, 레코드 2와 6은 f="f" 및 g="p"를 가진 두 개의 레코드들을 반환하기 위해 A-인덱스된 파일로부터 검색될 수 있다.
상술한 기법은 적절한 소프트웨어를 실행하는 컴퓨팅 시스템(computing system)을 이용하여 구현될 수 있다. 예를 들어, 상기 소프트웨어는 적어도 하나의 프로세서, (휘발성 및/또는 비활방성 메모리 및/또는 저장 소자들을 포함하는) 적어도 하나의 데이터 저장 시스템, (적어도 하나의 입력 디바이스 또는 포트를 이용하는 입력을 수신하고, 적어도 하나의 출력 디바이스 또는 포트를 이용하는 출력을 제공하기 위해) 적어도 하나의 유저 인터페이스를 각각 포함하는 (배포된, 클라이언트/서버, 또는 그리드와 같은 다양한 같은 다양한 구조들일 수 있는) 적어도 하나의 프로그래밍되거나 프로그램가능한 컴퓨팅 시스템을 실행하는 적어도 하나의 컴퓨터 프로그램들 내의 절차들을 포함할 수 있다. 상기 소프트웨어는 예를 들어, 데이터 플로우 그래프들(dataflow graphs)의 실행, 및 구성, 설계(design)에 관련된 서비스들를 제공하는 더 큰 프로그램의 적어도 하나의 모듈들을 포함할 수 있다. 프로그램의 모듈들 (예컨대, 데이터플로우 그래프의 성분들(elements))은 데이터 구조들 또는 데이터 리포지토리(data repository)에 저장된 데이터 모델에 따르는 다른 조직화된 데이터로 구현될 수 있다.
상기 소프트웨어는 CD-ROM 또는 다른 컴퓨터 판독가능한 매체 (예컨대, 범용 또는 특수 목적의 컴퓨팅 시스템 또는 장치에 의해 판독가능한)와 같은, 실체적인(tangible), 비일시적 매체에 제공되거나, 소프트웨어가 실행되는 컴퓨팅 시스템의 실체적인, 비일시적인 매체로 네트워크의 통신 매체를 거쳐 전달될 수 있다 (예컨대, 전파된 신호에 인코딩된다). 처리의 일부 또는 전부는 코프레서들(coprocessors) 또는 필드-프로그램가능한 게이트 어레이들(FPGAs) 또는 전용의, 응용 주문형 집적 회로(application-specific integrated circuits, ASICs)와 같은, 특수 목적의 하드웨어를 이용하여 수행되나, 특수 목적의 컴퓨터에서 수행될 수 있다. 상기 처리는 소프트웨어에 의해 지정된 컴퓨터의 상이한 부분들이 상이한 컴퓨팅 엘리먼트들(computing elements)에 의해 수행되는 배포된 방식으로 구현될 수 있다. 각각의 이러한 컴퓨터 프로그램은 바람직하게 저장 디바이시스 매체가 본 발명에서 설명된 처리를 수행하기 위해 컴퓨터에 의해 판독될때 상기 컴퓨터를 구성하고 동작하기 위하여, 범용 또는 특수 목적의 프로그램가능한 컴퓨터에 의해 액세스 가능한 저장 디바이스의 컴퓨터-판독가능한 저장 매체 (예컨대, 고체 상태 메모리(solid state memory) 또는 미디어, 또는 자기적 또는 광학적 미디어)에 저장되거나 다운로드될 수 있다. 본 발명의 시스템은 그렇게 구성되는 매체는 컴퓨터가 본 발명에서 설명된 적어도 하나의 처리 단계들을 수행하기 위하여 특정한 그리고 미리 정해진 방식으로 동작하도록하는, 컴퓨터 프로그램으로 구성된, 구체적이고(tangible), 비일시적인 매체로 구현되도록 역시 고려될 수 있다.
본 발명의 다수의 실시 예가 기술되었다. 그럼에도 불구하고, 전술한 설명은 예시를 위한 것이며 다음의 청구범위에의해 정의되는 본 발명의 범위를 한정하는 것이 아닌 것으로 이해되어야 한다. 따라서, 다른 실시예들 또한 다음 청구범위 내에 있다. 예를 들어, 다양한 변형이 본 발명의 범위를 벗어남 없이 만들어 질 수 있다. 부가적으로, 상기 기술된 스텝들의 일부는 순서 독립적이므로 기술된 것과 다른 순서로 수행될 수 있다.
Claims (23)
- 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법에 있어서, 상기 방법은,
상기 데이터 저장 시스템에 결합된 인터페이스를 통해 상기 데이터 저장 시스템에 저장된 레코드들의 적어도 하나의 컬렉션을 액세스하는 단계, 및
프로파일 정보에 기초하여 레코드들의 상기 컬렉션의 적어도 하나의 필드들의 제1 세트에 나타나는 값들을 특징짓는 결과 정보를 생성하기 위해 레코드들의 상기 컬렉션을 처리하는 단계를 포함하되, 레코드들의 상기 컬렉션의 적어도 하나의 필드들에서 값 또는 값들의 결합에 관한 프로파일 정보는 프로파일되는 레코드들의 상기 컬렉션의 적어도 하나의 필드들에 나타나는 상기 값 또는 값들의 상기 결합에서 레코드들의 상기 컬렉션의 모든 레코드의 고유 식별자를 식별하는 위치 정보를 포함하고, 상기 처리 단계는
레코드들의 상기 적어도 하나의 컬렉션의 위치 정보를 포함하는 레코드들의 상기 적어도 하나의 컬렉션의 제1 센서스를 계산하는 단계;
상기 제1 센서스의 적어도 두 개의 필드들의 제2 세트에 대한 제2 센서스를 계산함으로써 엔트리들의 대응하는 리스트를 계산하는 단계 - 엔트리들의 상기 대응하는 리스트의 각 엔트리는 (1) 레코드들의 상기 컬렉션의 적어도 두 개의 필드들의 상기 제2 세트에 나타나는 값들의 별개 결합, 및 (2) 값들의 상기 별개 결합에 대한 프로파일 정보를 식별하되, 엔트리들의 상기 대응하는 리스트의 각 엔트리는 값들의 상기 별개 결합이 나타나는 레코드들의 상기 컬렉션에서 모든 레코드의 상기 위치를, 값들의 각 별개 결합에 대하여, 식별하는 위치 정보를 포함함 -; 및
값들의 제1 별개 결합을 가진 상기 리스트의 제1 엔트리로부터의 제1 프로파일 정보와, 상기 값들의 제1 별개 결합과 상이한 적어도 하나의 값을 가진 레코드들의 상기 컬렉션의 적어도 하나의 필드에 대한 제2 프로파일 정보를 결합하는 단계와,
상기 결합된 프로파일 정보에 기초하여 적어도 하나의 필드들의 상기 제1 세트의 적어도 하나의 필드에 나타나는 적어도 하나의 값에 대한 프로파일 정보를 결정하는 단계에 적어도 부분적으로 기초하여,
레코드들의 상기 컬렉션의 레코드들의 상기 컬렉션의 적어도 하나의 필드들의 상기 제1 세트에 나타나는 값들을 특징짓는 상기 결과 정보를 생성하는 단계를 포함하는, 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제1항에 있어서, 상기 리스트는 적어도 두 개의 필드들의 상기 제2 세트에 나타나는 값들의 모든 별개 결합에 대한 엔트리를 포함하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제2항에 있어서, 적어도 하나의 필드들의 상기 제1 세트는 상기 적어도 두 개의 필드들의 상기 제2 세트에서의 어떠한 필드들도 포함하지 않는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제3항에 있어서, 상기 값들의 제1 별개 결합을 가진 상기 리스트의 제1 엔트리로부터의 제1 프로파일 정보와, 상기 값들의 제1 별개 결합과 상이한 적어도 하나의 값을 가진 레코드들의 상기 컬렉션의 적어도 하나의 필드에 대한 제2 프로파일 정보를 결합하는 단계는
값들의 제1 별개 결합을 가진 상기 리스트들의 제1 엔트리로부터의 제1 프로파일 정보와 레코드들의 상기 컬렉션의 적어도 하나의 필드들의 상기 제1 세트의 적어도 하나의 필드에 대한 제2 프로파일 정보를 결합하는 단계를 포함하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제4항에 있어서, 상기 리스트의 상기 제1 엔트리로부터의 상기 프로파일 정보는 상기 값들의 제1 별개 결합이 적어도 두 개의 필드들의 상기 제2 세트에 나타나는 상기 컬렉션 내의 모든 레코드를 식별하는 위치 정보를 포함하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제5항에 있어서, 상기 값들의 제1 별개 결합과 상이한 적어도 하나의 값을 가진 적어도 하나의 필드에 대한 상기 프로파일 정보는 상기 적어도 하나의 값이 적어도 하나의 필드들의 상기 제1 세트에 나타나는 상기 컬렉션 내의 모든 레코드를 식별하는 위치 정보를 포함하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제4항에 있어서, 상기 제1 프로파일 정보와 제2 프로파일 정보를 결합하는 단계는 상기 제1 프로파일 정보와 제2 프로파일 정보에 포함된 상기 위치 정보 사이의 교차(intersection)을 수행하는 단계를 포함하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제2항에 있어서, 상기 리스트 내의 각 엔트리는 상기 리스트 내의 상기 엔트리들과 연관된 모든 인덱스 값들 중 고유한 그 엔트리에 대한 인덱스 값과 연관되는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제8항에 있어서, 적어도 하나의 필드들의 상기 제1 세트는 적어도 두 개의 필드들의 상기 제2 세트에서의 모든 필드들보다 더 적은 서브세트인 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제9항에 있어서, 상기 값들의 제1 별개 결합을 가진 상기 리스트의 제1 엔트리로부터의 제1 프로파일 정보와, 상기 값들의 제1 별개 결합과 상이한 적어도 하나의 값을 가진 적어도 하나의 필드에 대한 제2 프로파일 정보를 결합하는 단계는
값들의 제1 별개 결합을 가진 상기 리스트의 제1 엔트리로부터의 제1 프로파일 정보와 값들의 제2 별개 결합을 가진 상기 리스트의 제2 엔트리로부터의 제2 프로파일 정보를 결합하는 단계를 포함하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제10항에 있어서, 상기 값들의 제1 별개 결합과 상기 값들의 제2 별개 결합은 제1 필드에 대하여 동일한 값 및 제2 필드에 대하여 상이한 값들을 갖되, 상기 제1 필드는 상기 제1 세트와 상기 제2 세트 양쪽 모두에 있고 상기 제2 필드는 상기 제2 세트 내에 있으나 상기 제1 세트 내에 있지 않는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제10항에 있어서, 상기 제1 프로파일 정보는 상기 제1 엔트리와 연관된 제1 인덱스 값을 포함하고 상기 제2 프로파일 정보는 상기 제2 엔트리와 연관된 제2 인덱스 값을 포함하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제1항에 있어서, 상기 각 엔트리는 값들의 별개 결합이 적어도 두 개의 필드들의 상기 제2 세트에 나타나는 레코드들의 개수의 카운트(count)을 더 식별하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제13항에 있어서, 상기 처리 단계는 상기 식별된 카운트로 각 리스트 내의 상기 엔트리들을 분류하는 단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제1항에 있어서, 상기 값들의 별개 결합에 대한 상기 프로파일 정보는, 값들의 각 별개 결합에 대해, 상기 값들의 별개 결합이 나타나는 상기 컬렉션 내의 모든 레코드를 식별하는 위치 정보를 포함하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제15항에 있어서, 값들의 별개 결합에 대한 상기 위치 정보를 생성하는 단계는 상기 값들의 별개 결합으로부터의 제1 별개 값에 대한 위치 정보들과 상기 값들의 별개 결합으로부터의 제2 별개 값에 대한 위치 정보 간의 교차(intersection)를 결정하는 단계를 포함하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제15항에 있어서, 상기 위치 정보는 별개 값이 나타나는 모든 레코드에 대한 고유 인덱스 값을 식별하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제17항에 있어서, 상기 위치 정보는 특정한 교유 인덱스 값을 저장하여 특정한 고유 인덱스 값을 식별하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제17항에 있어서, 상기 위치 정보는 상기 위치 정보 내의 상기 고유 인덱스 값을 인코딩하여 고유 값을 식별하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 제19항에 있어서, 상기 고유 인덱스 값을 인코딩하는 단계는 상기 고유 인덱스 값에 대응하는 벡터 내의 위치에서 비트를 저장하는 단계를 포함하는 것을 특징으로 하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 방법.
- 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링 하기 위하여, 컴퓨터 프로그램을 저장한 컴퓨터 판독가능한 저장 매체에 있어서, 상기 컴퓨터 프로그램은 컴퓨터 시스템이
상기 데이터 저장 시스템에 결합된 인터페이스를 통해 상기 데이터 저장 시스템에 저장된 레코드들의 적어도 하나의 컬렉션을 액세스하고; 그리고
프로파일 정보에 기초하여 레코드들의 상기 컬렉션의 적어도 하나의 필드들의 제1 세트에 나타나는 값들을 특징짓는 결과 정보를 생성하기 위해 레코드들의 상기 컬렉션을 처리하도록하는 인스트럭션을 포함하되, 레코드들의 상기 컬렉션의 적어도 하나의 필드들에서 값 또는 값들의 결합에 관한 프로파일 정보는 프로파일되는 레코드들의 상기 컬렉션의 적어도 하나의 필드들에 나타나는 상기 값 또는 값들의 상기 결합에서 레코드들의 상기 컬렉션의 모든 레코드의 고유 식별자를 식별하는 위치 정보를 포함하고, 상기 처리는
레코드들의 상기 적어도 하나의 컬렉션의 위치 정보를 포함하는 레코드들의 상기 적어도 하나의 컬렉션의 제1 센서스를 계산하는 단계;
상기 제1 센서스의 적어도 두 개의 필드들의 제2 세트에 대한 제2 센서스를 계산함으로써 엔트리들의 대응하는 리스트를 계산하는 단계 - 엔트리들의 상기 대응하는 리스트의 각 엔트리는 (1) 레코드들의 상기 컬렉션의 적어도 두 개의 필드들의 상기 제2 세트에 나타나는 값들의 별개 결합, 및 (2) 값들의 상기 별개 결합에 대한 프로파일 정보를 식별하되, 엔트리들의 상기 대응하는 리스트의 각 엔트리는 값들의 상기 별개 결합이 나타나는 레코드들의 상기 컬렉션에서 모든 레코드의 상기 위치를, 값들의 각 별개 결합에 대하여, 식별하는 위치 정보를 포함함 -; 및
값들의 제1 별개 결합을 가진 상기 리스트의 제1 엔트리로부터의 제1 프로파일 정보와, 값들의 상기 제1 별개 결합과 상이한 적어도 하나의 값을 가진 레코드들의 상기 컬렉션의 적어도 하나의 필드에 대한 제2 프로파일 정보를 결합하는 단계와,
상기 결합된 프로파일 정보에 기초하여 레코드들의 상기 컬렉션의 적어도 하나의 필드들의 상기 제1 세트의 적어도 하나의 필드에 나타나는 적어도 하나의 값에 대한 프로파일 정보를 결정하는 단계에 적어도 부분적으로 기초하여,
레코드들의 상기 컬렉션의 적어도 하나의 필드들의 상기 제1 세트에 나타나는 값들을 특징짓는 상기 결과 데이터를 생성하는 단계를 포함하는, 컴퓨터 프로그램을 저장한 컴퓨터 판독가능한 저장 매체.
- 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 컴퓨팅 시스템에 있어서, 상기 컴퓨팅 시스템은
상기 데이터 저장 시스템에 저장된 레코드들의 적어도 하나의 컬렉션을 액세스하기 위해 구성된 상기 데이터 저장 시스템에 결합된 인터페이스; 및
프로파일 정보에 기초하여 레코드들의 상기 컬렉션의 적어도 하나의 필드들의 제1 세트에 나타나는 값들을 특징짓는 결과 정보를 생성하기 위해 레코드들의 상기 컬렉션을 처리하도록 구성된 적어도 하나의 프로세서를 포함하되, 레코드들의 상기 컬렉션의 적어도 하나의 필드들에서 값 또는 값들의 결합에 관한 프로파일 정보는 프로파일되는 레코드들의 상기 컬렉션의 적어도 하나의 필드들에 나타나는 상기 값 또는 값들의 상기 결합에서 레코드들의 상기 컬렉션의 모든 레코드의 고유 식별자를 식별하는 위치 정보를 포함하고, 상기 처리는
레코드들의 상기 적어도 하나의 컬렉션의 위치 정보를 포함하는 레코드들의 상기 적어도 하나의 컬렉션의 제1 센서스를 계산하는 단계;
상기 제1 센서스의 적어도 두 개의 필드들의 제2 세트에 대한 제2 센서스를 계산함으로써 엔트리들의 대응하는 리스트를 계산하는 단계 - 엔트리들의 상기 대응하는 리스트의 각 엔트리는 (1) 레코드들의 상기 컬렉션의 적어도 두 개의 필드들의 상기 제2 세트에 나타나는 값들의 별개 결합, 및 (2) 값들의 상기 별개 결합에 대한 프로파일 정보를 식별하되, 엔트리들의 상기 대응하는 리스트의 각 엔트리는 값들의 상기 별개 결합이 나타나는 레코드들의 상기 컬렉션에서 모든 레코드의 상기 위치를, 값들의 각 별개 결합에 대하여, 식별하는 위치 정보를 포함함 -; 및
값들의 제1 별개 결합을 가진 상기 리스트의 제1 엔트리로부터의 제1 프로파일 정보와, 상기 값들의 제1 별개 결합과 상이한 적어도 하나의 값을 가진 레코드들의 상기 컬렉션의 적어도 하나의 필드에 대한 제2 프로파일 정보를 결합하는 단계와,
상기 결합된 프로파일 정보에 기초하여 레코드들의 상기 컬렉션의 적어도 하나의 필드들의 상기 제1 세트의 적어도 하나의 필드에 나타나는 적어도 하나의 값에 대한 프로파일 정보를 결정하는 단계에 적어도 부분적으로 기초하여,
레코드들의 상기 컬렉션의 적어도 하나의 필드들의 상기 제1 세트에 나타나는 값들을 특징짓는 상기 결과 정보를 생성하는 단계를 포함하는 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링하기 위한 컴퓨팅 시스템.
- 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링 하기 위한 컴퓨팅 시스템에 있어서, 상기 컴퓨팅 시스템은
상기 데이터 저장 시스템에 저장된 레코드들의 적어도 하나의 컬렉션을 액세스하기 위한 수단; 및
프로파일 정보에 기초하여 레코드들의 상기 컬렉션의 적어도 하나의 필드들의 제1 세트에 나타나는 값들을 특징짓는 결과 정보를 생성하기 위해 레코드들의 상기 컬렉션을 처리하기 수단을 포함하되, 레코드들의 상기 컬렉션의 적어도 하나의 필드들에서 값 또는 값들의 결합에 관한 프로파일 정보는 프로파일되는 레코드들의 상기 컬렉션의 적어도 하나의 필드들에 나타나는 상기 값 또는 값들의 상기 결합에서 레코드들의 상기 컬렉션의 모든 레코드의 고유 식별자를 식별하는 위치 정보를 포함하고, 상기 처리는
레코드들의 상기 적어도 하나의 컬렉션의 위치 정보를 포함하는 레코드들의 상기 적어도 하나의 컬렉션의 제1 센서스를 계산하는 단계;
상기 제1 센서스의 적어도 두 개의 필드들의 제2 세트에 대한 제2 센서스를 계산함으로써 엔트리들의 대응하는 리스트를 계산하는 단계 - 엔트리들의 상기 대응하는 리스트의 각 엔트리는 (1) 레코드들의 상기 컬렉션의 적어도 두 개의 필드들의 상기 제2 세트에 나타나는 값들의 별개 결합, 및 (2) 값들의 상기 별개 결합에 대한 프로파일 정보를 식별하되, 엔트리들의 상기 대응하는 리스트의 각 엔트리는 값들의 상기 별개 결합이 나타나는 레코드들의 상기 컬렉션에서 모든 레코드의 상기 위치를, 값들의 각 별개 결합에 대하여, 식별하는 위치 정보를 포함함 -; 및
값들의 제1 별개 결합을 가진 상기 리스트의 제1 엔트리로부터의 제1 프로파일 정보와, 상기 값들의 제1 별개 결합과 상이한 적어도 하나의 값을 가진 레코드들의 상기 컬렉션의 적어도 하나의 필드에 대한 제2 프로파일 정보를 결합하는 단계와,
상기 결합된 프로파일 정보에 기초하여 레코드들의 상기 컬렉션의 적어도 하나의 필드들의 상기 제1 세트의 적어도 하나의 필드에 나타나는 적어도 하나의 값에 대한 프로파일 정보를 결정하는 단계에 적어도 부분적으로 기초하여,
레코드들의 상기 컬렉션의 적어도 하나의 필드들의 상기 제1 세트에 나타나는 값들을 특징짓는 상기 결과 정보를 생성하는 단계를 포함하는, 적어도 하나의 데이터 저장 시스템에 저장된 데이터를 프로파일링 하기 위한 컴퓨팅 시스템.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261716766P | 2012-10-22 | 2012-10-22 | |
US61/716,766 | 2012-10-22 | ||
US13/958,057 US9323748B2 (en) | 2012-10-22 | 2013-08-02 | Profiling data with location information |
US13/958,057 | 2013-08-02 | ||
PCT/US2013/066061 WO2014066314A1 (en) | 2012-10-22 | 2013-10-22 | Profiling data with location information |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150076227A KR20150076227A (ko) | 2015-07-06 |
KR102134494B1 true KR102134494B1 (ko) | 2020-07-15 |
Family
ID=48985856
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157012267A KR102129643B1 (ko) | 2012-10-22 | 2013-08-02 | 소스 추적으로 데이터 프로파일링 |
KR1020157013538A KR102074026B1 (ko) | 2012-10-22 | 2013-08-02 | 위치 정보를 가진 데이터 프로파일링 |
KR1020157013542A KR102134494B1 (ko) | 2012-10-22 | 2013-10-22 | 위치 정보를 가진 데이터 프로파일링 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157012267A KR102129643B1 (ko) | 2012-10-22 | 2013-08-02 | 소스 추적으로 데이터 프로파일링 |
KR1020157013538A KR102074026B1 (ko) | 2012-10-22 | 2013-08-02 | 위치 정보를 가진 데이터 프로파일링 |
Country Status (9)
Country | Link |
---|---|
US (5) | US9569434B2 (ko) |
EP (5) | EP2909746B1 (ko) |
JP (3) | JP6207619B2 (ko) |
KR (3) | KR102129643B1 (ko) |
CN (4) | CN110096494B (ko) |
AU (4) | AU2013335229B2 (ko) |
CA (3) | CA2887670C (ko) |
HK (3) | HK1211113A1 (ko) |
WO (3) | WO2014065919A1 (ko) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2909746B1 (en) | 2012-10-22 | 2019-12-18 | Ab Initio Technology LLC | Profiling data with source tracking |
US9953054B2 (en) * | 2013-04-22 | 2018-04-24 | Salesforce.Com, Inc. | Systems and methods for implementing and maintaining sampled tables in a database system |
US9292553B2 (en) * | 2013-08-20 | 2016-03-22 | Pivotal Software, Inc. | Queries for thin database indexing |
US9292554B2 (en) * | 2013-08-20 | 2016-03-22 | Pivotal Software, Inc. | Thin database indexing |
US10515231B2 (en) * | 2013-11-08 | 2019-12-24 | Symcor Inc. | Method of obfuscating relationships between data in database tables |
US20150199645A1 (en) * | 2014-01-15 | 2015-07-16 | Bank Of America Corporation | Customer Profile View of Consolidated Customer Attributes |
US9984173B2 (en) * | 2014-02-24 | 2018-05-29 | International Business Machines Corporation | Automated value analysis in legacy data |
EP3114578A1 (en) | 2014-03-07 | 2017-01-11 | AB Initio Technology LLC | Managing data profiling operations related to data type |
US10769122B2 (en) * | 2014-03-13 | 2020-09-08 | Ab Initio Technology Llc | Specifying and applying logical validation rules to data |
GB2524073A (en) * | 2014-03-14 | 2015-09-16 | Ibm | Communication method and system for accessing media data |
US9628107B2 (en) | 2014-04-07 | 2017-04-18 | International Business Machines Corporation | Compression of floating-point data by identifying a previous loss of precision |
US10877955B2 (en) * | 2014-04-29 | 2020-12-29 | Microsoft Technology Licensing, Llc | Using lineage to infer data quality issues |
US10089409B2 (en) | 2014-04-29 | 2018-10-02 | Microsoft Technology Licensing, Llc | Event-triggered data quality verification |
US9959299B2 (en) | 2014-12-02 | 2018-05-01 | International Business Machines Corporation | Compression-aware partial sort of streaming columnar data |
US10909078B2 (en) | 2015-02-25 | 2021-02-02 | International Business Machines Corporation | Query predicate evaluation and computation for hierarchically compressed data |
US11281639B2 (en) | 2015-06-23 | 2022-03-22 | Microsoft Technology Licensing, Llc | Match fix-up to remove matching documents |
US11392568B2 (en) | 2015-06-23 | 2022-07-19 | Microsoft Technology Licensing, Llc | Reducing matching documents for a search query |
US10565198B2 (en) | 2015-06-23 | 2020-02-18 | Microsoft Technology Licensing, Llc | Bit vector search index using shards |
US10229143B2 (en) | 2015-06-23 | 2019-03-12 | Microsoft Technology Licensing, Llc | Storage and retrieval of data from a bit vector search index |
US10242071B2 (en) | 2015-06-23 | 2019-03-26 | Microsoft Technology Licensing, Llc | Preliminary ranker for scoring matching documents |
US10733164B2 (en) | 2015-06-23 | 2020-08-04 | Microsoft Technology Licensing, Llc | Updating a bit vector search index |
US10467215B2 (en) * | 2015-06-23 | 2019-11-05 | Microsoft Technology Licensing, Llc | Matching documents using a bit vector search index |
US20170242876A1 (en) * | 2016-02-22 | 2017-08-24 | Ca, Inc. | Maintaining Database Referential Integrity Using Different Primary and Foreign Key Values |
US11475026B2 (en) * | 2016-02-26 | 2022-10-18 | Douglas Schiller | Value discrepancy visualization apparatus and method thereof |
CN106227837B (zh) * | 2016-07-27 | 2019-08-02 | 浪潮金融信息技术有限公司 | 一种数据分析方法和装置 |
JP2018036977A (ja) * | 2016-09-02 | 2018-03-08 | 富士ゼロックス株式会社 | 情報処理装置及びプログラム |
US10474649B2 (en) * | 2016-09-27 | 2019-11-12 | Halo Tech Corp. | Providing action corrections using a dual model system |
US10817465B2 (en) * | 2016-12-09 | 2020-10-27 | Salesforce.Com, Inc. | Match index creation |
US10636293B2 (en) * | 2017-06-07 | 2020-04-28 | International Business Machines Corporation | Uncertainty modeling in traffic demand prediction |
US10528549B2 (en) | 2017-09-25 | 2020-01-07 | Mastercard International Incorporated | Systems and methods for use in loading data based on a hierarchical framework |
US10795915B1 (en) * | 2017-12-29 | 2020-10-06 | Iqvia Inc. | System and method for merging slowly changing data |
CA3030513A1 (en) | 2018-01-19 | 2019-07-19 | Sofdesk Inc. | Automated roof surface measurement from combined aerial lidar data and imagery |
US11068540B2 (en) | 2018-01-25 | 2021-07-20 | Ab Initio Technology Llc | Techniques for integrating validation results in data profiling and related systems and methods |
EP3743820A1 (en) * | 2018-01-25 | 2020-12-02 | Ab Initio Technology LLC | Techniques for integrating validation results in data profiling and related systems and methods |
US10430100B2 (en) | 2018-02-28 | 2019-10-01 | International Business Machines Corporation | Transactional operations in multi-master distributed data management systems |
US10891307B2 (en) * | 2018-05-31 | 2021-01-12 | Microsoft Technology Licensing, Llc | Distributed data synchronization in a distributed computing system |
US11042522B2 (en) | 2018-06-11 | 2021-06-22 | International Business Machines Corporation | Resolving versions in an append-only large-scale data store in distributed data management systems |
US11188539B2 (en) | 2018-07-27 | 2021-11-30 | International Business Machines Corporation | Matching non-sequential log metadata with out-of-order record data |
JP6573187B1 (ja) * | 2019-01-08 | 2019-09-11 | 株式会社ビジネスインテリジェンス | データ処理プログラム、データ出力装置、データ統合方法、出力プログラム、データ出力方法及びデータ処理システム |
US11360990B2 (en) | 2019-06-21 | 2022-06-14 | Salesforce.Com, Inc. | Method and a system for fuzzy matching of entities in a database system based on machine learning |
US11194844B1 (en) * | 2020-09-01 | 2021-12-07 | Skyline Al Ltd. | System and method for detecting second degree relationships between entities by uniquely resolving entities |
US11909750B1 (en) * | 2020-10-15 | 2024-02-20 | Splunk Inc. | Data reduction and evaluation via link analysis |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100250563A1 (en) * | 2009-03-27 | 2010-09-30 | Sap Ag | Profiling in a massive parallel processing environment |
Family Cites Families (144)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179643A (en) | 1988-12-23 | 1993-01-12 | Hitachi, Ltd. | Method of multi-dimensional analysis and display for a large volume of record information items and a system therefor |
JPH032938A (ja) | 1989-05-31 | 1991-01-09 | Hitachi Ltd | データベース処理方法 |
US5604899A (en) | 1990-05-21 | 1997-02-18 | Financial Systems Technology Pty. Ltd. | Data relationships processor with unlimited expansion capability |
FR2698465B1 (fr) | 1992-11-20 | 1995-01-13 | Bull Sa | Méthode d'extraction de profils de statistiques, utilisation des statistiques créées par la méthode. |
US5847972A (en) * | 1993-09-24 | 1998-12-08 | Eick; Stephen Gregory | Method and apparatus for graphically analzying a log-file |
US5742806A (en) | 1994-01-31 | 1998-04-21 | Sun Microsystems, Inc. | Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system |
JP3519126B2 (ja) | 1994-07-14 | 2004-04-12 | 株式会社リコー | 自動レイアウトシステム |
US5842200A (en) | 1995-03-31 | 1998-11-24 | International Business Machines Corporation | System and method for parallel mining of association rules in databases |
US6601048B1 (en) | 1997-09-12 | 2003-07-29 | Mci Communications Corporation | System and method for detecting and managing fraud |
CN1052316C (zh) * | 1995-09-15 | 2000-05-10 | 殷步九 | 计算机管理设计*** |
US5966072A (en) | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
US5778373A (en) | 1996-07-15 | 1998-07-07 | At&T Corp | Integration of an information server database schema by generating a translation map from exemplary files |
US6138123A (en) | 1996-07-25 | 2000-10-24 | Rathbun; Kyle R. | Method for creating and using parallel data structures |
JPH1055367A (ja) | 1996-08-09 | 1998-02-24 | Hitachi Ltd | データ利用システム |
US5845285A (en) | 1997-01-07 | 1998-12-01 | Klein; Laurence C. | Computer system and method of data analysis |
US5987453A (en) | 1997-04-07 | 1999-11-16 | Informix Software, Inc. | Method and apparatus for performing a join query in a database system |
US7031843B1 (en) * | 1997-09-23 | 2006-04-18 | Gene Logic Inc. | Computer methods and systems for displaying information relating to gene expression data |
US6134560A (en) | 1997-12-16 | 2000-10-17 | Kliebhan; Daniel F. | Method and apparatus for merging telephone switching office databases |
JP3474106B2 (ja) * | 1998-06-17 | 2003-12-08 | アルプス電気株式会社 | 液晶表示装置 |
USRE41901E1 (en) | 1998-08-11 | 2010-10-26 | Turbo Data Laboratories, Inc. | Method and apparatus for retrieving accumulating and sorting table formatted data |
US7039919B1 (en) * | 1998-10-02 | 2006-05-02 | Microsoft Corporation | Tools and techniques for instrumenting interfaces of units of a software program |
US6826556B1 (en) | 1998-10-02 | 2004-11-30 | Ncr Corporation | Techniques for deploying analytic models in a parallel |
US6546416B1 (en) | 1998-12-09 | 2003-04-08 | Infoseek Corporation | Method and system for selectively blocking delivery of bulk electronic mail |
US6959300B1 (en) | 1998-12-10 | 2005-10-25 | At&T Corp. | Data compression method and apparatus |
US6343294B1 (en) | 1998-12-15 | 2002-01-29 | International Business Machines Corporation | Data file editor for multiple data subsets |
US6741995B1 (en) | 1999-03-23 | 2004-05-25 | Metaedge Corporation | Method for dynamically creating a profile |
US6430539B1 (en) | 1999-05-06 | 2002-08-06 | Hnc Software | Predictive modeling of consumer financial behavior |
GB2349961A (en) * | 1999-05-08 | 2000-11-15 | Int Computers Ltd | Analysing data files to produce summaries therefrom |
US6163774A (en) * | 1999-05-24 | 2000-12-19 | Platinum Technology Ip, Inc. | Method and apparatus for simplified and flexible selection of aggregate and cross product levels for a data warehouse |
KR20020041337A (ko) | 1999-06-18 | 2002-06-01 | 토런트 시스템즈, 인크. | 트랜잭션 시맨틱스를 이용한 연속 데이터 스트림의세그먼테이션 및 처리 |
US6801938B1 (en) | 1999-06-18 | 2004-10-05 | Torrent Systems, Inc. | Segmentation and processing of continuous data streams using transactional semantics |
JP3318834B2 (ja) | 1999-07-30 | 2002-08-26 | 三菱電機株式会社 | データファイルシステム及びデータ検索方法 |
JP3363120B2 (ja) | 1999-08-30 | 2003-01-08 | ファンクルシステム株式会社 | コンテンツ収集・貼付方法及び装置並びにコンテンツ収集・貼付のためのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2001331362A (ja) | 2000-03-17 | 2001-11-30 | Sony Corp | ファイル変換方法、データ変換装置及びファイル表示システム |
JP3567861B2 (ja) | 2000-07-07 | 2004-09-22 | 日本電信電話株式会社 | 情報源所在推定方法及び装置及び情報源所在推定プログラムを格納した記憶媒体 |
JP4366845B2 (ja) | 2000-07-24 | 2009-11-18 | ソニー株式会社 | データ処理装置およびデータ処理方法、並びにプログラム提供媒体 |
US6788302B1 (en) | 2000-08-03 | 2004-09-07 | International Business Machines Corporation | Partitioning and load balancing graphical shape data for parallel applications |
US20020073138A1 (en) | 2000-12-08 | 2002-06-13 | Gilbert Eric S. | De-identification and linkage of data records |
US6952693B2 (en) | 2001-02-23 | 2005-10-04 | Ran Wolff | Distributed mining of association rules |
US20020161778A1 (en) | 2001-02-24 | 2002-10-31 | Core Integration Partners, Inc. | Method and system of data warehousing and building business intelligence using a data storage model |
US20020120602A1 (en) | 2001-02-28 | 2002-08-29 | Ross Overbeek | System, method and computer program product for simultaneous analysis of multiple genomes |
US20030063779A1 (en) * | 2001-03-29 | 2003-04-03 | Jennifer Wrigley | System for visual preference determination and predictive product selection |
CA2349265A1 (en) * | 2001-05-30 | 2002-11-30 | Andrew Emili | Protein expression profile database |
US20030033138A1 (en) | 2001-07-26 | 2003-02-13 | Srinivas Bangalore | Method for partitioning a data set into frequency vectors for clustering |
US7130852B2 (en) | 2001-07-27 | 2006-10-31 | Silicon Valley Bank | Internal security system for a relational database system |
WO2003014867A2 (en) | 2001-08-03 | 2003-02-20 | John Allen Ananian | Personalized interactive digital catalog profiling |
US6801903B2 (en) | 2001-10-12 | 2004-10-05 | Ncr Corporation | Collecting statistics in a database system |
US7359847B2 (en) * | 2001-11-30 | 2008-04-15 | International Business Machines Corporation | Tracking converage results in a batch simulation farm network |
US20030140027A1 (en) | 2001-12-12 | 2003-07-24 | Jeffrey Huttel | Universal Programming Interface to Knowledge Management (UPIKM) database system with integrated XML interface |
US7813937B1 (en) | 2002-02-15 | 2010-10-12 | Fair Isaac Corporation | Consistency modeling of healthcare claims to detect fraud and abuse |
US7031969B2 (en) | 2002-02-20 | 2006-04-18 | Lawrence Technologies, Llc | System and method for identifying relationships between database records |
CA2479838C (en) | 2002-03-19 | 2011-02-08 | Mapinfo Corporation | Location based service provider |
US7032212B2 (en) | 2002-05-06 | 2006-04-18 | Microsoft Corporation | Method and system for generating test matrices for software programs |
US20040083199A1 (en) | 2002-08-07 | 2004-04-29 | Govindugari Diwakar R. | Method and architecture for data transformation, normalization, profiling, cleansing and validation |
US6657568B1 (en) | 2002-08-27 | 2003-12-02 | Fmr Corp. | Data packing for real-time streaming |
US7047230B2 (en) | 2002-09-09 | 2006-05-16 | Lucent Technologies Inc. | Distinct sampling system and a method of distinct sampling for optimizing distinct value query estimates |
US7043476B2 (en) * | 2002-10-11 | 2006-05-09 | International Business Machines Corporation | Method and apparatus for data mining to discover associations and covariances associated with data |
AU2003284118A1 (en) | 2002-10-14 | 2004-05-04 | Battelle Memorial Institute | Information reservoir |
US7395243B1 (en) | 2002-11-01 | 2008-07-01 | Checkfree Corporation | Technique for presenting matched billers to a consumer |
US7698163B2 (en) | 2002-11-22 | 2010-04-13 | Accenture Global Services Gmbh | Multi-dimensional segmentation for use in a customer interaction |
US7403942B1 (en) | 2003-02-04 | 2008-07-22 | Seisint, Inc. | Method and system for processing data records |
US7433861B2 (en) | 2003-03-13 | 2008-10-07 | International Business Machines Corporation | Byte-code representations of actual data to reduce network traffic in database transactions |
US7117222B2 (en) | 2003-03-13 | 2006-10-03 | International Business Machines Corporation | Pre-formatted column-level caching to improve client performance |
US7130760B2 (en) | 2003-03-31 | 2006-10-31 | National Instruments Corporation | Reporting invalid parameter values for a parameter-based system |
US20040249810A1 (en) | 2003-06-03 | 2004-12-09 | Microsoft Corporation | Small group sampling of data for use in query processing |
GB0314591D0 (en) | 2003-06-21 | 2003-07-30 | Ibm | Profiling data in a data store |
US20060069717A1 (en) * | 2003-08-27 | 2006-03-30 | Ascential Software Corporation | Security service for a services oriented architecture in a data integration platform |
US20050240354A1 (en) * | 2003-08-27 | 2005-10-27 | Ascential Software Corporation | Service oriented architecture for an extract function in a data integration platform |
US7426520B2 (en) | 2003-09-10 | 2008-09-16 | Exeros, Inc. | Method and apparatus for semantic discovery and mapping between data sources |
ATE515746T1 (de) * | 2003-09-15 | 2011-07-15 | Ab Initio Technology Llc | Datenprofilierung |
CN101271472B (zh) * | 2003-09-15 | 2011-04-13 | 起元科技有限公司 | 数据处理方法和数据处理*** |
US7587394B2 (en) | 2003-09-23 | 2009-09-08 | International Business Machines Corporation | Methods and apparatus for query rewrite with auxiliary attributes in query processing operations |
US7149736B2 (en) | 2003-09-26 | 2006-12-12 | Microsoft Corporation | Maintaining time-sorted aggregation records representing aggregations of values from multiple database records using multiple partitions |
AU2003279999A1 (en) | 2003-10-21 | 2005-06-08 | Nielsen Media Research, Inc. | Methods and apparatus for fusing databases |
US7620630B2 (en) * | 2003-11-12 | 2009-11-17 | Oliver Lloyd Pty Ltd | Directory system |
US8078481B2 (en) * | 2003-12-05 | 2011-12-13 | John Steinbarth | Benefits administration system and methods of use and doing business |
US7689542B2 (en) | 2004-01-13 | 2010-03-30 | Oracle International Corporation | Dynamic return type generation in a database system |
US20050177578A1 (en) | 2004-02-10 | 2005-08-11 | Chen Yao-Ching S. | Efficient type annontation of XML schema-validated XML documents without schema validation |
US7376656B2 (en) | 2004-02-10 | 2008-05-20 | Microsoft Corporation | System and method for providing user defined aggregates in a database system |
KR100619064B1 (ko) | 2004-07-30 | 2006-08-31 | 삼성전자주식회사 | 메타 데이터를 포함하는 저장 매체, 그 재생 장치 및 방법 |
US8447743B2 (en) | 2004-08-17 | 2013-05-21 | International Business Machines Corporation | Techniques for processing database queries including user-defined functions |
CN1314634C (zh) | 2004-09-17 | 2007-05-09 | 南京理工大学 | 单质***降静电处理方法 |
US7392169B2 (en) * | 2004-10-21 | 2008-06-24 | International Business Machines Corporation | Method, system and program product for defining and recording minimum and maximum event counts of a simulation utilizing a high level language |
US7899833B2 (en) | 2004-11-02 | 2011-03-01 | Ab Initio Technology Llc | Managing related data objects |
US8145642B2 (en) | 2004-11-30 | 2012-03-27 | Oracle International Corporation | Method and apparatus to support bitmap filtering in a parallel system |
US20060129893A1 (en) * | 2004-11-30 | 2006-06-15 | Smith Alan R | Apparatus, system, and method for criteria driven summarization of trace entry data |
US7694088B1 (en) * | 2005-03-31 | 2010-04-06 | Symantec Operating Corporation | System and method for efficient creation of aggregate backup images |
US20060230019A1 (en) * | 2005-04-08 | 2006-10-12 | International Business Machines Corporation | System and method to optimize database access by synchronizing state based on data access patterns |
US8572018B2 (en) * | 2005-06-20 | 2013-10-29 | New York University | Method, system and software arrangement for reconstructing formal descriptive models of processes from functional/modal data using suitable ontology |
US7877350B2 (en) | 2005-06-27 | 2011-01-25 | Ab Initio Technology Llc | Managing metadata for graph-based computations |
US7584205B2 (en) * | 2005-06-27 | 2009-09-01 | Ab Initio Technology Llc | Aggregating data with complex operations |
US20070021995A1 (en) | 2005-07-20 | 2007-01-25 | Candemir Toklu | Discovering patterns of executions in business processes |
US7774346B2 (en) | 2005-08-26 | 2010-08-10 | Oracle International Corporation | Indexes that are based on bitmap values and that use summary bitmap values |
US20070073721A1 (en) | 2005-09-23 | 2007-03-29 | Business Objects, S.A. | Apparatus and method for serviced data profiling operations |
US7565349B2 (en) * | 2005-11-10 | 2009-07-21 | International Business Machines Corporation | Method for computing frequency distribution for many fields in one pass in parallel |
US20070214179A1 (en) | 2006-03-10 | 2007-09-13 | Khanh Hoang | Searching, filtering, creating, displaying, and managing entity relationships across multiple data hierarchies through a user interface |
US8271452B2 (en) * | 2006-06-12 | 2012-09-18 | Rainstor Limited | Method, system, and database archive for enhancing database archiving |
NO325864B1 (no) | 2006-11-07 | 2008-08-04 | Fast Search & Transfer Asa | Fremgangsmåte ved beregning av sammendragsinformasjon og en søkemotor for å støtte og implementere fremgangsmåten |
US20080114789A1 (en) | 2006-11-15 | 2008-05-15 | Wysham John A | Data item retrieval method and apparatus |
JP2008146242A (ja) * | 2006-12-07 | 2008-06-26 | Ricoh Co Ltd | 発注支援システム、機器監視装置、機器監視方法及びプログラム |
US7894075B2 (en) * | 2006-12-11 | 2011-02-22 | Zygo Corporation | Multiple-degree of freedom interferometer with compensation for gas effects |
US8412713B2 (en) * | 2007-03-06 | 2013-04-02 | Mcafee, Inc. | Set function calculation in a database |
US9224179B2 (en) * | 2007-05-14 | 2015-12-29 | The University Of Utah Research Foundation | Method and system for report generation including extensible data |
US7958142B2 (en) | 2007-09-20 | 2011-06-07 | Microsoft Corporation | User profile aggregation |
JP5241738B2 (ja) * | 2008-01-28 | 2013-07-17 | 株式会社ターボデータラボラトリー | 表からツリー構造データを構築する方法及び装置 |
US20090226916A1 (en) * | 2008-02-01 | 2009-09-10 | Life Technologies Corporation | Automated Analysis of DNA Samples |
US7912867B2 (en) | 2008-02-25 | 2011-03-22 | United Parcel Services Of America, Inc. | Systems and methods of profiling data for integration |
US7904464B2 (en) * | 2008-08-27 | 2011-03-08 | International Business Machines Corporation | Virtual list view support in a distributed directory |
US8463739B2 (en) * | 2008-08-28 | 2013-06-11 | Red Hat, Inc. | Systems and methods for generating multi-population statistical measures using middleware |
JP5287071B2 (ja) * | 2008-09-17 | 2013-09-11 | 株式会社リコー | データベース管理システムおよびプログラム |
US20100114976A1 (en) * | 2008-10-21 | 2010-05-06 | Castellanos Maria G | Method For Database Design |
CN101393521B (zh) * | 2008-11-13 | 2012-04-25 | 上海交通大学 | Windows应用程序内部固化数据的提取*** |
US8150832B2 (en) * | 2009-03-06 | 2012-04-03 | Oracle International Corporation | Methods and systems for automatically determining a default hierarchy from data |
US20110029478A1 (en) | 2009-05-20 | 2011-02-03 | Broeker Stephen A | Stream Star Schema and Nested Binary Tree for Data Stream Analysis |
US8977705B2 (en) * | 2009-07-27 | 2015-03-10 | Verisign, Inc. | Method and system for data logging and analysis |
AU2010295547B2 (en) | 2009-09-16 | 2015-05-07 | Ab Initio Technology Llc | Mapping dataset elements |
US8560575B2 (en) * | 2009-11-12 | 2013-10-15 | Salesforce.Com, Inc. | Methods and apparatus for selecting updates to associated records to publish on an information feed in an on-demand database service environment |
WO2011060257A1 (en) | 2009-11-13 | 2011-05-19 | Ab Initio Technology Llc | Managing record format information |
US8595284B2 (en) | 2009-12-14 | 2013-11-26 | Samsung Electronics Co., Ltd | Web application script migration |
US8396873B2 (en) | 2010-03-10 | 2013-03-12 | Emc Corporation | Index searching using a bloom filter |
US8326824B2 (en) * | 2010-05-28 | 2012-12-04 | International Business Machines Corporation | Methods to estimate existing cache contents for better query optimization |
KR101781416B1 (ko) * | 2010-06-22 | 2017-09-25 | 아브 이니티오 테크놀로지 엘엘시 | 관련 데이터세트의 처리 |
JP2012009996A (ja) * | 2010-06-23 | 2012-01-12 | National Institute Of Information & Communication Technology | 情報処理システム、中継装置、および情報処理方法 |
JP5398663B2 (ja) * | 2010-08-06 | 2014-01-29 | 三菱電機株式会社 | データ処理装置及びデータ処理方法及びプログラム |
WO2012051216A1 (en) * | 2010-10-11 | 2012-04-19 | The Regents Of The University Of Colorado, A Body Corporate | Direct echo particle image velocimetry flow vector mapping on ultrasound dicom images |
US8296274B2 (en) | 2011-01-27 | 2012-10-23 | Leppard Andrew | Considering multiple lookups in bloom filter decision making |
CA2823658C (en) | 2011-01-28 | 2018-03-13 | Ab Initio Technology Llc | Generating data pattern information |
JP5556695B2 (ja) * | 2011-02-16 | 2014-07-23 | 株式会社島津製作所 | 質量分析データ処理方法及び該方法を用いた質量分析装置 |
EP2704682A4 (en) * | 2011-05-05 | 2014-10-22 | Aegis Analytical Corp | SYSTEM FOR DESIGNATING, DISPLAYING AND SELECTING TYPES OF PROCESS PARAMETERS AND PRODUCT RESET PARAMETERS |
EP2608122A1 (en) * | 2011-12-22 | 2013-06-26 | Philip Morris Products S.A. | Systems and methods for quantifying the impact of biological perturbations |
US8610605B2 (en) | 2011-06-17 | 2013-12-17 | Sap Ag | Method and system for data compression |
DE102012210794A1 (de) * | 2011-07-01 | 2013-02-07 | International Business Machines Corporation | System und Verfahren zur Datenqualitätsüberwachung |
US8856085B2 (en) | 2011-07-19 | 2014-10-07 | International Business Machines Corporation | Automatic consistent sampling for data analysis |
US8666919B2 (en) | 2011-07-29 | 2014-03-04 | Accenture Global Services Limited | Data quality management for profiling, linking, cleansing and migrating data |
WO2013062984A1 (en) * | 2011-10-24 | 2013-05-02 | The Brigham And Women's Hospital, Inc. | Method for treatment of mesothelioma |
CN103176973B (zh) | 2011-12-20 | 2016-04-20 | 国际商业机器公司 | 用于生成数据库的测试工作负载的***和方法 |
US8762396B2 (en) | 2011-12-22 | 2014-06-24 | Sap Ag | Dynamic, hierarchical bloom filters for network data routing |
US9336246B2 (en) | 2012-02-28 | 2016-05-10 | International Business Machines Corporation | Generating composite key relationships between database objects based on sampling |
US9483268B2 (en) * | 2012-03-16 | 2016-11-01 | International Business Machines Corporation | Hardware based run-time instrumentation facility for managed run-times |
US10061807B2 (en) * | 2012-05-18 | 2018-08-28 | Splunk Inc. | Collection query driven generation of inverted index for raw machine data |
WO2013190083A1 (en) * | 2012-06-21 | 2013-12-27 | Philip Morris Products S.A. | Systems and methods relating to network-based biomarker signatures |
EP2909746B1 (en) * | 2012-10-22 | 2019-12-18 | Ab Initio Technology LLC | Profiling data with source tracking |
KR102113366B1 (ko) * | 2012-10-22 | 2020-05-20 | 아브 이니티오 테크놀로지 엘엘시 | 데이터 저장 시스템에서 데이터 소스 특성화 |
US9348773B2 (en) * | 2013-05-28 | 2016-05-24 | Dell Products, L.P. | Systems and methods for adaptive interrupt coalescing in a converged network |
-
2013
- 2013-08-02 EP EP13752720.6A patent/EP2909746B1/en active Active
- 2013-08-02 JP JP2015537694A patent/JP6207619B2/ja active Active
- 2013-08-02 US US13/957,641 patent/US9569434B2/en active Active
- 2013-08-02 KR KR1020157012267A patent/KR102129643B1/ko active IP Right Grant
- 2013-08-02 KR KR1020157013538A patent/KR102074026B1/ko active IP Right Grant
- 2013-08-02 EP EP13748437.4A patent/EP2909745B1/en active Active
- 2013-08-02 AU AU2013335229A patent/AU2013335229B2/en active Active
- 2013-08-02 CN CN201811474571.3A patent/CN110096494B/zh active Active
- 2013-08-02 WO PCT/US2013/053412 patent/WO2014065919A1/en active Application Filing
- 2013-08-02 EP EP19216483.8A patent/EP3657348B1/en active Active
- 2013-08-02 JP JP2015537698A patent/JP6357162B2/ja active Active
- 2013-08-02 CN CN201380055099.9A patent/CN104737167B/zh active Active
- 2013-08-02 AU AU2013335231A patent/AU2013335231B2/en active Active
- 2013-08-02 CN CN201380055340.8A patent/CN104756107B/zh active Active
- 2013-08-02 US US13/958,057 patent/US9323748B2/en active Active
- 2013-08-02 WO PCT/US2013/053351 patent/WO2014065917A1/en active Application Filing
- 2013-08-02 CA CA2887670A patent/CA2887670C/en active Active
- 2013-08-02 CA CA2888250A patent/CA2888250C/en active Active
- 2013-10-22 AU AU2013334870A patent/AU2013334870B2/en active Active
- 2013-10-22 CN CN201380055344.6A patent/CN104769586B/zh active Active
- 2013-10-22 KR KR1020157013542A patent/KR102134494B1/ko active IP Right Grant
- 2013-10-22 WO PCT/US2013/066061 patent/WO2014066314A1/en active Application Filing
- 2013-10-22 JP JP2015538128A patent/JP6377622B2/ja active Active
- 2013-10-22 CA CA2887931A patent/CA2887931C/en active Active
- 2013-10-22 EP EP13786806.3A patent/EP2909752B1/en active Active
- 2013-10-22 US US14/059,590 patent/US9323749B2/en active Active
- 2013-10-22 EP EP20187755.2A patent/EP3764242A1/en active Pending
-
2015
- 2015-09-21 US US14/859,502 patent/US9990362B2/en active Active
- 2015-12-03 HK HK15111895.6A patent/HK1211113A1/xx unknown
- 2015-12-03 HK HK15111898.3A patent/HK1211116A1/xx unknown
- 2015-12-03 HK HK15111884.9A patent/HK1211109A1/xx unknown
-
2017
- 2017-02-13 US US15/431,008 patent/US10719511B2/en active Active
-
2018
- 2018-10-24 AU AU2018253523A patent/AU2018253523B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100250563A1 (en) * | 2009-03-27 | 2010-09-30 | Sap Ag | Profiling in a massive parallel processing environment |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102134494B1 (ko) | 위치 정보를 가진 데이터 프로파일링 | |
Ali et al. | A survey of RDF stores & SPARQL engines for querying knowledge graphs | |
US10872095B2 (en) | Aggregation framework system architecture and method | |
CN111971666A (zh) | 优化sql查询计划的维度上下文传播技术 | |
US20160328432A1 (en) | System and method for management of time series data sets | |
JP6434154B2 (ja) | トランザクションアクセスパターンに基づいた結合関係の識別 | |
US20170060944A1 (en) | Optimized inequality join method | |
Zhang et al. | Holistic evaluation in multi-model databases benchmarking | |
US20160026680A1 (en) | System and method for executing a sparql query | |
US11775517B2 (en) | Query content-based data generation | |
US8548980B2 (en) | Accelerating queries based on exact knowledge of specific rows satisfying local conditions | |
LeFevre et al. | Towards a workload for evolutionary analytics | |
US11947537B1 (en) | Automatic index management for a non-relational database | |
Serrano et al. | From relations to multi-dimensional maps: A SQL-to-hbase transformation methodology | |
Buda et al. | Rex: Representative extrapolating relational databases | |
Davoudian | A workload-driven framework for NoSQL data modeling and partitioning | |
Nagireddy | Job recommendation system with NoSQL databases: Neo4j, MongoDB, DynamoDB, Cassandra and their critical comparison | |
US11868372B1 (en) | Automated hierarchy detection for cloud-based analytics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |