Часть 2. Знакомство с загрузкой данных

Часть 2. Знакомство с загрузкой данных

Для загрузки данных используются операторы LOAD или SELECT. Каждый из них создает внутреннюю таблицу. Таблица всегда отображается как список, каждая запись (строка) в которой является новым экземпляром типа объекта, а каждое поле (столбец) — специальным атрибутом или свойством объекта.

Правила

При загрузке данных в программу QlikView применяются следующие правила:

  • Программа QlikView не делает различия между таблицами, созданными операторами LOAD и SELECT. Таким образом, если загружается несколько таблиц, то не имеет значения, загружены они с помощью оператора LOAD или SELECT либо комбинации этих двух операторов.
  • Порядок полей в операторе или исходной таблице базы данных не имеет значения для логики программы QlikView.
  • Имена полей используются в дальнейших процессах для идентификации полей и установления связей. Значения вводятся с учетом регистра, что часто приводит к необходимости переименования полей в скрипте.
Выполнение скрипта

Примерный порядок событий для стандартных операторов LOAD или SELECT показан ниже:

  1. Расчет выражений.
  2. Изменение имен полей с помощью оператора as.
  3. Изменение имен полей с помощью оператора alias.
  4. Уточнение имен полей.
  5. Сопоставление данных, если совпадает имя поля.
  6. Сохранение данных во внутренней таблице.

Поля представляют собой основной объект, включающий данные, в программе QlikView. Поле, как правило, включает определенное число значений, которые называются значениями поля. В терминологии баз данных можно сказать, что данные, обрабатываемые программой QlikView, поступают из файлов данных. Файл состоит из нескольких полей, в которых каждый элемент данных является записью. Термины «файл», «поле» и «запись» эквивалентны терминам «таблица», «столбец» и «строка» соответственно. Логика AQL QlikView работает только с полями и значениями полей.

Данные полей извлекаются скриптом с помощью операторов LOAD, SELECT или Binary. Единственный способ изменить данные в поле — повторно запустить скрипт. Пользователь не может управлять фактическими значениями полей из макета или посредством автоматизации. После передачи в программу QlikView данные доступны только для просмотра, логических выборок и вычислений.

Значения полей состоят из числовых или буквенно-числовых (текстовых) данных. Числовые значения фактически имеют двойные значения: числовое значение и текущее форматированное текстовое представление. В объектах листа и т. п. отображаются только последние.

Содержимое поля можно представить в списке.

Теги полей

Теги полей позволяют добавлять метаданные в поля в используемой модели данных. Существует два разных типа тегов полей.

Системные теги полей

Теги системных полей создаются автоматически при выполнении скрипта и загрузке данных. Некоторыми тегами в скрипте можно управлять. Перед системными тегами всегда указывается знак $.

Пользовательские теги полей

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

Системные теги полей

Следующие системные теги полей создаются автоматически в конце выполнения скрипта.

Системное поле, которое создается QlikView во время выполнения скрипта.

См.: Системные поля

См.: Синтетические ключи

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

Можно использовать системные переменные HidePrefixи HideSuffix, чтобы указать, какое поле необходимо скрыть.

Следующие теги, которые пользователь может включать и отключать, задаются в диалоговом окне Свойства документа: Таблицы:

  • $dimension — обозначает поле, рекомендованное для использования в измерениях диаграммы, списках и т. д.
  • $measure — обозначает поле, которое рекомендуется использовать в выражениях.
Системные поля

Помимо полей, извлекаемых из источника данных, системные поля также создает QlikView. Такие поля начинаются со знака «$» и их можно выводить в окнах со списками как и обычные поля. Системные поля, которые обычно создаются во время выполнения скрипта, используются главным образом в качестве дополнительного средства при разработке документа.

Отображение системных полей

Выполните следующие шаги:

  1. Щелкните правой кнопкой мыши лист и выберите параметр Системные поля.
  2. Установите флажок Показать системные поля.

Теперь системные поля доступны как любые другие.

Доступные системные поля

Можно отобразить следующие системные поля:

$Table Отображает все внутренние таблицы, загружаемые скриптом. При выборе отдельной таблицы в области заголовка окна со списком появится символ информации. При нажатии этого символа можно просмотреть таблицу из файла. $Field Отображает поля, которые считываются из таблиц. Если для этого списка установить Показать частоту на странице Свойства списка: Общие, то можно легко определить ключевые поля, встречающиеся в нескольких внутренних таблицах. $Fields Числа в этом окне со списком соответствует числу полей в разных таблицах. $FieldNo В этом окне со списком отображается положение полей в таблицах. $Rows В этом окне со списком отображается число строк в таблицах. $Info Если в документе используются информационные таблицы, то в этом окне отобразятся их названия.

Системная таблица

