태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


'2009/10'에 해당되는 글 8건

  1. 2009/10/21 TreeNode의 깊이와 레벨 구하기
  2. 2009/10/16 RANET OLAP UI LIBRARY
  3. 2009/10/09 영상처리
  4. 2009/10/09 수학
  5. 2009/10/07 SSAS 계산 멤버를 이용해 누적측정값 생성하기
  6. 2009/10/07 SSAS 시간차원 계층 만들기
  7. 2009/10/07 SSAS MDX 쿼리 구문
  8. 2009/10/07 C# Twitter API
2009/10/21 10:51

TreeNode의 깊이와 레벨 구하기

class Program
{
class Node
{
public List<Node> Childs = new List<Node>(10);
public Node Parent;

public void Add(Node node)
{
node.Parent = this;
Childs.Add(node);
}

public int Level
{
get
{
return Parent == null ? 0 : Parent.Level + 1;
}
}

public int Depth
{
get
{
int depth = 0;
GetDepth(this, ref depth);
return depth;
}
}

public void GetDepth(Node node, ref int depth)
{
if (node.Childs.Count == 0)
return;
depth++;

int maxDepth = 0;
foreach (Node child in node.Childs)
{
int d = 0;
GetDepth(child, ref d);

if (maxDepth < d) maxDepth = d;
}

depth += maxDepth;
}

public override string ToString()
{
return string.Format("Level = {0}, Depth = {1}", Level, Depth);
}
}


static void PrintAllNode(Node node)
{
Console.WriteLine(node.ToString());

foreach (Node child in node.Childs)
{
PrintAllNode(child);
}
}


static void Main(string[] args)
{
Node root = new Node();
root.Add(new Node());
root.Add(new Node());
root.Add(new Node());
root.Add(new Node());
root.Add(new Node());

root.Childs[0].Add(new Node());
root.Childs[0].Add(new Node());
root.Childs[1].Add(new Node());
root.Childs[1].Add(new Node());
root.Childs[2].Add(new Node());
root.Childs[2].Add(new Node());
root.Childs[0].Childs[0].Add(new Node());
root.Childs[0].Childs[0].Add(new Node());


PrintAllNode(root);

Console.Read();
}
}

Trackback 0 Comment 0
2009/10/16 11:24

RANET OLAP UI LIBRARY


http://code.google.com/p/ranet-uilibrary-olap/
Trackback 0 Comment 0
2009/10/09 13:19

영상처리

좋은 글 링크

 

영상처리를 공부하려면 어떻게 해야 할까요?

저의 비젼관련 개발 경험기(툴 설명 위주) (출처 : OpenCV 카페)

Trackback 0 Comment 0
2009/10/09 11:53

수학

데카르트 좌표계 : http://en.wikipedia.org/wiki/Cartesian_coordinate_system

좌표평면

- http://www.learningwave.com/lwonline/algebra_section2/alg_coord.html

- http://www.mathopenref.com/coordplane.html

수학용어(영어) - http://dcmru.tistory.com/152

Trackback 0 Comment 0
2009/10/07 18:28

SSAS 계산 멤버를 이용해 누적측정값 생성하기

다음과 같은 데이터가 있다.

 

일자 가입유저수
2009-01-01 10
2009-01-02 20
2009-03-10 20
2009-03-11 12

 

위 테이블은 일자별 가입유저수 데이터이다.

이 테이블이 팩트 테이블이고 시간차원은 년->월->일 계층구조를 갖도록 이미 만들어져 있다고 치자.

(시간 차원 계층만들기 포스트 참조)

 

일자별 가입유저수는 측정값으로 쉽게 만들수 있지만 다음 표와 같이 누적유저수를 구하려면 어떻게 해야할까?

 

일자 가입유저수 누적유저수
2009-01-01 10 10
2009-01-02 20 30
2009-03-10 20 120
2009-03-11 12 132

 

이럴 경우 다음과 같이 큐브에 계산 멤버를 생성해서 원하는 측정값을 만들 수 있다.

 

image

 

위 계산멤버의 핵심은 다음 식이다.

 

Aggregate(
periodstodate(
[날짜].[Calendar].[Calendar Year],
[날짜].[Calendar].CurrentMember
), [Measures].[유저수]
)

Aggregate함수와 PeriodsToDate함수는 SSAS의 MDX 쿼리 구문이다.

PeriodsToDate함수의 구문은 다음과 같다.

 

PeriodsToDate( [ Level_Expression [ ,Member_Expression ] ] )

