Qlik Direct Discovery

 

661

Функция Direct Discovery в QlikView расширяет потенциальные варианты использования для Business Discovery, позволяя бизнес-пользователям выполнять ассоциативный анализ больших источников данных. Эта функция обеспечивает полный набор для ассоциативной работы программы QlikView в добавок к данным, поступающим непосредственно из больших источников данных, и позволяет совмещать большие данные и данные, хранящиеся в памяти. Direct Discovery позволяет использовать для анализа любые данные без ограничения масштабируемости.

Direct Discovery

Функция Direct Discovery объединяет возможности ассоциации наборов данных в памяти программы QlikView (Qlik Sense) с моделью запроса, где не все исходные данные загружаются непосредственно в модель данных QlikView. Агрегированный результат выполнения запроса передается обратно в интерфейс пользователя, поэтому набор данных Direct Discovery является частью ассоциативной работы. Можно перемещаться между данными в памяти и данными Direct Discovery, как в едином наборе данных.

Можно создавать диаграммы для анализа данных из объединенных наборов данных, делать выборки из данных в памяти или данных Direct Discovery, а также просматривать ассоциации данных с одинаковыми цветами характеристик QlikView: зеленый, белый и серый.

Чтобы использовать Direct Discovery в QlikView (Qlik Sense), необходимо использовать специальные функции в скрипте загрузки. Способ создания диаграмм из полей Direct Discovery несколько отличается от работы с другими источниками данных и, поскольку все данные не хранятся в памяти, могут возникнуть проблемы с производительностью при извлечении больших объемов данных.

Разница между Direct Discovery и данными в памяти

Модель в памяти

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

525

Вторая связанная таблица, загруженная в память, будет совместно использовать общее поле. Эта таблица может добавлять новые уникальные значения в общее поле или может совместно использовать существующие значения.

526

Direct Discovery

После загрузки полей таблицы с помощью оператора Direct Discovery LOAD (Direct Query) создается похожая таблица только с полями DIMENSION. Как и для полей в памяти, уникальные значения для полей DIMENSION загружаются в память. Но ассоциации между полями остаются в базе данных.

523

Значения поля MEASURE также остаются в базе данных.

524

Если определена структура Direct Discovery, поля Direct Discovery можно использовать вместе с определенными объектами диаграммы, а также их можно использовать для ассоциаций с полями в памяти. Если поле Direct Discovery используется, QlikView (Qlik Sense) автоматически создает соответствующий запрос SQL для запуска во внешнем источнике данных. После выполнения выборок значения связанных данных полей Direct Discovery используются в условиях WHERE запросов базы данных.

При выполнении каждой выборки диаграммы с полями Direct Discovery пересчитываются с учетом вычислений, выполняемых в таблице исходной базы данных, с помощью запроса SQL, созданного QlikView. Можно использовать функцию условия вычисления, чтобы определить, когда диаграммы должны быть пересчитаны. Пока условие не будет выполнено, QlikView не отправляет запросы для пересчета диаграмм.

Разница в производительности между полями в памяти и полями Direct Discovery

Обработка в памяти всегда выполняется быстрее, чем обработка в исходной базе данных. Производительность Direct Discovery отражается на производительности системы под управлением базы данных, обрабатывающей запросы Direct Discovery.

Можно использовать рекомендации для стандартной базы данных и настройки запросов для Direct Discovery. Все действия по настройке производительности необходимо выполнять в исходной базе данных. Direct Discovery не поддерживает настройку производительности запросов из документа QlikView. Однако можно выполнять асинхронные параллельные вызовы базы данных с помощью функции объединения подключений. Синтаксис скрипта загрузки для настройки функции объединения:

SET DirectConnectionMax=10;

Кэширование QlikView также повышает удобство работы пользователей.

Производительность Direct Discovery с полями DIMENSION можно повысить с помощью отсоединения некоторых полей от ассоциаций. Для этого используется ключевое слово DETACH в DIRECT QUERY. Хотя отсоединенные поля не запрашиваются для ассоциаций, они по-прежнему являются частью фильтров, ускоряя время выборки.

Несмотря на то что данные полей в памяти QlikView (Qlik Sense) и полей Direct Discovery DIMENSION хранятся в памяти, способ их загрузки влияет на скорость загрузки в память. Поля в памяти QlikView хранят только одну копию значения поля при наличии нескольких экземпляров одного значения. Однако загружаются все данные поля, а затем выполняется сортировка дубликатов.

Поля DIMENSION тоже хранят только одну копию значения поля, но сортировка повторяющихся значений выполняется в базе данных до загрузки в память. При работе с большими объемами данных, как обычно в Direct Discovery, данные загружаются намного быстрее с помощью DIRECT QUERY, чем это было бы с помощью загрузки SQL SELECT, используемой для полей в памяти.