QlikView может автоматически создать сводную таблицу, использующую системные поля. Таблица получает имя System Table и включает два измерения: $Field и $Table, а также выражение only([$Field]). Системная таблица по умолчанию сортируется по частоте. Объект системной таблицы недоступен для клиентов сервера QlikView (AJAX и клиенты Plugin).

Создание системной таблицы

Выполните следующие шаги:

  1. Щелкните правой кнопкой мыши лист и выберите параметр Создать объект листа.
  2. Выберите параметр Системная таблица.
Поля ввода

QlikView поддерживает особый тип поля, которое можно изменить без выполнения скрипта — поле ввода.

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

При использовании полей ввода скрипт создает метку-заполнитель для каждого значения поля, которое может впоследствии редактироваться для размещения в нем новых данных. Любое поле можно сделать полем ввода путем его внесения в оператор inputfield в скрипте до того, как он появится в операторе LOAD или SELECT.

Значения поля ввода можно изменить в ячейках списка, ячейках простой таблицы и в ячейках выражений табличной диаграммы. Редактировать можно только те списки и столбцы таблицы, которые содержат поля ввода. При наведении курсора на редактируемую ячейку можно увидеть значок ввода. Нажатием на значок можно установить ячейку в режим редактирования ввода. Для перемещения по ячейкам во время нахождения в режиме редактирования ввода можно использовать клавиши со стрелками вверх/вниз. Каждый раз при вводе новых значений весь документ QlikView будет пересчитан в автоматическом режиме.

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

Можно указать относительное изменение.

Применяется следующий синтаксис (n — число):

%+n увеличивает текущее значение на n% %-n уменьшает текущее значение на n% +=n увеличивает текущее значение на n -=n уменьшает текущее значение на n *=n умножает текущее значение на n /=n делит текущее значение на n

Для извлечения и установки значений программным путем существуют также API автоматизации.

Группы полей

Основным отличием между QlikView и многими другими средствами просмотра, инструментами OLAP и т.п. является отсутствие необходимости задавать иерархию вводимых данных. Уникальная внутренняя логика QlikView позволяет получать доступ к любому полю в виде полного измерения в любом порядке. В большинстве случаев эта возможность играет огромное значение.

Однако иногда заданная иерархия обеспечивает более эффективное отображение данных. QlikView предлагает возможность задавать группы полей. Группы могут быть иерархическими (детализированными) или неиерархическими (циклическими).

Группы создаются на странице Группы диалогового окна Свойства документа. Их можно использовать в диаграммах, в которых они отображаются вместе с доступными полями в раскрывающихся списках измерений в разделе Измерение.

Группировать можно любые поля.

Иерархические группы (детализированные)

Если несколько полей формируют естественную иерархию, имеет смысл создать группу детализации. Типичные примеры иерархических групп:

Время: Год, Квартал, Месяц

Географическое положение: Континент, Страна, Штат, Город

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

В первом примере "Год" будет использоваться в качестве измерения диаграммы, пока не будет выбран один год. Затем диаграмма будет отображать "Квартал". Если выбран один квартал, диаграмма переключится на "Месяц".

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

Иерархические группы (детализированные)

Если несколько полей формируют естественную иерархию, имеет смысл создать группу детализации. Типичные примеры иерархических групп:

Время: Год, Квартал, Месяц

Географическое положение: Континент, Страна, Штат, Город

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

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

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

Если одна группа детализации используется в нескольких измерениях спецификации диаграммы, появляется специальная функция. При втором появлении группы используемое поле автоматически переносится из предыдущего шага списка полей группы. Например, при создании двумерной диаграммы, в которой группа Географическое положение используется и как главное, и как второстепенное измерение, первоначально будут использоваться группы Континент и Страна. После выбора определенного континента будут использоваться группы Страна и Штат.

Неиерархические группы (циклические)

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

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

Логические таблицы

Каждый оператор LOAD или SELECT создает таблицу. Обычно в программе QlikView результаты каждого из этих операторов обрабатываются как одна логическая таблица. Однако из этого правила существует несколько исключений:

  • Если при применении двух или более операторов в полученной таблице содержатся поля с идентичными именами, таблицы будут объединены и будут обрабатываться как одна логическая таблица.
  • Если перед оператором LOAD или SELECT вставлен один из следующих префиксов, данные будут изменяться или обрабатываться по-разному:

После загрузки данных логические таблицы будут связаны.

Имена таблицы

Таблицам QlikView присваиваются имена при сохранении в базе данных QlikView. Имена таблиц можно использовать, например, для операторов LOAD с предложением resident или с выражениями, содержащими функцию peek, а также просматривать в системном поле $Table макета.

Присвоение имен таблицам выполняется по следующим правилам:

Если перед операторами LOAD или SELECT задана метка, то она будет использоваться в качестве имени таблицы. В конце метки должно стоять двоеточие.

См.: Метки таблицы

