Как я могу уменьшить сложность? Подготовка данных, SQL Tableau

#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