전형적인 Kimball Star -Schema Data Warehouse- 모델보기가 가능합니까? 그리고 Gen을 코딩하는 방법

StackOverflow https://stackoverflow.com/questions/128456

문제

전형적인 스타 스키마가 포함 된 데이터웨어 하우스와 이와 같은 작업을 수행하는 전체 코드가 있습니다 (분명히 더 크지 만 이것은 예시 적입니다).

SELECT cdim.x
    ,SUM(fact.y) AS y
    ,dim.z
FROM fact
INNER JOIN conformed_dim AS cdim
    ON cdim.cdim_dim_id = fact.cdim_dim_id
INNER JOIN nonconformed_dim AS dim
    ON dim.ncdim_dim_id = fact.ncdim_dim_id
INNER JOIN date_dim AS ddim
    ON ddim.date_id = fact.date_id
WHERE fact.date_id = @date_id
GROUP BY cdim.x
    ,dim.z

나는 그것을보기로 교체 할 생각이다 (MODEL_SYSTEM_1, 말하기).

SELECT m.x
    ,SUM(m.y) AS y
    ,m.z
FROM MODEL_SYSTEM_1 AS m
WHERE m.date_id = @date_id
GROUP BY m.x
    ,m.z

그러나 견해 MODEL_SYSTEM_1 고유 한 열 이름을 포함해야하며, 다른 사실과 치수에 걸친 WHER 절의 모든 항목이 보기는 전체 별을 가로 질러있을 것이며, 견해는 매개 변수화 될 수 없습니다 (소년, 시원하지 않을 것입니다!)

그래서 내 질문은 -

  1. 이 접근법은 괜찮습니까, 아니면 성능을 해치고 내 아무것도 더 멋진 구문을 제공하지 않는 추상화가 될까요?

  2. 적절한 PK와 FK가 제자리에 있으면 중복 열 이름을 제거하고 (나중에 뷰를 손으로 조정해야하더라도) 코드-그 뷰의 가장 좋은 방법은 무엇입니까? SQL을 작성하여 INFORMATION_SCHEMA 아니면 이미 사용할 수있는 좋은 예가 있습니까?

편집하다: 나는 그것을 테스트했으며, 더 큰 프로세스에서도 성능이 동일하게 보입니다. 심지어 각각이 뷰를 사용하는 여러 별을 합류시킵니다.

자동화는 주로 데이터웨어 하우스에 이러한 별이 많고 FK/PK는 디자이너에 의해 제대로 수행되었지만 모든 테이블이나 문서를 선택하고 싶지는 않습니다. 나는보기를 생성하기 위해 스크립트를 썼으며 (또한 테이블의 약어를 생성 함) INFORMATION_SCHEMA, 그런 다음 전망을 만들기 전에 조정할 수 있습니다.

누군가가 코드를 원한다면 아마도 여기에 게시 할 수 있습니다.

도움이 되었습니까?

해결책

  1. 이 기술을 돌보는 여러 데이터웨어 하우스에서 사용했습니다. 뷰 대 직접 접근 방식을 기반으로 보고서를 실행할 때 성능 저하를 보지 못했지만 자세한 분석을 수행 한 적이 없습니다.

  2. SQL Server Management Studio의 디자이너를 사용하여 뷰를 만들었고 자동화 된 접근 방식을 사용하지 않았습니다. 스키마가 자동화가 가치가있을 정도로 자주 변경되는 것을 상상할 수 없습니다. 모든 테이블을 처음부터보기로 끌기 위해 찍은 결과를 장기간 조정하는 데 오랫동안 소비 될 수 있습니다!

모호성을 제거하려면 좋은 접근 방식은 속의 차원의 이름으로 열 이름을 서문하는 것입니다. 이것은 보고서 작성자와 임시 쿼리를 실행하는 사람에게 도움이됩니다.

다른 팁

하나 이상의 요약 사실 테이블로보기 또는보기를 만들고 구체화하십시오. 메인 팩트 테이블이 새로 고침 될 때만 새로 고침해야합니다. 구체화 된 뷰는 쿼리가 더 빠르며 요약에 의해 만족할 수있는 많은 쿼리가있는 경우 이길 수 있습니다.

데이터 사전 또는 정보 스키마보기를 사용하여 SQL을 생성하여 이러한 요약이 많거나 자주 변경하려는 경우 테이블을 작성할 수 있습니다.

그러나, 나는 당신이 이것들을 자주 바꾸지 않을 가능성이 없다고 생각합니다. 따라서보기 정의가 자동 생성하는 것은 문제가되지 않을 수 있습니다.

MS SQL Server를 사용하면 인라인 UDF를 사용해 볼 수 있습니다. 매개 변수보기 그것이 얻어지면.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top