Существует три отдельных домена для имен таблицы: section access, section application и таблицы сопоставления. Имена таблиц, сгенерированные в section access и section application, рассматриваются по отдельности. Если упоминаемое имя таблицы не найдено в разделе, программа QlikView выполняет поиск также и в другом разделе. Таблицы сопоставления обрабатываются отдельно и не имеют связи с двумя другими доменами имен таблиц.

Метки таблицы

Таблицу можно отметить для обращения к ней впоследствии, например, с помощью оператора LOAD с предложением resident или с выражениями, содержащими функцию peek. Метка, которая может представлять собой произвольную строку из цифр и символов, должна располагаться перед первым оператором LOAD или SELECT, который создает таблицу. В конце метки должно стоять двоеточие «:».

Метки, содержащие пробелы, должны заключаться в одинарные или двойные кавычки либо квадратные скобки.

Ассоциации между логическими таблицами

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

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

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

Поэтому ассоциация практически аналогична объединению. Единственным различием между ними является то, что объединение выполняется при выполнении скрипта, при этом в результате объединения обычно создается логическая таблица. Ассоциация создается после создания логической таблицы: ассоциации всегда создаются между логическими таблицами.

Сравнение ассоциации QlikView с SQL естественным объединениемouter join

Ассоциация QlikView напоминает SQL естественное объединение outer join. Однако ассоциация имеет более общие свойства: outer join в SQL обычно является односторонней проекцией одной таблицы на другую. Результатом ассоциации всегда является полное (двунаправленное) стандартное объединение outer join.

Информация о частотности в полях для ассоциирования

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

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

Ограничения для ассоциирования полей
  1. В списке, в котором отображается поле, не может отображаться частота.
  2. Для большинства статистических сущностей окна статистических данных недоступны.
  3. В диаграммах невозможно создавать выражения, содержащие функции, зависимые от данных частоты (такие как функции Sum, Count и значение Average) для поля, пока активен модификатор Distinct. После каждой повторной загрузки все выражения диаграммы в программе QlikView будут исследованы на предмет наличия неоднозначных случаев, возникших в результате изменений структур данных. Если будут найдены неоднозначные выражения, на экране отобразится предупреждение и это выражение будет деактивировано. Пока проблема не будет устранена, это выражение невозможно снова активировать. Если активирован файл журнала, все неоднозначные выражения будут включены в файл журнала.
Обходной прием

Существует простой способ преодоления этих ограничений. Еще раз загрузите поле из таблицы, в которой должно быть выполнено вычисление частот, и сохраните его с новым именем. Затем новое поле можно использовать для создания списка частот, статистических данных или для вычислений в диаграммах.

Синтетические ключи

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

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

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

Работа с синтетическими ключами

Проблему с появлением синтетических ключей в скрипте загрузки можно решить несколькими способами:

Убедитесь, что в качестве ключей используются только поля, логически связывающие две таблицы.

  • Такие поля, как «Comment», «Remark» и «Description» могут находиться в нескольких таблицах без связи с чем-либо, и, таким образом, не должны использоваться как ключи.
  • Такие поля, как «Date», «Company» и «Name» могут находиться в нескольких таблицах и иметь одинаковые значения, но, тем не менее, разные роли (Дата заказа/Дата отправки, Компания клиента/Компания поставщика). В таких случаях они не должны использоваться как ключи.

Убедитесь, что не используются лишние поля, только необходимые. Например при использовании даты в качестве ключа необходимо убедиться, что поля «year», «month» или «day_of_month», относящиеся к одной дате, загружены не более чем из одной внутренней таблицы.

При необходимости формируйте собственные несоставные ключи. Обычно это выполняется путем объединения строк внутри функции скрипта AutoNumber.

Типы данных в QlikView

Программа QlikView поддерживает правильную обработку текстовых строк, чисел, дат, значений времени, временных меток и валюты. Эти данные можно сортировать, отображать в нескольких различных форматах, также использовать в вычислениях. Например, это означает, что даты, значения времени и метки времени можно складывать и вычитать друг из друга.

Представление данных внутри программы QlikView

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

  1. Строковое представление доступно всегда и представляет собой то, что отображается в списках и других объектах листа. Форматирование данных в списках (числовой формат) влияет только на строковое представление.
  2. Числовое представление доступно только в том случае, если данные можно интерпретировать как действительное число. Числовое представление используется для всех числовых расчетов и числовой сортировки.

Если несколько элементов данных, считываемых в одно поле, имеют одинаковое числовое представление, то они будут рассматриваться как одно и то же значение и все использовать первое обнаруженное строковое представление. Пример: числа 1,0, 1 и 1,000, считываемые в указанном порядке, будут иметь числовое представление 1 и исходное строковое представление 1.0.

Интерпретация чисел

При загрузке данных, содержащих числа, валюту или даты, они будут интерпретированы по-разному в зависимости от того, определен ли тип данных. В этом разделе описано, как данные интерпретируются в двух разных случаях.