Разница между данными в памяти и данными базы данных

DIRECT QUERY используется с учетом регистра при выполнении ассоциаций с данными в памяти. Direct Discovery выбирает данные из баз данных источника в соответствии с необходимостью учета регистра в базе данных. Если в базе данных регистр не учитывается, запрос Direct Discovery может возвращать данные, которые запрос в памяти не возвращает. Например, если следующие данные существуют в базе данных, в которой регистр не учитывается, запрос Direct Discovery значения "Red" вернет все четыре строки.

ColumnA ColumnB
red one
Red two
rED three
RED four
 

С другой стороны, выборка в памяти "Red," вернет только:

Red two

QlikView нормализует данные до такой степени, что выдает совпадения выбранных данных, которые база данных не находит. Таким образом, запрос в памяти возвращает больше совпадающих значений, чем запрос Direct Discovery. Например, в следующей таблице значения для числа "1" отличаются расположением пробелов вокруг них:

ColumnA ColumnB
' 1' space_before
'1' no_space
'1 ' space_after
'2' two
 

Если выбрать "1" на панели список для ColumnA с данными QlikView в стандартном формате в памяти, первые три строки будут связаны:

' 1' space_before
'1' no_space
'1 ' space_after
 

Если панель список содержит данные Direct Discovery, выборка "1" может связать только "no_space". Совпадения, найденные для данных Direct Discovery, зависят от базы данных. Некоторые возвращают только "no_space", а некоторые, как SQL Server, возвращают "no_space" и "space_after".

Кэширование и Direct Discovery

Кэширование QlikView сохраняет состояния выборки запросов в памяти. Поскольку выполняются одинаковые типы выборок, QlikView (Qlik Sense) использует запрос из кэша вместо выполнения запроса исходных данных. Если выборки разные, запрос SQL отправляется в исходные данные. Кэшированные результаты совместно используются пользователями.

Пример:
1. Пользователь применяет начальную выборку. SQL проходит по основному источнику данных.
2. Пользователь очищает выборку и применяет ту же выборку в качестве начальной. Возвращаются результаты из кэша, SQL не проходит по основному источнику данных.
3. Пользователь применяет другую выборку. SQL проходит по основному источнику данных.

Можно установить ограничение времени для кэширования с помощью системной переменной DirectCacheSeconds. При достижении этого предела времени QlikView очищает кэш для результатов выполнения запросов Direct Discovery, созданных для предыдущих выборок. Затем QlikView запрашивает исходные данные для выборок и повторно создает кэш для указанного предела времени.

По умолчанию время кэширования для результатов выполнения запроса Direct Discovery составляет 30 минут, если не используется системная переменная DirectCacheSeconds.

Типы полей Direct Discovery

В Direct Discovery существует три типа полей данных: DIMENSION, MEASURE и DETAIL. Типы задаются согласно полям данных, если выполнена выборка Direct Discovery с помощью оператора Direct Query в скрипте загрузки.

Все поля Direct Discovery можно использовать в сочетании с полями в памяти. Обычно поля с дискретными значениями, которые используются в качестве измерений, загружаются с ключевым словом DIMENSION, тогда как числа, используемые только при агрегировании, должны быть отмечены как поля MEASURE. Поля DIMENSION не могут использоваться в выражениях объекта.

В следующей таблице описаны характеристики и использование типов полей Direct Discovery.

Тип поля В памяти? Формирует ассоциацию? Используется в выражениях диаграммы?
DIMENSION Да Да Да
MEASURE Нет Нет Да
DETAIL Нет Нет Нет
 

Поля DIMENSION

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

Поля MEASURE

Поля MEASURE, с другой стороны, распознаются на «уровне метаданных». Поля MEASURE не загружаются в память (они не появляются в представлении таблицы). Цель — разрешить агрегирования данных в полях MEASURE, чтобы занять место в базе данных, а не в памяти. Тем не менее, поля MEASURE можно использовать в выражениях без изменения синтаксиса выражения. В результате конечный пользователь четко видит, как используются поля Direct Discovery из базы данных.

Следующие функции агрегирования можно использовать с полями MEASURE.

Пример:
Sum — функция диаграммы
Avg — функция диаграммы
Count — функция диаграммы
Min — функция диаграммы
Max — функция диаграммы

Поля DETAIL

Поля DETAIL предоставляют информацию или подробные сведения, которые можно отобразить, но нельзя использовать в выражениях диаграммы. Поля DETAIL можно использовать только в функциях агрегирования Count и можно просматривать только в элементе Таблица. Поля, созданные как DETAIL, обычно содержат данные, которые нельзя агрегировать содержательным способом, таким как комментарии.

