Как бы вы отобразили или консолидировали различные данные из нескольких источников / каналов? - PullRequest
2 голосов
/ 31 августа 2011

Мне было поручено задание для нашего веб-приложения, в котором мне нужно взять жанры с разными именами (Ужасы, Комедии и т. Д.), Поступающие из разных источников (Facebook Opengraph, XML Feeds и т. Д.) И сократитьданные до "основной" таблицы.

Примером этого является то, что у нас есть жанр «Действие», а один из наших каналов имеет жанр «Действие / Приключение».Вместо этого я бы предпочел, чтобы фильмы «Боевики / Приключения» были назначены мастером жанра «Боевики».

Я думал о написании жестко закодированной хэш-карты.Мы используем что-то подобное с языками:

languages = { "en_US" => "English", "en_GB" => "English" }

Кто-нибудь знает лучший способ?Возможно, мне стоит положиться на справочную таблицу в базе данных?Ура!

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

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

Возможно, что вы немного не по теме ...

Обычно, когда я выполняю сложные ETL из нескольких источников, я использую двухэтапный процесс.Первым шагом является объединение всех входных данных в один формат.Это может быть в файлах CSV или XML или в промежуточной базе данных.

Оттуда у меня есть второй процесс, который загружает данные в рабочую или основную базу данных.Преимущество здесь состоит в том, что после того, как вы завершили импорт (или «загрузку») кода со всей потенциально сложной бизнес-логикой и т. Д., Вам очень редко приходится дотрагиваться до нее (и потенциально нарушать ее) снова.Если новый источник данных появится в сети, вам просто нужно написать новый фрагмент кода, чтобы перевести его в универсальный формат.Как только он в этом формате, вы знаете, что ваш процесс импорта будет обрабатывать его правильно.

Опять же, как вы будете переводить (или «преобразовывать») данные, будет зависеть от того, что вы используете для тяжелой работы в вашемСистема ETL.Если вы используете промежуточную базу данных, то имеет смысл поместить ее в таблицу.Обычно вы хотите выполнить это преобразование при переходе от необработанных данных к универсальному формату.

2 голосов
/ 01 сентября 2011

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

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