Данные со сведениями о типе

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

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

Далее перечислены форматы по умолчанию для различных типов данных:

  • целые числа, числа с плавающей точкой: настройка по умолчанию для числа
  • валюта: настройка по умолчанию для валюты
  • время, дата, метка времени: форматирование стандарта ISO

Настройки по умолчанию для чисел и валют определяются с помощью переменных интерпретации чисел скрипта или в настройках операционной системы (панель управления).

См.: Переменные интерпретации числа

Данные без сведений о типе

Для данных без определенной информации о форматировании из источника (например, данные из текстовых файлов или данные ODBC с общим форматом) ситуация становится более запутанной. Конечный результат будет зависеть как минимум от шести различных факторов:

  1. Способ записи данных в базу данных источника
  2. Настройки операционной системы для числа, даты, времени, даты и т. п. (Панель управления)
  3. Использование дополнительных переменных интерпретации чисел в скрипте
  4. Использование дополнительных функций интерпретации в скрипте
  5. использования дополнительных функций форматирования в скрипте;
  6. элементов управления форматированием чисел в документе.

Программа QlikView пытается интерпретировать входные данные как число, дату, время и т. д. Если в данных используются системные настройки по умолчанию, интерпретация и форматирование отображения выполняется в программе QlikView автоматически, и пользователю не нужно изменять скрипт или какие-либо настройки в программе QlikView. Существует простой способ определения, правильно ли были интерпретированы входные данные: числовые значения выравниваются в списках по правом краю, а текстовые строки – по левому.

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

Программа QlikView будет интерпретировать данные как:

  1. Число в соответствии с форматом по умолчанию для чисел.
  2. Дата в соответствии с форматом по умолчанию для даты.
  3. Метка времени в соответствии с форматом по умолчанию для времени и даты.
  4. Время в соответствии с форматом по умолчанию для времени.
  5. Дата приводится в соответствии со следующим форматом: yyyy-MM-dd.
  6. Метка времени приводится в соответствии со следующим форматом: YYYY-MM-DD hh:mm[:ss[.fff]].
  7. Время приводится в соответствии со следующим форматом: hh:mm[:ss[.fff]].
  8. Деньги приводятся в соответствии с форматом по умолчанию для валюты.
  9. Число с элементом '.' в качестве символа для разделения десятичных разрядов и ',' в качестве разделителя тысяч при условии, что ни для десятичного разделителя, ни для разделителя тысяч не указан знак ','.
  10. Число с элементом ',' в качестве символа для разделения десятичных разрядов и ',' в качестве разделителя тысяч при условии, что ни для десятичного разделителя, ни для разделителя тысяч не указан знак '.'.
  11. Текстовая строка. Данная последняя проверка никогда не имеет отрицательного результата: если данные можно считать, то их всегда можно интерпретировать как строку.

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

После того, как программа QlikView интерпретирует данные как дату или время, можно изменить формат даты или времени в свойствах диаграммы.

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

Интерпретация даты и времени

Программа QlikView сохраняет каждое значение даты, времени и метки времени, обнаруженное в данных, как серийный номер даты. Серийный номер даты используется для дат, значений времени и меток времени, а также в арифметических вычислениях на основе записей даты и времени. Таким образом, можно складывать и вычитать значения даты и времени, сравнивать временные интервалы и т. д.

Серийный номер даты – это (действительное) число дней, прошедших с 30 декабря 1899 г., т. е. формат QlikView идентичен системе дат 1900, которая используется в Microsoft Excel и других программах, в диапазоне от 1 марта 1900 г. до 28 февраля 2100 г. Например, 33857 соответствует 10 сентября 1992 г. За пределами этого диапазона программа QlikView использует ту же систему дат, расширенную до григорианского календаря.

Серийный номер для значения времени представляет собой число от 0 до 1. Серийный номер 0.00000 соответствует 00:00:00, а 0.99999 соответствует 23:59:59. Смешанные числа указывают дату и время: серийный номер 2.5 означает 1 января 1900 г., полдень.

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

См.: Переменные интерпретации числа

См.: Функции форматирования

1997–08–06 хранится в виде: 35648 09:00 хранится в виде: 0.375 1997–08–06 09:00 хранится в виде: 35648.375

35648 в числовом формате 'D/M/YY' отображается как: 6/8/97 0.375 в числовом формате 'hh.mm' отображается как: 09.00

Программа QlikView следует установленным правилам при попытке интерпретации дат, времени и данных других типов. Однако окончательный результат будет зависеть от нескольких факторов, как описано выше.

В этих примерах предполагаются следующие настройки по умолчанию:

  • Десятичный разделитель числа: .
  • Краткий формат даты: YY-MM-DD
  • Формат времени: hh:mm

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

