SSAS를 사용하여 Apache 로그를 분석해야하는 프로젝트에서 작업하고 있습니다. 이미 임시 테이블에 데이터를로드했습니다. 차원 테이블 (기본 키 및 attibute_name), 빈 팩트 테이블 (각 차원 테이블 및 fact_attribute에 대한 외래 키)을 작성하고 이들 간의 관계를 작성했습니다. 그런 다음 해당 테이블의 데이터를팩트 테이블에 외래 키 채우기
INSERT INTO DimIP (IP) SELECT DISTINCT RemoteHostName FROM tmp
... 등을 사용하여 차원 테이블로 분할했습니다.
이제 외래 키를 사용하여 Fact 테이블을 채울 필요가 있지만 단일 쿼리로이를 수행하는 방법을 알지 못합니다. 나는이 같은 시도 :
INSERT INTO Facts (DimDateID, DimIPID, DimRefererID, DimRequestID, DimStatusCodeID, DimUserAgentID)
SELECT DimDate.ID WHERE (DimDate.Data = tmp.DateTime)
SELECT DimIP.ID WHERE (DimIP.IP = tmp.RemoteHostName)
SELECT DimReferer.ID WHERE (DimReferer.Referer = tmp.Referer)
SELECT DimRequest.ID WHERE (DimRequest.Request = tmp.Request)
SELECT DimStatusCode.ID WHERE (DimStatusCode.StatusCode = tmp.StatusCode)
SELECT DimUserAgent.ID WHERE (DimUserAgent.UserAgent = tmp.UserAgent)
을하지만 그것은 작동하지 않습니다, 아마 내가 같은 구문을 사용할 수 없습니다 (이 삽입 목록이 선택 목록보다 적은 항목이 포함 말한다). 라고
INSERT INTO Facts (DimDateID)
SELECT DimDate.ID WHERE (DimDate.Data = tmp.DateTime)
을하지만 때로는 다른 열이 NULL (예 DimUserAgentID.) 할 수없는, 쿼리가 실패 때때로 쿼리를 실행하므로 말한다 :
I는 다음과 같이, 그것을 하나 하나를 수행 시도 "806000 rows affected"하지만 아무것도 삽입되지 않습니다.
나는 이미 내 머리에서 내 머리카락의 절반을 찢어 버렸고 차원 테이블의 외래 키를 사용하여 팩트 테이블을 채우는 방법을 모르겠다.
감사합니다. 훌륭한 작품입니다. 그게 내가 필요한 것입니다. 측정 값으로 BytesSent를 추가하고 사실 테이블이 완벽하게 채워집니다. – Meff