11.07.2022, 12:44 | #1 |
Участник
|
Формирование мэппинга данных (DAX2012)
Добрый день!
Столкнулся с необходимостью реализации таблицы, в которой будут храниться аналоги для продуктов/вариантов. Предполагается, что пользователь будет вводить данные по принципу Продукт Х - Продукт Y. Причем если происходит следующая ситуация: 1) Продукт 1 - Продукт 2 2) Продукт 1 - Продукт 3 3) Продукт 2 - Продукт 4 Система должна понять, что для продукта 4, продукт 1 и продукт 3 тоже являются аналогами. Также предполагается использование данной таблицы в запросах. Единственное что пришло в голову, реализовать метод который будет рекурсивно создавать все возможные связи при создании новой записи в таблице. Может быть есть более правильные и красивые варианты? |
|
11.07.2022, 13:07 | #2 |
Участник
|
1.
рекурсия и SQL - несовместимые вещи по определению. да, в современных SQL диалектах есть специальные операторы для рекурсии в запросах. но сразу понимайте, что рекурсия и SQL - это боль и страдания. 2. то, как вы описали задачу требует решения еще одной подзадачи: определить циклические графы и как то работать с ними. опять же, графы совместно с SQL - это боль. 3. стопудов люди работают с аналогами не так. я не помню ни одного товароведа, который определял бы аналоги через другие продукты. скорее всего, у них есть некий признак, который проставляется в продукт. одинаковый признак - аналог, разный признак - не аналог Продукт1, Аналог1 Продукт2, Аналог1 Продукт3, Аналог1 Продукт4, Аналог1 Продукт5, "" - пустышка не является аналогом никому, например Продукт6, Аналог2 ... 4. В Аксапте кроме продуктов аналогом может является (или не являться) первичная складская аналитика - цвета, размеры, конфигурации Продукт1, Цвет1, Аналог1 Продукт1, Цвет2, Аналог1 Продукт2, Цвет1, Аналог1 Продукт2, Цвет3, Аналог1 Продукт3, Цвет3, Аналог2 Продукт4, Цвет1, Аналог2 Продукт5, "", "" - пустышка в цвете означает "любой цвет", например. пустышка в аналоге не является аналогом никому, например Продукт6, Цвет1, Аналог2 |
|
|
За это сообщение автора поблагодарили: DesparioN (1). |
11.07.2022, 13:29 | #3 |
Участник
|
Благодарю. Группы - это то что доктор прописал
|
|
11.07.2022, 14:00 | #4 |
Участник
|
Ну... Давайте попробуем добить тему.
разные отделы в компании могут работать с продуктами с разной детализацией. разная детализация нужна, чтобы "меньше считать", "меньше печатать", "сделать красиво" для человека. суть "сделать красиво" в том, что человек выделяет некий мастер-продукт и говорит "вот его аналоги" (вариации). далее человек предполагает, что компьютер позволит ему установить параметры только для мастер-продукта. и, что компьютер самостоятельно применит эти параметры для аналогов. причем разные люди в разных отделах могут иметь разное мнение насчет того, как выделять мастер-продукт и что именно считать аналогами. в большинстве компаний договариваются, конечно. но бывало, что и не договаривались. самое интересное, что люди, которые просят "аналоги", могут совершенно не заморачиваться мастер-продуктом - типа мы установим параметр в любой аналог, а компьютер пусть сам решает как этот параметр распространить на остальные аналоги. в этом случае вполне можно реализовать группы аналогов. но это все равно не достаточно. все равно нужен функционал который работает: 1. с мастер-продуктом (выбрать мастер-продукт, напечатать название мастер-продукта в счете на оплату, зарезервировать любой аналог и т.п.) 2. с конкретным продуктом (складские остатки, инвентаризация, производство, счет для привередливого клиента с указанием конкретного аналога) =================== дык, вот... в ax2012 разработчики попытались в EcoRes. но очень сильно увлеклись интеркомпани и, можно сказать, запороли работу с вариантами-аналогами. посмотрите, проанализируйте. возможно сможете что-то использовать из EcoRes. =================== да, в конечном итоге, на техническом уровне SQL и таблиц, нужно свести к группам. И никаких графов-рекурсий. на бизнес-уровне, люди будут хотеть работать и с мастер-продуктом, и с конкретным продуктом. Последний раз редактировалось mazzy; 11.07.2022 в 14:04. |
|
|
За это сообщение автора поблагодарили: Vals (20), GEP442 (1). |