Исходные данные Интерпретация программы QlikView по умолчанию Формат даты 'YYYY-MM-DD' Формат даты 'MM/DD/YYYY' Формат времени 'hh:mm' Формат числа '# ##0.00' 0.375 0.375 1899–12–30 12/30/1899 09:00 0.38 33857 33857 1992–09–10 09/10/1992 00:00 33 857.00 97–08–06 97–08–06 1997–08–06 08/06/1997 00:00 35 648.00 970806 970806 4557–12–21 12/21/4557 00:00 970 806.00 8/6/97 8/6/97 8/6/97 8/6/97 8/6/97 8/6/97

В следующей таблице показаны различные представления, когда данные считываются в программу QlikView с помощью функции интерпретации в скрипте date#( A, 'M/D/YY'):

Исходные данные Интерпретация программы QlikView по умолчанию Формат даты 'YYYY-MM-DD' Формат даты 'MM/DD/YYYY' Формат времени 'hh:mm' Формат числа '# ##0.00' 0.375 0.375 0.375 0.375 0.375 0.375 33857 33857 33857 33857 33857 33857 97–08–06 97–08–06 97–08–06 97–08–06 97–08–06 97–08–06 970806 970806 970806 970806 970806 970806 8/6/97 8/6/97 1997–08–06 08/06/1997 00:00 35 648.00

Инструкции по данным и полям

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

Инструкции по количеству загруженных данных

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

Верхние пределы для таблиц данных и полей

Обратите внимание, что при построении очень больших документов в документе QlikView не может содержаться больше 2 147 483 648 отдельных значений в одном поле.

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

Рекомендуемое ограничение для разделов загрузки скрипта

Рекомендуемое максимальное число символов для использования в одном разделе скрипта загрузки составляет 50 000 символов.

Условия для форматов числа и времени

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

Форматы чисел
  • Для обозначения определенного числа разрядов используется символ "0" для каждого разряда.
  • Для обозначения возможного разряда используйте символ "#". Если формат содержит только символы # слева от десятичного разделителя и числа меньше 1, нули отбрасываются и числа начинаются с десятичного разделителя. Если формат содержит символы # справа от десятичного разделителя, будут отображены все значения.
  • Чтобы отметить позицию разделителя тысяч или десятичного разделителя, используйте соответствующий разделитель тысяч и десятичный разделитель.

Код формата используется для определения позиций разделителей. Невозможно установить разделитель в коде формата. Для этого используйте переменныеDecimalSep и ThousandSep в скрипте.

Можно использовать разделитель тысяч для группировки цифр по любому числу позиций. Например, строка формата "0000–0000–0000" (разделитель тысяч="-") может использоваться для отображения двенадцатиразрядного номера компонента, такого как "0012–4567–8912".

См.: DecimalSep и ThousandSep

описывает число как целое с разделителем тысяч.

описывает число как целое без разделителя тысяч.

описывает число с тремя десятичными знаками.

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

Специальные форматы чисел

Программа QlikView может интерпретировать и форматировать числа с любым основанием от 2 до 36, включая двоичные, восьмеричные и шестнадцатеричные числа. Также поддерживаются римские форматы.

Чтобы указать двоичный формат, код формата должен начинаться с (bin) или (BIN).

Чтобы указать восьмеричный формат, код формата должен начинаться с (oct) или (OCT).

Чтобы указать шестнадцатеричный формат, код формата должен начинаться с (hex) или (HEX). При использовании прописных букв для форматирования будут использоваться буквы A-F (например, 14FA). При использовании строчных букв для форматирования будут использоваться буквы a-f (например, 14fa). Интерпретация будет работать для обоих вариантов независимо от регистра букв кода формата.

Использование элементов (dec) или (DEC) для обозначения десятичного формата допускается, но это излишне.

Для указания формата с любым основанием от 2 до 36 код формата должен начинаться с (rxx) или (Rxx), где xx — это двухзначное число, обозначающее используемое основание. Если используется прописная буква R, буквы в основаниях более 10 будут изменены на прописные при выполнении форматирования программой QlikView (например, 14FA). При использовании строчных букв для форматирования будут использоваться строчные буквы (например, 14fa). Интерпретация будет работать для обоих вариантов независимо от регистра букв кода формата. Необходимо иметь в виду, что элемент (r02) эквивалентен элементу (bin), элемент (R16) эквивалентен элементу (HEX) и т. д.

Чтобы указать римские числа, код формата должен начинаться с элемента (rom) или (ROM). При использовании прописных букв для форматирования будут использоваться прописные буквы (например, MMXVI). При использовании строчных букв для форматирования будут использоваться строчные буквы (например, mmxvi). Интерпретация будет работать для обоих вариантов независимо от регистра букв кода формата. Римские цифры обобщаются со знаком минус для отрицательных чисел, и 0 для нуля. При использовании римского форматирования десятичные дроби игнорируются.

