Агрегирование и дезагрегация степени 2/ Вопросы дизайна таблицы
У меня есть некоторые данные, и я пытаюсь отслеживать различные проблемы с оформлением документов для работы. Данные выглядят примерно так:
ID | Paperwork 1 | Paperwork 2 | Paperwork 3
1 | No Signature | No Signature | Missing Date
2 | Completed | No Signature | Missing Signature
3 | Missing Date | Completed | Completed
4 | None | Completed | Missing Signature
По N категориям документов, M различным идентификаторам или строкам и X различным возможным ответам в каждом поле, я пытаюсь определить, какой ответ на какой идентификатор и какая категория документов находится.
Я думал о двух разных конструкциях стола.
Двухколонный дизайн:
ID | Paperwork
1 | 1
2 | 4
3 | 10
4 | 257
С соответствующей кодовой базой
0 = No Paperwork 1
1 = No Paperwork 2
2 = No Paperwork 3
4 = Paperwork 1 Submitted Successfully
8 = Paperwork 2 Submitted Successfully
16 = Paperwork 3 Submitted Successfully
32 = Paperwork 1 Missing Date
64 = Paperwork 2 Missing Date
128 = Paperwork 3 Missing Date
256 = Paperwork 1 Missing Signature
512 = Paperwork 2 Missing Signature
1024 = Paperwork 3 Missing Signature
Так что мы просто узнаем, посмотрев на число в столбце документов, каковы проблемы с различными документами за период. В схеме с двумя столбцами ошибки будут:
Двухколонный дизайн:
ID | Paperwork
1 | No Paperwork 2
2 | Paperwork 1 Submitted Successfully, No Paperwork 2
3 | Paperwork 2 Submitted Successfully, No Paperwork 3
4 | Paperwork 1 Missing Signature, No Paperwork 2
Проблемы с этим дизайном: 1) Легко получить числа, чтобы поместить их в столбец документов - кто-то должен просмотреть все документы за этот период, и отметить различные проблемы или отсутствие проблем с каждой частью оформление документации. Как только эти проблемы найдены, каждому номеру присваивается номер, а затем эти цифры суммируются, чтобы найти общее число, которое охватывает все проблемы в данный период. Тем не менее, я не знаю, как сделать вывод текста из этих конкретных чисел, и я не хочу грубо форсировать список всех возможных выводов текста, потому что существует слишком много разных возможностей. Его можно несколько сузить, так как у вас не может быть готовой бумажки, в которой отсутствует подпись, но это звучит как слишком много возможностей. Поэтому мой вопрос: если я получу число 257, как я могу сказать, что 257 действительно 256+1? Мне нужно или я делаю это излишне сложным?
В качестве альтернативы, другой способ, который я придумал, - включить все ошибки в более двоичную переменную. Таким образом, вместо кодов ошибок, перечисленных выше, это будет выглядеть так:
Много столбцов
0 = No Paperwork
1 = Paperwork Completed
2 = There is an error with Paperwork 1
3 = There is an error with Paperwork 2
4 = There is an error with Paperwork 3
Таким образом, таблица будет:
ID | Paperwork 1 | Paperwork 2 | Paperwork 3
1 | 2 | 3 | 4
2 | 1 | 3 | 4
3 | 2 | 1 | 1
4 | 0 | 1 | 4
И затем, когда я пытаюсь запустить отчет о различных проблемах с оформлением документов, все, что мне нужно сделать, это иметь функцию поиска, которая подсчитывает, сколько экземпляров числа 2 в столбце документов 1, и находит соответствующий идентификатор с помощью Это. Затем я передал бы эту информацию своему коллеге и начальнику, и тогда они, в свою очередь, узнали бы, что есть проблема с этим листом бумаги для этого человека; но они не знали бы конкретно, в чем проблема, и должны были бы полагаться на непосредственное знание самих книг.
Проблема с этим дизайном состоит в том, что он неявно требует, чтобы люди сверились с моим коллегой, который управляет книгами, чтобы выяснить, в чем проблема с документами, и весь смысл моего участия в упражнении состоит в том, чтобы помочь ей с ее работой. и использовать возможности компьютеров, чтобы помочь ей с ее задачей. Таким образом, второй дизайн, похоже, не использует весь потенциал компьютерных технологий для решения задач.
Поэтому, помимо поставленного ранее вопроса, я полностью приветствую любые вопросы, замечания или указания по этому вопросу. Если у вас есть альтернативный дизайн стола, я тоже приветствую это.
Я заранее прошу прощения, если этот пост нарушил какие-либо политики стекопотока из-за того, что он не является прямым, я постарался сделать его как можно более прямым.
1 ответ
Чтобы ответить на ваш вопрос о "дезагрегации" 257 (то есть, по сути, найти его двоичное представление), вы, вероятно, захотите использовать побитовые операции: http://www.excely.com/excel-vba/bit-operations.shtml. Тем не менее, ваша вторая идея кажется намного лучше, поскольку она позволяет вам видеть данные более явно. В идеале, однако, ваш процесс, вероятно, будет еще лучше и проще в обслуживании, если вы перейдете к чему-то более сложному, чем Excel, например, к использованию скрипта Python и файла CSV (или даже базы данных, но это может потребовать дополнительных технических знаний и обслуживания).).