Любое поле можно обозначить, как поле DETAIL.

Источники данных, поддерживаемые в Direct Discovery

QlikViewDirect Discovery может использоваться для следующих источников данных с 32-разрядными и 64-разрядными подключениями.

Пример:
 — Источники данных ODBC/OLEDB — поддерживаются все источники ODBC/OLEDB, включая SQL Server, Teradata и Oracle.
 — Настраиваемые коннекторы с поддержкой SQL — коннектор SAP SQL, настраиваемые коннекторы QVX для хранилищ данных с поддержкой SQL.

Поддерживаются как 32-разрядные, так и 64-разрядные подключения.

Ограничения при использовании Direct Discovery

Поддерживаемые типы данных

В Direct Discovery поддерживаются все типы данных, однако в некоторых случаях в QlikView (Qlik Sense) необходимо определить отдельные форматы источников данных. Это можно сделать в скрипте загрузки, используя синтаксис "SET Direct…Format".

Direct Discovery поддерживает выбор расширенных данных Юникода путем использования стандартного формата SQL для строковых литералов расширенных символов (N’<расширенная строка>’), как это требуют некоторые базы данных (в частности SQL Server). Этот синтаксис можно включить для Direct Discovery с помощью переменной скрипта DirectUnicodeStrings. Если установить для этой переменной значение "true", то перед строковыми литералами будет использоваться "N".

Безопасность

При использовании Direct Discovery необходимо придерживаться следующих рекомендаций по безопасности:

  • Все пользователи, использующие одно приложение с функцией Direct Discovery, используют одно подключение. Сквозная проверка подлинности и отдельные учетные данные для каждого пользователя не поддерживаются.
  • Секция доступа поддерживается только в режиме сервера.
  • Можно выполнять пользовательские операторы SQL в базе данных с помощью ключевого выражения NATIVE так, чтобы для подключения к базе данных, настроенного в скрипте загрузки, использовалась учетная запись, для которой база данных доступна только для чтения.
  • В Direct Discovery нет функции ведения журнала, но можно использовать функцию трассировки ODBC.
  • Можно заполнять базу данных с помощью запросов от клиента.
  • Можно получить подробные сообщения об ошибках из файлов журнала сервера.

Не поддерживаемые функции QlikView

Вследствие интерактивной работы и характерного для SQL синтаксиса в Direct Discovery некоторые функции не поддерживаются:

  • Расширенные вычисления (анализ множества, сложные выражения) вычисляемые измерения
  • Сравнительный анализ (другие состояния) в объектах, которые используют поля Direct Discovery
  • Функция поиска не поддерживает поля Direct DiscoveryMEASURE и DETAIL
  • Бинарная загрузка из приложения, которое обращается к таблице Direct Discovery
  • Цикл и сокращение (Loop and Reduce)
  • Синтетические ключи в таблице Direct Discovery
  • Присвоение имен таблицам в скрипте не применимо к таблице Direct Discovery
  • Использование подстановочного знака * после ключевого слова DIRECT QUERY в скрипте загрузки(DIRECT QUERY *)
  • Таблицы базы данных Oracle со столбцами данных типа LONG не поддерживаются.
  • Большие целые числа в научном представлении за пределами диапазона [-9007199254740990, 9007199254740991] могут приводить к ошибкам округления и неопределенному поведению.

Поддержка нескольких таблиц в Direct Discovery

Можно использовать Direct Discovery для загрузки нескольких таблиц или для просмотра с помощью функции объединения ANSI SQL. В одной диаграмме все меры должны быть из одной логической таблицы в QlikView, но она может состоять из нескольких таблиц из источника, связанных с помощью операторов join. Однако в одной диаграмме можно использовать измерения из разных таблиц.

Например, можно связать таблицы, загруженные в Direct Discovery с помощью предложения Where или Join.

Связывание таблиц Direct Discovery с помощью предложения Where

В этом примере скрипта данные загружаются из базы данных AW2012. Таблицы Product и ProductSubcategory связываются с помощью предложения Where, используя общее поле ProductSubCategoryID.

Пример:
Product_Join:
DIRECT QUERY
DIMENSION
[ProductID],
[AW2012].[Production].[Product].[Name] as [Product Name],
[AW2012].[Production].[ProductSubcategory].[Name] as [Sub Category Name],
Color,
[AW2012].[Production].[Product].ProductSubcategoryID as [SubcategoryID]
MEASURE
[ListPrice]
FROM [AW2012].[Production].[Product],
[AW2012].[Production].[ProductSubcategory]
WHERE [AW2012].[Production].[Product].ProductSubcategoryID =
[AW2012].[Production].[ProductSubcategory].ProductSubcategoryID ;

Связывание таблиц Direct Discovery с помощью предложений Join On