num(199, '(bin)') возвращает 11000111 num(199, '(oct)') возвращает 307 num(199, '(hex)') возвращает c7 num(199, '(HEX)' ) возвращает C7 num(199, '(r02)' ) возвращает 11000111 num(199, '(r16)') возвращает c7 num(199, '(R16)' ) возвращает C7 num(199, '(R36)') возвращает 5J num(199, '(rom)') возвращает cxcix num(199, '(ROM)' ) возвращает CXCIX

Для форматирования даты можно использовать следующие символы. Можно использовать произвольные разделители.

Для описания дня используйте символ "D" для каждого разряда.

Для описания числа месяца используйте символ "M".

  • Для одного или двух разрядов используйте символы "M" или "MM".
  • Символ "MMM" обозначает короткое название месяца в буквах, как определено операционной системой или переопределено системной переменной MonthNames в скрипте.
  • Символ "MMMM" обозначает длинное название месяца в буквах, как определено операционной системой или переопределено системной переменной LongMonthNames в скрипте.

См.: MonthNames и LongMonthNames

Для описания года используйте символ "Y" для каждого разряда.

Для описания для недели используйте символ "W".

  • Символ "W" возвратит число дня (например, 0 для понедельника) как одноразрядное число.
  • Символ "WW" возвратит число с двумя разрядами (например, 02 для среды).
  • Символ "WWW" отобразит короткую версию названия дня недели (например, пон), как определено операционной системой или переопределено системной переменной DayNames в скрипте.
  • Символ "WWWW" отобразит длинную версию названия дня недели (например, понедельник), как определено операционной системой или переопределено системной переменной LongDayNames в скрипте.

См.: DayNames и LongDayNames

Примеры: (31 марта 2013 года в качестве даты для примера)

YY-MM-DD описывает дату как 13–03–31. YYYY-MM-DD описывает дату как 3/31/13. YYYY-MMM-DD описывает дату как 2013-март-31. DD MMMM YYYY описывает дату как 31 марта 2013 г. M/D/YY описывает дату как 3/31/13. W YY-MM-DD описывает дату как 6 13–03–31. WWW YY-MM-DD описывает дату как сб 13–03–31. WWWW YY-MM-DD описывает дату как вскр 13–03–31.

Время

Для форматирования времени можно использовать следующие символы. Можно использовать произвольные разделители.

Для описания часов используйте символ "h" для каждого разряда.

Для описания минут используйте символ "m" для каждого разряда.

Для описания секунд используйте символ "s" для каждого разряда.

Для описания времени в формате AM/PM используйте символ "tt" после времени.

Примеры: (18:30 в качестве времени для примера):

hh:mm описывает время как 18:30 hh.mm.ss.ff описывает время как 18.30.00.00 hh:mm:tt описывает время как 06:30:pm

Метки времени

В метках времени используется такая же нотация, как для дат и времени выше.

Примеры: (31 марта 2013 года 18:30 в качестве метки времени для примера):

YY-MM-DD hh:mm описывает метку времени как 13–03–31 18:30. M/D/Y hh.mm.ss.ffff описывает метку времени как 3/31/13 18.30.00.0000

Загрузка данных из файлов

QlikView может считывать данные из файлов, представляющих собой таблицы, в которых поля разделены такими разделителями, как запятые, знаки табуляции или точки с запятой. Другие допустимые форматы — файлы dif (Data Interchange Format), fix (fixed record length — ограниченная длина записи), таблицы HTML, файлы Excel, файлы xml, файлы в собственном формате QVD и файлы QVX. В большинстве случаев первая строка файла содержит имена полей.

Файлы загружаются с помощью оператора load в скрипте.

Чтобы не вводить операторы вручную в редакторе скриптов, воспользуйтесь мастером создания табличного файла, чтобы они генерировались автоматически.

В операторах load можно использовать полный набор выражений скрипта.

Чтобы считать данные из другого документа QlikView, используйте оператор binary.

Табличный файл

В программе QlikView Табличный файл означает файл с таблицей, в которой поля разделены, например, запятыми, табуляторами и точками с запятой (другое название — текстовый файл), либо у полей ограничена длина. В первой строке обычно содержатся имена полей. К табличным файлам относятся файлы dif (Data Interchange Format), fix (fixed record length — ограниченная длина записи), таблицы HTML и файлы Excel.

Как подготовить файлы Excel для загрузки в программу QlikView

Если необходимо загрузить файлы Microsoft Excel в программу QlikView, есть много функций, которые можно использовать для преобразования и очищения данных в скрипте загрузки, но, возможно, удобнее подготовить исходные данные непосредственно в табличном файле Microsoft Excel. В этом разделе предложено несколько подсказок, как подготовить таблицу для ее загрузки в программу QlikView с минимальным кодированием скрипта.

Используйте заголовки столбцов

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

Форматирование данных

