Обновление импортированных данных

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

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

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

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

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

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

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

Задача по обновлению импортированных данных - это не столько вопрос размера импортируемой таблицы данных, но вопрос разнообразия данных. Каждый массив данных сохраняет значение каждой записи. Чтобы определить наличие исходной записи в импортированных данных, либо наличие записи из импортированных данных в исходных данных, PolyAnalyst должен сравнить каждую запись в импортированных данных с каждой записью в исходных данных. PolyAnalyst не может знать заранее, как это сделать, поэтому именно вы даете системе PolyAnalyst инструкцию о том, как выполнить такое сравнение, путем изменения настройки узлов, использованных вами для импорта данных.

Методы обновления импортированных данных 

Существует несколько разных подходов к обновлению импортированных данных. Ниже представлен краткий обзор доступных методов:

  • Использование SQL-запросов на объединение - если вы эксперт по базам данных, который в совершенстве владеет языком структурированных запросов SQL, то вы можете использовать запрос SQL и изменить представление данных, которые вы планируете импортировать при настройке узла ODBC. Вместо того, чтобы просто импортировать одну реляционную таблицу, вы можете создать запрос, который выполняет объединение в базе данных, а затем вы импортируете результат этого объединения в PolyAnalyst. Создание SQL-запросов на объединение не входит в круг вопросов, освещаемых в нашей документации.

  • Использование узлов Объединение и Конкатенация - вместо того, чтобы использовать выходные данные узла-источника данных, импортировавшего исходные данные, вы можете создать второй узел-источник данных, настроенный на импорт только новых данных, а затем использовать узел Объединение или Конкатенация для объединения двух массивов данных. Выходные данные этих узлов будут служить в качестве источника наиболее актуальной версии импортируемых данных, которые затем вы можете проанализировать и обработать в других узлах PolyAnalyst.

  • Использование опции Добавить данные - некоторые узлы позволяют пользователям постепенно обновлять импортированные данные при каждом выполнении узла. Например, узлы SDL SM2 или Интернет имеют опцию Добавить данные. См. использование опции Добавить данные.

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

Для обновления импортированных данных не существует одного наиболее эффективного метода. У каждого метода есть свои достоинства и недостатки. Некоторые методы более быстрые, более гибкие или требуют более тонкой настройки. Например:

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

  • Метод объединения/конкатенации не требует большого опыта работы с реляционными базами данных. Метод объединения/конкатенации позволяет отчетливо показать на скрипте каждый отдельный этап вашего аналитического проекта. Вы и/или ваши коллеги могут быстро определить, что происходит, только взглянув на скрипт. С другой стороны, использование множества узлов объединения/конкатенации может привести к тому, что скрипт будет слишком громоздким. Методы объединения/конкатенации иногда не работают должным образом, поскольку данные необходимо дублировать. Однако создатели PolyAnalyst предприняли дополнительные меры по устранению данного недостатка. PolyAnalyst может объединять/конкатенировать данные без дублирования, если только вы не настроили скрипт на запрет этого действия (например, с помощью заморозки узлов).

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

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

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