Также можно использовать предложения Join On для связи таблиц Direct Discovery. В этом примере оператора выполняется присоединение таблицы SalesOrderHeader к таблице SalesOrderDetail с помощью поля SalesOrderID, а также присоединение таблицы Customer к таблице SalesOrderHeader с помощью поля Customer ID.

В этом примере мы создаем меры из одной логической таблицы, что означает, что их можно будет использовать в одной диаграмме. Например, можно создать диаграмму, используя в качестве мер значения SubTotal и OrderQty.

Невозможно обращаться к таблицам по псевдониму в предложении FROM. Необходимо использовать полное имя таблицы.

Использование вложенных запросов с помощью Direct Discovery

Если ключевое поле, присоединяемое к таблице, имеет много элементов (то есть содержит большое количество уникальных значений), выборка в QlikView может создать очень большой оператор SQL, а предложение WHERE key_field IN может содержать большое количество значений. В таком случае можно разрешить QlikView (Qlik Sense) вместо этого создать вложенные запросы.

Direct Discovery с QlikView Server и Publisher

Параметры QlikView Server

Некоторые параметры QlikView Server следует проверить при использовании Direct Discovery в приложениях QlikView.

Эти параметры влияют на все документы QlikView в данном QlikView Server.

Object Calculation Time Limit

Поскольку функция Direct Discovery запрашивает внешнюю систему из QlikView, время вычисления диаграммы зависит от производительности базовой системы. Для параметра Object Calculation Time Limit на консоли управления QlikView Management Console следует задать значение, которое обеспечит наличие достаточного времени для того, чтобы диаграмма QlikView получила результаты выполнения запроса Direct Discovery от источника данных. Этот параметр находится на вкладке Performance в QlikView Server на консоли управления QlikView Management Console.

Макс. кол-во символов в диаграммах

Этот параметр позволяет задавать число точек диаграммы, отображаемых в диаграммах QlikView. Обратите внимание на то, что запрос Direct Discovery может вернуть много уникальных значений. Установите этот параметр так, чтобы приложение QlikView отображало необходимое число точек в диаграммах.
Параметр времени ожидания QVS в файле Config.xml

Когда функция Direct Discovery используется для запроса во внешнюю систему, отдельную от QlikView Server, следует настроить время ожидания сервера в файле config.xml, чтобы предоставить приложению QlikView достаточно времени на обратное получение результатов запроса. Недостаток времени на выполнение запросов при использовании клиента Ajax приводит к ошибке «Потеря подключения к серверу».

Значение по умолчанию равно 60 секундам. Может потребоваться увеличить значение параметра до максимального времени запроса. Файл config.xml находится в каталоге C:\ProgramData\QlikTech\WebServer. XML-тег — <QvsTimeout>. Обратите внимание, что при операциях обновления происходит перезапись параметра на значение по умолчанию.

QlikView Publisher

QlikView Publisher требует доступа на чтение к таблицам базы данных, используемым функцией Direct Discovery. Когда приложения QlikView, которые применяют Publisher, используют Direct Discovery, убедитесь, что учетная запись службы под управлением Publisher имеет требуемый доступ на чтение. Если это условие не выполняется, то служба Publisher не сможет прочитать таблицу Direct Discovery во время запланированных обновлений данных.

 

Тест-драйв Qlik

Вы можете испытать все возможности QlikView (Qlik Sense) самостоятельно, в том числе и на собственных данных. Отправляйте нам запрос на адрес info@fbconsult.ru и мы ответим на любые Ваши вопросы и предоставим Вам ПОЛНОФУНКЦИОНАЛЬНУЮ версию QlikView для изучения и тестирования на Ваших данных.

Компания "ФБ Консалт" предлагает Вам уникальную возможность бесплатно протестировать полнофункциональную платформу бизнес-аналитики нового поколения Qlik (QlikView либо Qlik Sense) на Ваших данных, чтобы понять насколько она Вам подходит.

509

Более подробную информацию о предложении Вы можете узнать на нашем сайте.

 

ФБ Консалт

Компания ФБ Консалт является официальным партнером компании QlikTech и предлагает весь спектр услуг по разработке и внедрению решений на базе передового продукта бизнес-аналитики нового поколения – QlikView.

Нас выбирают лидеры отраслей
Решениям от компании ФБ Консалт доверяют лидеры отраслей.
Посмотрите список наших клиентов на нашем сайте.

Свяжитесь с нами


Более подробную информацию Вы можете получить, позвонив в "ФБ Консалт" по тел.: +7 (495) 781–6400 или отправив запрос по электронной почте: info@fbconsult.ru. Специалисты компании с радостью ответят на все интересующие Вас вопросы. Обращайтесь!


Подписка

RSS-материал