! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

Entity Framework를 사용해 Google Analytics 데이터 통합하기 > 블로그 & Tips

본문 바로가기

ComponentOne

블로그 & Tips

Entity Framework를 사용해 Google Analytics 데이터 통합하기

페이지 정보

작성자 GrapeCity 작성일 2021-04-12 16:35 조회 4,042회 댓글 0건

본문

ComponentOne 2020v3 릴리스에서는 .NET Standard 서비스 라이브러리 DataConnectors(다양한 유형의 데이터 소스에 연결하는 데 사용할 수 있는 커넥터 집합을 제공)가 지원하는 데이터 소스의 수가 늘어납니다. 이제 각 유형에 ADO.NET Provider를 사용해 여섯 가지 데이터 소스, 즉 OData, Microsoft Dynamics 365 Sales, Salesforce Data, Kintone, QuickBooks OnlineGoogle Analytics에 연결할 수 있습니다. 이 Provider들은 SQL Server 및 OLEDB에 대한 기본 .NET 데이터 Provider와 동일한 ADO.NET 아키텍처를 보유하고 있습니다. 따라서 이 Provider들은 .NET 아키텍처에서 사용 가능한 유사한 클래스 집합을 따를 수 있게 함으로써 데이터 액세스 과정의 복잡성을 완화합니다. 또한 인증, 캐싱, SQL/LINQ 쿼리 지원과 같은 유용한 기능을 갖추고 있습니다. 이 기능들 외에도 DataConnector에는 각 데이터 소스 유형에 대한 Entity Framework (EF) Core Provider도 포함되어 있습니다. 이 Provider 덕분에 Entity Framework Core로 작업할 때도 이 라이브러리가 유용합니다.


이 포스팅에서는 Google AnalyticsEntity Framework(EF) Core Provider를 사용해 Google Analytics 데이터에 연결하는 방법에 대한 이해를 돕고, 인증, 쿼리, 캐싱 등 기본 기능에 대해서도 설명하도록 하겠습니다.


Google Analytics용 Entity Framework Core Provider


우리 모두 알다시피 .NET 개발자는 Entity Framework Core에서 .NET 개체를 사용해 데이터베이스 작업을 할 수 있습니다. Entity Framework는 데이터베이스의 각 테이블을 엔터티로 매핑합니다. 여기서 엔터티는 테이블의 각 필드를 클래스의 속성으로 정의하는 클래스입니다. 이러한 엔터티 컬렉션을 엔터티 데이터 모델이라고 합니다. 이 모델은 데이터베이스 데이터를 엔터티의 속성에 저장하고 데이터베이스에서 데이터를 가져와 엔터티 개체로 자동 변환합니다. 따라서 Google Analytics용 Entity Framework Core Provider로 작업하려면 먼저 엔터티 데이터 모델을 정의해야 합니다.


시작하기 위해 모든 플랫폼 콘솔, Windows 또는 웹에 대해 .Net Core 또는 .Net Framework 프로젝트를 만들어야 합니다. 새로 만든 프로젝트에서 NuGet으로부터 C1.DataConnector, C1.AdoNet.C1GoogleAnalyticsC1.EntityFrameworkCore.GoogleAnalytics 패키지를 설치하여 Google Analytics용 Entity Framework Core Provider로 작업을 시작하세요.

DataConnector



엔터티 데이터 모델 생성


엔터티 데이터 모델은 엔터티 몇 개와 컨텍스트 클래스 하나로 구성됩니다. 컨텍스트 클래스는 기본 데이터베이스와 함께 세션을 표시합니다. 사용자는 CRUD(만들기, 읽기, 업데이트, 삭제) 작업을 수행할 수 있습니다. 이 경우 엔터티는 데이터베이스의 각 테이블을 표시하는 데 사용되는 클래스입니다. 이 단계에서는 스캐폴딩을 사용해 컨텍스트 클래스 및 엔터티를 생성하는 방법에 대해 자세히 설명드리겠습니다.


Google Analytics용 Entity Framework Core Provider는 수동으로 또는 스캐폴딩을 사용해 엔터티 클래스 및 컨텍스트 클래스를 만들 수 있도록 스캐폴딩을 지원합니다. 이 블로그 게시글에서는 스캐폴딩 접근 방식에 대해 설명합니다. 클래스를 수동으로 구현하는 방법에 대해 이해하려면 이 문서를 참조하십시오.