Файл Excel легче загрузить в программу QlikView, если его содержимое организовано в виде необработанных данных в таблице. Желательно избегать следующего:

  • Агрегированные величины, такие как суммы и итоги. Агрегированные величины можно определить и вычислить в программе QlikView.
  • Дубликаты заголовков.
  • Дополнительная информация, которая не является частью данных, например комментарии. Лучше всего иметь отдельный столбец для комментариев, который можно пропустить при загрузке файла в программу QlikView.
  • Макет данных перекрестной таблицы. Если, например, есть по одному столбцу для каждого месяца, лучше создать один столбец с именем «Месяц» и записать те же данные в 12 строк, по одной строке для каждого месяца. В дальнейшем вы всегда сможете просмотреть этот столбец в формате перекрестной таблицы в программе QlikView.
  • Промежуточные заголовки, например, строка с названием «Отдел А» с последующими строками, относящимися к Отделу А. Вместо этого следует создать столбец с именем «Отдел» и заполнить ее соответствующими названиями отделов.
  • Объединенные ячейки. Лучше помещать каждое значение ячейки отдельно.
  • Пустые ячейки, значение которых подразумевается вышеуказанными значениями. Заполните все пустые ячейки, чтобы каждая из них содержала данные.
Используйте именованные области

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

Обычно можно определить необработанные данные как именованную область и сохранить все дополнительные комментарии и легенды за пределами именованной области. С учетом вышесказанного загрузить данные в программу QlikView не составит труда.

Удалите защиту паролем

Перед загрузкой данных рекомендуется удалить защиту паролем файла Excel.

Загрузка данных из баз данных

Данные из коммерческих баз данных загружаются в QlikView с помощью интерфейса Microsoft OLE DB/ODBC. Для этого необходимо установить драйвер, поддерживающий соответствующую СУБД, и настроить базу данных в качестве источника данных ODBC.

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

Теперь следует задать поля и таблицы, подлежащие загрузке, в операторе Select. Чтобы создать этот оператор, нажмите кнопку Выбрать.

См.: Создать выражение для SELECT

Кроме того, поля и таблицы для загрузки можно определить с помощью оператора Direct Query.

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

См.: Direct Discovery

Логика в базах данных

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

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

При выборе значений из нескольких полей, предполагается использование логической функции AND.

При выборе нескольких значений одного поля предполагается использование логической функции OR.

В некоторых случаях выборки в рамках поля могут задаваться с логической функцией AND.

Если необходимо отображать информацию о поле, добавьте в скрипт таблицу, состоящую из двух столбцов. Первый столбец таблицы должен содержать значения поля, второй — набор информации, связанной со значением поля. В заголовке первого столбца необходимо указать имя поля. Специальный синтаксис скрипта оператора LOAD/SELECT определяет, QlikView что данная таблица будет обработана как информационная.

Переименование полей

Иногда требуется переименовать поля, чтобы обеспечить необходимые связи. Три основных причины для переименования полей:

  1. Два поля имеют разные имена, хотя обозначают одно и то же:
    • Поле ID в таблице Customers
    • Поле CustomerID в таблице Orders

Оба поля обозначают идентификационный код определенного клиента и должны иметь одинаковые имена, например CustomerID.

  • Поле Date в таблице Invoices
  • Поле Date в таблице Orders

Эти два поля желательно переименовать, например: InvoiceDate и OrderDate.

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

Поля можно переименовать в скрипте, поэтому не требуется изменять исходные данные. В примерах показаны два разных способа переименования полей.

Оператор LOAD или SELECT может стоять после оператора alias.

Оператор LOAD или SELECT может содержать спецификатор as.

Объединение таблиц

Автоматическое объединение

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

В получившейся в результате внутренней таблице содержатся поля a, b и c. Количество записей является суммой количества записей в таблице 1 и таблице 2.

Принудительное объединение

Даже если набор полей в двух и более таблицах совпадает не полностью, в программе QlikView все равно можно объединить эти две таблицы. Это выполняется с помощью префикса concatenate в скрипте, который объединяет таблицу с другой указанной таблицей или с последней созданной таблицей.

В получившейся в результате внутренней таблице содержатся поля a, b и c. Количество записей в получившейся таблице является суммой количества записей в таблице 1 и таблице 2. Значением поля b в записях, полученных из таблицы 2, является NULL.

Предотвращение объединения

Если имена полей и число полей в двух и более загруженных таблицах точно совпадают, то программа QlikView автоматически объединит содержимое различных операторов в одну таблицу. Это можно предотвратить с помощью оператора noconcatenate. Таблица, загруженная с помощью соответствующего оператора LOAD или SELECT, в последствии не будет объединена с существующей таблицей.

Загрузка данных из ранее загруженной таблицы

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

В этом примере интерпретация даты выполняется в загрузке Resident, поскольку ее выполнение в исходной загрузке Crosstable LOAD невозможно.

