Разделение таблицы на .net - Создание базы данных columner - PullRequest
0 голосов
/ 13 января 2011

Я разрабатываю какой-то инструмент для BI. Есть такие термины, как Факт, Размеры и Меры. Мое приложение будет подключаться к обычной базе данных и читать данные из этой таблицы. Теперь я хочу преобразовать все эти данные в столбцовую базу данных. То есть все столбцы из этой таблицы будут перенесены в 3 таблицы. Рассмотрим таблицу ниже:

ID    Product  
1      XYZ  
2      ABC  
3      ABC   

Теперь я хочу преобразовать столбец Product, т. Е. Измерение, в 3 таблицы. dim_product_table: -

ID      Product  
1       XYZ  
2       ABC  

dim_product_fmk (фактическая карта по ключу): - Где мы будем хранить пару ключ-значение

Key     Row  
1       1  
1       2  
2       3

dim_product_fmr (карта фактов по строкам): - приведенная выше таблица будет перевернута.

Row     Key  
1        1  
2        1  
3        2

Другим требованием является то, что все приведенные выше таблицы должны генерироваться динамически, и я должен быть в состоянии присоединиться ко всем этим.

Ответы [ 2 ]

1 голос
/ 17 января 2011

Я отправляю другой ответ, чтобы мне не пришлось бороться с интерфейсом комментариев, но это ответ на ваш запрос выше.

Если я вас правильно понимаю, вам нужно определить структуру базы данных и сгенерировать сценарии на ее основе. В Sql Server это означает чтение из sysobjects, syscolumns и т. Д. Вы можете определить первичный ключ динамически и соответственно построить таблицы фактов выше.

Это должно помочь вам начать:

--list tables
SELECT * FROM sysobjects where type = 'u' Order BY Name

--get columns for that table
SELECT * FROM syscolumns WHERE Id = @Id --from sysobjects

--get PK info
SELECT ColumnUsage.*
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TableConstraints
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS ColumnUsage
ON TableConstraints.CONSTRAINT_TYPE = 'PRIMARY KEY' AND
TableConstraints.CONSTRAINT_NAME = ColumnUsage.CONSTRAINT_NAME
WHERE TableConstraints.TABLE_NAME = @TableName
ORDER BY ColumnUsage.TABLE_NAME, ColumnUsage.ORDINAL_POSITION
0 голосов
/ 13 января 2011

Если я правильно вас понимаю, вы пытаетесь создать структуру OLAP? Я уверен, что кто-то здесь даст вам прямой ответ на ваш вопрос, но вы также можете рассмотреть вопрос о Analysis Services , который является платформой Microsoft для создания кубов и аналитической обработки в Интернете.

Когда вы генерируете куб в AS, есть мастер, через которого вы проходите, который сделает хотя бы кое-что из того, что вы ищете здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...