프로젝트를 DataConnector Google Analytics Provider 패키지로 구성한 후에는 엔터티 클래스 및 컨텍스트 클래스를 스캐폴딩하기 위해 Microsoft.EntityFrameworkCore.Tools NuGet 패키지의 2.1.0 버전을 설치해야 합니다.


이 패키지를 설치한 후 도구 → NuGet 패키지 관리자 → 패키지 관리자 콘솔을 클릭하여 패키지 관리자 콘솔을 엽니다. 콘솔이 표시되면 다음 명령을 사용하여 엔터티 및 컨텍스트 클래스를 생성합니다.

Scaffold-DbContext "Key File=*****.json;View Id=*****" C1.EntityFrameworkCore.GoogleAnalytics -OutputDir "GeneratedCode" -Tables Goals


위에 정의된 Scaffold-DbContext 명령은 현재 세 개의 매개 변수, 연결 문자열, 출력 폴더 이름, 엔터티 클래스를 생성할 테이블 이름의 목록을 허용하고 있습니다. Google Analytics용 연결 문자열의 정의에 대해 알아보겠습니다.


연결 문자열


Google Analytics용 Entity Framework Core Provider는 현재 서비스 계정 자격 증명을 사용한 인증을 지원합니다. JSON 파일로 다운로드되는 서비스 계정 자격 증명은 KeyFile 속성을 사용해 연결 문자열에 제공되어야 합니다. Google Analytics 보기를 위한 ViewId는 Google Analytics 데이터에 대한 인증된 액세스를 위해 ViewId 속성을 통해 설정되어야 합니다. 세부 정보는 이 문서를 참조하십시오.


다음은 KeyFile 및 ViewId 속성을 지정하여 정의한 샘플 연결 문자열입니다.

//Configure connection string  
 string connectionstring = "Key File=*****.json;View Id=*****";


위 명령을 실행하면 스캐폴드 명령의 테이블 목록 매개 변수에 지정된 각 테이블에 상응하는 컨텍스트 클래스 및 엔터티 클래스가 생성됩니다. 이 경우 “Goals”라는 테이블만 해당됩니다. 이 클래스들은 스캐폴딩 명령에 지정된 것과 동일한 이름으로 프로젝트 폴더 안에 생성된 폴더에 저장됩니다. 다음은 생성된 컨텍스트 클래스와 엔터티 클래스 Goals의 모습입니다.


ContextClass


위의 컨텍스트 클래스(기본적으로 MainContext라는 이름이 지정됨)에 정의된 재정의된 OnConfiguring 메서드를 살펴보십시오. 이 메서드는 DbContextOptionsBuilder 클래스에 대해 정의된 확장 메서드인 UseGoogleAnalytics 메서드를 호출합니다. 이 메서드는 Google Analytics 데이터베이스에 연결하는 데 사용되는 컨텍스트를 구성합니다.



데이터 가져오기


Google Analytics용 Entity Framework Core Provider는 .Net 개체 및 표준 SQL/LINQ를 사용해 데이터 소스에 대해 쿼리할 수 있게 허용합니다. Provider는 쿼리 조인, 함수, 요약 등 대부분의 SQL 기능을 지원합니다. 아래 샘플 코드에서는 컨텍스트 클래스의 개체를 사용한 READ 작업을 보여줍니다.

//Fetch data  
private void Form1_Load(object sender, EventArgs e)  
 {  
  MainContext db= new MainContext();   
  List<Goals> goals_records = db.Goals.ToList();  
 }


다음은 C1 GoogleAnalytics Entity Framework Core Provider를 사용해 GoogleAnalytics에서 데이터를 가져와 WinForms 응용 프로그램에서 FlexGrid에 바인딩하는 작업의 예시입니다.


다음은 이와 동일한 것을 구현하는 샘플 코드 일부입니다. 단, 디자이너를 사용해 Windows Forms에 FlexGrid 컨트롤이 이미 추가되었다고 가정합니다.

//Fetch data and bind to FlexGrid  
private void Form1_Load(object sender, EventArgs e)  
{    
  //Apply theme to FlexGrid  
  c1ThemeController1.SetTheme(c1FlexGrid1, "Office2016White");  
​
  //Fetch Google Analytics data and bind to FlexGrid  
  MainContext db= new MainContext();  
  c1FlexGrid1.DataSource = db.Goals.ToList();
​
  //AutoSize columns to display data  
  c1FlexGrid1.AutoSizeCols();      
}


아래 이미지는 가져온 데이터를 로드한 후 FlexGrid의 모습을 캡처한 것입니다.


FlexGrid


이와 마찬가지로 사용자는 가져온 Google Analytics 데이터를 아래 그림과 같이 FlexPivot 컨트롤에 바인딩할 수 있습니다.


FlexPivot


여기에서 동일한 데이터에 대한 데모 샘플을 찾거나 가져온 데이터를 사용해 대시보드를 만드십시오. 간단한 이미지는 다음과 같습니다.


대시보드


여기에서 대시보드를 만들기 위한 자세한 단계를 확인하실 수 있습니다.



캐싱


사용자가 유사한 작업을 반복적으로 수행할 때 캐시에서 데이터에 액세스함으로써 Google Analytics용 EF Core Provider의 성능을 더욱 향상할 수 있습니다. DataConnector 라이브러리는 이러한 유형의 기능을 지원하기 위해 캐싱 지원을 기본 제공합니다. 연결에 대해 캐시 속성을 설정하고 캐시를 지원하려면 연결 개체를 구성해야 합니다. UseCache 속성은 true로 설정해야 하지만, CacheLocation 속성을 설정해 기본 캐시 위치를 사용자 정의할 수 있습니다. CacheTolerance 속성은 캐시 허용 시간을 초 단위로 설정하는 데 사용됩니다(기본값은 600초로 설정됨).


다음은 모든 캐시 속성을 설정하여 캐싱을 활성화하기 위해 스캐폴딩 명령에 지정해야 하는 업데이트된 연결 문자열입니다.

Scaffold-DbContext "Key File=*****.json;View Id=*****;Use Cache=true; Cache Tolerance=6; Cache Location='C:\temp\gacache.db';" C1.EntityFrameworkCore.GoogleAnalytics -OutputDir "GeneratedCode"


증분 캐싱


Google Analytics용 EF Core Provider는 증분 캐싱이라고 하는 또 다른 캐싱 전략을 제공합니다. 증분 캐싱은 캐시 데이터를 주기적으로 업데이트하여 전체 캐시 데이터를 갱신하지 않고 소스 엔터티에서 새 레코드를 추가합니다. 이 기술은 레코드가 마지막으로 업데이트되거나 새 레코드가 삽입된 시간을 기록하는 고유 필드 및 타임스탬프 필드를 사용합니다. 따라서 증분 캐싱을 구현해야 하는 모든 테이블에는 타임스탬프 열이 있어야 합니다. Google Analytics에는 기본 타임스탬프 열인 "Updated"가 있습니다.

C1GoogleAnalyticsConnectionStringBuilder 클래스의 "IncrementalUpdate" 및 "IncrementalUpdateColumn" 속성은 증분 캐싱을 지원하도록 설정해야 합니다. 자세한 내용은 증분 캐싱에 대한 문서 주제를 참조하십시오.


다음은 증분 캐싱을 구현하기 위해 스캐폴딩 명령에 지정해야 하는 업데이트된 연결 문자열입니다.

Scaffold-DbContext "Key File=*****.json;View Id=*****;Incremental Update=true; Incremental Update Column=LastModifiedDate"" C1.EntityFrameworkCore.GoogleAnalytics -OutputDir "GeneratedCode"


자세한 내용은 DataConnector 문서를 참조하시기 바랍니다. 또한 데스크톱 DataConnector 탐색기웹 기반 DataConnector 탐색기를 사용해 모든 유형의 DataConnector와 그 기능에 대해 알아보실 수 있습니다.


여기에서 ComponentOne DataConnectors 서비스 컴포넌트를 다운로드하여 설치하실 수 있으며, 설치된 샘플은 'C:\Users\xxxx\Documents\ComponentOne Samples\ServiceComponents\DataConnector'에서 확인하실 수 있습니다.


  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.