Данные чтения таблицы: какой тип таблицы лучше?

Что работает лучше (что быстрее возвращает запросы) с Tableau (программой только для чтения), когда Tableau подключен к таблицам данных через SQL Server? Несколько высоких и тонких столов, соединенных вместе, или один короткий и широкий стол?

Высокие и тонкие таблицы имеют много строк, но мало столбцов и соединены. В короткой и широкой таблице меньше строк, но больше столбцов.

Я считаю, что высокий и тонкий вариант возвращает запросы быстрее, потому что там меньше избыточных данных, меньше столбцов (создает более быструю индексацию), меньше NULL и меньше индексации (потому что меньше столбцов), но мне нужно по крайней мере второе мнение, поэтому, пожалуйста, дайте мне знать твое.

Причина, по которой меня интересует этот вопрос, заключается в повышении производительности запросов наших клиентов, когда они запрашивают у нашего сервера данные для визуализации своих визуализаций.


person pbars23    schedule 11.08.2014    source источник
comment
@Mihai Отредактированный вопрос. Надеюсь, его легче понять. Дайте мне знать, если необходимы дополнительные объяснения. Также я знаю, что столы не делятся на тонкие и широкие. Мой пример спрашивает, должен ли я иметь 1 широкую и короткую таблицу (деморализованную) или у меня должно быть несколько нормализованных таблиц (высокая и тонкая). Дайте мне знать, если я должен объяснить дальше.   -  person pbars23    schedule 12.08.2014


Ответы (2)


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

Имейте в виду, что Tableau не похож ни на Excel, ни на SQL, а это означает, что вы должны свести манипуляции с данными к минимуму, поскольку некоторые вычисления нелегко/невозможно выполнить в Tableau (а некоторые возможны, но требуют экспорта данных и повторного подключения к ним). Tableau следует использовать в основном для целей визуализации данных.

Кроме того, очень проблематично сравнивать разные показатели на одной и той же диаграмме. Это означает, что если вы хотите сравнить сумму (A) с суммой (B), вам придется построить 2 разных графика (а не помещать оба в одно и то же). Мне проще иметь несколько полей измерения и много измерений. Таким образом, я могу легко нарезать/сравнивать меры. В последнем примере вместо одной записи с показателями A и B у меня было бы 2 записи: одна с мерой A и одним измерением (говоря, что измеряется A) и одна с мерой B и одним измерением (в том же соответственно поля)

НО это не означает, что вы всегда должны использовать «высокие тонкие столы». Вам нужно увидеть, чего вы пытаетесь достичь и какой формат лучше соответствует вашим потребностям (и дизайну Tableau). И если вы не работаете с действительно большими таблицами и ваш анализ выполняется много раз в день (или в режиме реального времени) и производительность не является очень большой проблемой, вам следует сосредоточиться на том, что облегчает вашу жизнь (особенно когда вам нужно изменить и адаптируйте анализ позже).

А для производительности в Tableau я следую 3 правилам:

1) Всегда извлекать (данные в tde) - это намного быстрее, чем большинство других форматов баз данных (я не тестировал все, но это намного быстрее, чем csv, mdb, xls или SQL, подключенные напрямую)

2) Никогда не используйте ссылки Tableau. Если это не влияет на производительность (например, номенклатура для поля с низким диапазоном), лучше, чтобы вся ваша информация уже находилась в той же базе данных.

3) Удаление ненужной информации. Очень привлекательно иметь всю возможную информацию в базе данных, но это также сказывается на производительности. Я стараюсь хранить только ту информацию, которая необходима для анализа, в пределах необходимой мне гибкости. Фильтрация данных — это нормально, фильтрация по контексту — лучше, но фильтрация в экстракте или в самом источнике данных — лучшее решение.

person Inox    schedule 11.08.2014
comment
Спасибо за ваш пост. Я согласен с тем, что вы говорите. Кроме того, я не манипулирую данными из Tableau. Я просто читаю данные с Tableau. Кроме того, производительность — это проблема, которую я пытаюсь исправить, когда клиенты запрашивают данные в нашей базе данных для создания своих визуализаций Tableau. Я согласен с вашими советами в конце. Выдержки помогают, и удаление всех неиспользуемых полей в вашей выписке имеет большое значение. - person pbars23; 12.08.2014

После долгих исследований я нашел общий ответ. Как правило, и особенно с SQL Server и Tableau, вы хотите нормализовать свои таблицы, чтобы избежать избыточных данных и, следовательно, в вашей таблице меньше данных для сканирования, что ускоряет выполнение запросов. Однако вы не хотите нормализовать свои таблицы до такой степени, что соединения между таблицами фактически заставляют запрос выполняться дольше, чем если бы запрос просто отправлялся в одну короткую широкую таблицу. В конечном счете, вам просто нужно проверить, какая степень нормализации/денормализации лучше всего подходит для самого быстрого возврата запроса.

person pbars23    schedule 11.08.2014