Level_Expression은 수준을 반환하는 MDX식이고 필수파라미터이며, Member_Expression은 멤버를 반환하는 MDX식이고 선택파라미터이다.

수준은 차원의 계층을 말하고 멤버는 차원의 멤버를 의미한다.

 

즉, 위 식은 Calendar Year 수준(년도내에서)에서 마지막 멤버단위로 유저수 측정값을 누적하라는 의미이다.

CurrentMember는 시간차원의 Calendar계층의 최하위 멤버인 Day멤버(2009-01-01)이다.

Trackback 0 Comment 0
2009/10/07 17:42

SSAS 시간차원 계층 만들기

시간차원 테이블 스키마

 

데이터원본인 시간차원 테이블 스키마는 다음과 같다. (좀 더 자세한 정보는 시간 차원 테이블 만들기 포스트 참조)

 

image

 

차원 생성

 

날짜 차원을 생성한 후 다음과 같이 작업을 수행하면 된다.

 

image

 

  1. Full Date컬럼을 키 특성으로 생성

    Full Date특성의 속성을 다음과 같이 변경

    image
  2. Day Number Of Year 특성 추가
  3. Day Number Of Year 특성을 복사해서 Day 특성 생성

    Day특성의 속성을 다음과 같이 변경

    image

    KeyColumns의 Collection은 다음과 같다.

    image
  4. Month Number Of Year 특성 추가후 Month로 이름 변경

    Month특성의 속성을 다음과 같이 변경

    image 

    KeyColumns의 Collection은 다음과 같다.

    image
  5. Full Date키 특성에서 Month 특성 관계 제거
  6. Day 특성에 Month특성 관계 생성
  7. Calendar Quarter 특성 추가 후 Full Date에서 특성 관계 제거

    Calendar Quarter특성의 속성을 다음과 같이 변경

    image

    KeyColumns의 Collection은 다음과 같다.

    image
  8. Month특성에 Calendar Quarter 특성 관계 생성
  9. Calendar Year 특성 추가 후 Full Date에서 특성 관계 제거

    Calendar Year특성의 속성을 다음과 같이 변경

    image
  10. Calendar Quarter에 Calendar Year 특성 관계 생성
  11. Calendar 계층 생성

    image

 

큐브 수정

 

큐브에 날짜 차원을 추가한 후 다음과 같이 차원 용도를 설정하면 된다.

 

image

Trackback 0 Comment 0
2009/10/07 14:34

SSAS MDX 쿼리 구문

다음은 간단한 MDX 쿼리 구문이다.
 
SELECT
[차원명].[특성].(Children|Members|멤버) ON COLUMNS,
[차원명].[특성].(Children|Members|멤버) ON ROWS
FROM
[큐브명]
WHERE [Measures].[측정값]

ON COLUMNS에 열거된 차원은 X축을 구성하고 ON ROWS에 열거된 차원은 Y축을 구성한다.
측정값은 WHERE절에 기입하고 FROM절에는 큐브명을 입력하면된다.
 
차원명 중에 특성의 하위멤버 속성이 의미하는 바는 다음과 같다.
  • Children
    All을 제외한 해당 특성의 모든 멤버

    예를 들면 날짜차원의 월특성 중에 All을 제외한 모든 멤버를 출력하고 싶다면 다음과 같이 입력한다.
    [날짜].[월].Children

  • Members
    All을 포함한 해당 특성의 모든 멤버
    예를 들면 날짜차원의 월특성 중에 All을 포함한 모든 멤버를 출력하고 싶다면 다음과 같이 입력한다.
    [날짜].[월].Members

  • 멤버
    특정 멤버를 직접 입력한다.

    예를 들면 날짜차원의 월특성 중에 01월만 지정하고 싶다면 다음과 같이 입력한다.
    [날짜].[월].[01]

 

참고자료

http://docs.springnote.com/pages/714420

Trackback 0 Comment 0
2009/10/07 11:57

C# Twitter API

다음 페이지를 방문하면 Twitter API를 사용한 각 종 언어의 라이브러리가 있다.

 

http://apiwiki.twitter.com/Libraries#C/NET

 

이 중 C# 라이브러리는 Yedda 라이브러리가 오픈소스인데다 메소드 단위로 기능이 분리되어 있어 좋다.

 

http://devblog.yedda.com/index.php/twitter-c-library/


# 기타

http://code.google.com/p/twitterizer/

Trackback 0 Comment 0