Budget: Noconcatenate LOAD Account, Month(Date#(Month,’MMM’)) as Month, Amount Resident PreBudget;

Drop Table PreBudget;

Элемент Resident или предшествующий элемент LOAD?

В большинстве случаев тот же результат можно достичь с помощью предшествующего оператора LOAD. Именно оператор LOAD выполняет загрузку из оператора LOAD или SELECT ниже, не указывая префикс источника, такой как From или Resident, который обычно указывается. Предшествующий оператор LOAD — это обычно более быстрый способ, но есть случаи, когда необходимо использовать Resident LOAD:

  • В случае необходимости использования утверждения Order_by для сортировки записей перед обработкой оператора LOAD.
  • В случае необходимости использования одного из следующих префиксов. В этом случае предшествующий элемент LOAD не поддерживается:
    • Crosstable
    • Join
    • Intervalmatch
    Предшествующий оператор LOAD

    Предшествующий оператор LOAD позволяет загружать таблицу одной операцией, но, тем не менее, определяют несколько последующих преобразований. По существу, именно оператор LOAD выполняет загрузку из нижеуказанных операторов LOAD или SELECT, не указывая префикс источника, такой как From или Resident, который обычно указывается. Таким образом, можно выстроить в столбик любое количество операторов LOAD. Сначала будет оценен самый нижний оператор, затем оператор над ним и так до самого верхнего оператора.

    Тот же результат можно достичь с помощью оператора Resident, но в большинстве случаев с предшествующим оператором LOAD это будет быстрее.

    Еще одним преимуществом предшествующего оператора load является возможность хранить вычисление в одном месте и использовать его в операторах LOAD, размещенных выше.

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

    В этом примере интерпретируется дата, сохраненная в виде строки, с помощью функции QlikView Date# в операторе LOAD. При этом предшествующий оператор SELECT используется в качестве исходного.

    В этом примере вычисление в скрипте используется несколько раз:

    Использовав это вычисление однажды, его можно использовать повторно в функции Age в предшествующем операторе LOAD:

    Частичная загрузка

    Эта команда выполняет только операторы Load и Select, перед которыми стоит префикс Replace или Add. Команда не влияет на другие таблицы данных.

    Расширения со знаком доллара

    Расширения со знаком доллара представляют собой определения текстовых замещений, используемых в скрипте или в выражениях. Этот процесс известен как расширение — даже в том случае, когда новый текст становится меньше. Замещение выполняется непосредственно перед оценкой оператора скрипта или выражения. Технически это расширение макроса.

    Расширение всегда начинается с '$(' и заканчивается ') ', а содержимое в скобках определяет то, как будет происходить текстовое замещение. Во избежание путаницы с макросами скрипта далее мы будем обращаться к расширениям макроса как к расширениям со знаком доллара.

    Расширения со знаком доллара могут использоваться со следующими элементами:

    • переменные
    • параметры
    • выражения
    Расширение со знаком доллара с использованием переменной

    При использовании переменной для текстового замещения в скрипте или в выражении используется следующий синтаксис:

    Для расширений числовых переменных используется следующий синтаксис:

    Он всегда возвращает допустимое представление десятичной точки числового значения переменной, возможно, в экспоненциальной нотации (для очень больших/малых чисел). Если элемент variablename не существует или не содержит числовое значение, вместо этого будет выполнено расширение до 0.

    Расширение со знаком доллара $(X) будет расширяться до 3,5, в то время как $(#X) будет расширяться до 3.5.

    Данные будут загружены из файла по пути C:\MyDocs\Files\abc.csv.

    Строки с элементом Year=1992 будут выбраны.

    В этом примере все файлы .txt в каталоге загружаются с помощью префикса Concatenate. Это может потребоваться, если поля отличаются незначительно, так как в этом случае автоматическое объединение не работает. Переменная vConcatenate изначально задается в пустую строку, поскольку префикс Concatenate не используется при первой загрузке. Если каталог содержит три файла под именами file1.txt, file2.txt и file3.txt, оператор LOAD за время трех итераций расширится до:

    Расширения со знаком доллара с использованием параметров

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

    Если число формальных параметров превышает число действительных параметров, будут расширены только те формальные параметры, которые соответствуют действительным параметрам. Если число действительных параметров превышает число формальных параметров, излишние действительные параметры будут проигнорированы.

    Параметр $0 возвращает число параметров, фактически переданных с помощью вызова.

    Расширение со знаком доллара с использованием выражения

    В расширениях со знаком доллара могут использоваться выражения. В таком случае содержимое в скобках должно начинаться со знака «равно»:

    Выражение будет оценено, а значение будет использовано в расширении.

    Включение файла

    Включение файла выполняется с помощью расширений со знаком доллара. Синтаксис имеет следующий вид:

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

    Использование кавычек в скрипте

    Существует несколько различных способов использования кавычек в операторах скриптов.

    Внутри операторов LOAD

    В операторе LOAD в качестве кавычек можно использовать указанные ниже символы: