#sql #tableau-api
#sql #tableau-api
Вопрос:
Мне нужно подготовить некоторые данные для подключения к tableau, и я испытываю трудности, потому что размер данных слишком велик для обработки tableau, поэтому я ищу идеи для эффективного кодирования этого в SQL.
Настройка:
- У меня 2 миллиона пользователей
- Существует 30 различных категорий, и каждый пользователь может попасть во многие. Например:
- Пользователь 1 — категория A, B и C
- Пользователь 2 — категория F
- Пользователь 3 — категория A, B
Чего я хочу:
- Выберите три категории и назначьте приоритет 1, приоритет 2 и приоритет 3
- Этот выбор не является статическим, поэтому сегодня я могу выбрать A, B, C, но завтра эти категории могут быть D, G, A
Итак, если у меня есть:
- Приоритет 1: A
- Приоритет 2: B
- Приоритет 3: C
- Мне нужно количество пользователей, которые попадают в категорию A
- Мне нужно количество пользователей, которые попадают в категорию B И не относятся к категории A
- Мне нужно количество пользователей, которые попадают в категорию C И не относятся к категории A или B
Моя первоначальная идея состояла в том, чтобы создать таблицу с одной строкой для каждого пользователя и одним столбцом «да / нет» для каждой категории, а затем агрегировать, но все же размер конечной таблицы слишком велик для обработки tableau.
Есть идеи?
Обновление: Моя идея состоит в том, чтобы подготовить таблицу с агрегированными числами и максимум несколькими тысячами строк, чтобы ее можно было обрабатывать с помощью tableau
Комментарии:
1. Можете ли вы дать нам больше информации о размере? Можете ли вы даже загрузить пользователей 2M? Потому что вам может потребоваться обновить конфигурацию и среду tableau, прежде чем что-либо еще
2. Моя идея состоит в том, чтобы подготовить таблицу с агрегированными числами и максимум несколькими тысячами строк, чтобы ее можно было обрабатывать с помощью tableau
Ответ №1:
Вы можете назначить каждой из 30 категорий уникальный заполнитель от 1 до 30. После этого каждому пользователю будет присвоено двоичное число из 30 цифр в зависимости от категорий, в которые он попадает. Затем это двоичное число можно преобразовать в десятичное число, наибольшее из которых может быть 2 ^ 31-1, т.е. 10-значное число, которое можно сохранить без формата exp.
Всякий раз, когда вам нужно будет увидеть категории, в которые попадает пользователь, это можно сделать, применив обратное преобразование, т.Е. десятичное в двоичное, а затем в строку с заполнением нулей с левой стороны. Из этой строки вы можете искать места по 1 в нужном месте.
Я думаю, вы можете попробовать эту методологию.
Комментарии:
1. Спасибо, но при этом количество перестановок не уменьшится, верно? Таким образом, конечное количество строк не изменится. Моя цель — получить таблицу с агрегированными числами и несколькими тысячами строк, чтобы ее можно было обрабатывать с помощью tableau