- 당신은 그 길을 잘 알고 있습니다. 데이터 마트가 어떻게 구성되어야하는지에 대한 학교 예. 실제 예제에는 companyID, productID 및 salesID의 원시 키가 포함될 수 있습니다. PK_sales 또는 PK_fact를 원하는대로 추가하십시오.날짜 또는 타임 스탬프가없는 이벤트 (하나의 판매)는 거의 발생하지 않지만 이것이 개념의 일부 증거 일 뿐이라면 어쩌면 당신은 그것없이 갈 수 있습니다.
- 데이터가 있습니까? 아니면 데이터를 구성하고 싶습니까?
RANDBETWEEN
기능을 사용하여 Excel에서 일부 예제 데이터를 만들 수 있습니다.
- 많은 MySQL 클라이언트 도구에는 excel, csv 또는 txt 파일에서 데이터를 가져 오는 옵션이 있습니다.
- 또는 Pentaho Kettle 및 Talend Open Studio과 같은 무료 데이터 통합 도구를 사용할 수 있습니다. 이 순간에 너무 많은 경우이 단계를 피하십시오. 그러나 DI 도구가 무엇인지, 그리고 DWH를 어떻게 채울 수 있는지에 대한 좋은 통찰력을 줄 것입니다 (실제 예제에서).
- 그것은이 같은 것입니다 :
SELECT dp.ProductName,sum(fs.revenue) as total_revenue FROM fact_sales fs JOIN dim_product dp ON fs.FK_Product = dp.PK_Product JOIN dim_company dc ON fs.FK_Company = dc.PK_Company WHERE dp.Product_Type = 'Product Category B' AND dc.CompanyName IN ('Sub A','Sub B') GROUP BY dp.PK_Product;
은 참조 무결성 (안티 패턴)을 포함하지 않는 불행하게도, 데이터 마트의 일부가 잘 구조화되지 않은, 당신 때문에 INNER JOIN
대신 LEFT JOIN
을 사용해야합니다. INNER JOIN
은 JOIN
과 같습니다. 조금 JOIN
에 대해 here을 시각화 할 수 있습니다.
편집 : 귀하의 코멘트에 대해서는
,이 QA 사이트가 특정 질문에 대한 답변을 위해 봉사해야하기 때문에이 대답은 너무 광범위하고 싶지 않아 균형을 어렵다.
DWH는 여전히 데이터베이스이므로 대부분의 데이터베이스 원칙을 상속합니다. 그 중 하나가 테이블 키입니다. 기본 키는 고유 한 행 식별자이며 데이터베이스 디자인에서 허용되는 경우 (DWH 세계에서 항상 필요함) 키는 정수 (정확하게 큰 정수)입니다. 자세한 내용은 this을 참조하십시오.
목적? 이름이 같지만 상태가 다른 두 회사가있을 수 있으므로 별개의 열쇠가 필요합니다.
왜 정수 여야합니까? 그것은 더 기술적 인 질문이며, 중 하나는 쿼리 최적화의 답변입니다입니다. CPU는 100+ 바이트 (또는 지정) 문자열 (데이터베이스 세계의 VARCHAR
)보다 훨씬 빠르게 두 개의 정수 (4 또는 8 바이트)를 일치시킵니다.
누군가 VARCHAR
을 기본 키로 사용하는 이유는 무엇입니까? 글쎄, 때로는 원산지가되는 것이 좋은 접근법입니다. 따라서 VARCHAR
기본 키는 제품 브랜드와 카운터 (공급 업체)의 조합 일 수 있으며 재 판매자 인 경우 ERP는 MCR-OFF-123과 같은 Microsoft Office 2016 키를 제공 할 수 있습니다. DWH에서는 원시 키 (int, varchar)를 저장하고 서로 게이트 기본 키를 할당하는 것이 좋습니다.
하위 A는 키가 '1', 하위 B 키 '의견에서 2
인용이있다.
네, 맞습니다.
우선 : 빠른 답변을 보내 주셔서 감사합니다.원본 스키마를 편집하여 데이터 스키마에 대한보다 자세한 접근법을 포함 시켰습니다. 그러나 나는 아직도 이것에 대해 몇 가지 질문을 가지고있다. 기본 키와 외래 키를 사용하여 테이블을 연결하는 일반적인 개념을 이해하고 있지만 키가 실제로 어떻게 보이는지 생각할 수 없습니다. Sub A, Sub B, Sub C가 있다고 가정합시다.이 이름들이 열쇠입니까? 아니면 고유 한 키를 얻나요? (서브 A와 마찬가지로 키 '1', 서브 B는 키 '2'...) 제품과 동일합니다. –
안녕하세요, 귀하의 의견에 따라 답변을 확장했습니다 :-) 키와 db 관련 문제가 더 있으시면 아직 답변되지 않은 경우 다른 질문을하십시오. 기본 질문은 좋으므로 특정 질문을 유지하면 다른 사람들에게도 도움이 될 수 있습니다. – fenix
다시 고맙습니다. 이미 도움이 되었기 때문에 대답을 받아 들였습니다. 그러나, 나는 아직도 내가해야만하는 것을 달성하지 못했지만 나는 어떻게 든 그것을 이해할 것이라고 생각한다. 그렇지 않다면 포럼을 "스팸"하지 않고 좀 더 구체적인 도움을 요청할 수 있습니까? –