Обратная запись позволяет пользователям обновлять данные из анализов.
Темы:
Функция обратной записи позволяет пользователям обновлять данные непосредственно с информационных панелей и анализов.
Пользователи с разрешением Записать обратно в базу данных видят в анализах поля обратной записи как редактируемые поля. Введенные значения сохраняются в базе данных. Пользователи без разрешения Записать обратно в базу данных видят поля обратной записи как поля, доступные только для чтения.
Если пользователь вводит значение в редактируемое поле и нажимает кнопку "Обратная запись", приложение выполняет SQL-команду insert
или update
, определенную в шаблоне обратной записи. Если команда выполнена успешно, анализ обновляется с учетом нового значения. Если при чтении шаблона или выполнении SQL-команды произошла ошибка, отображается сообщение об ошибке.
Команда insert
выполняется, когда запись еще не существует и пользователь вводит новые данные в таблицу. В этом случае пользователь ввел запись таблицы, значение которой изначально было неопределенным (null). Команда update
выполняется, когда пользователь изменяет существующие данные. Чтобы отобразить запись, которая еще не существует в физической таблице, можно создать другую аналогичную таблицу. Используйте такую похожую таблицу для отображения формальных записей, которые пользователь может изменить.
Примечание.:
При создании шаблонов обратной записи необходимо указывать команду insert
и команду update
, даже если обе они не используются. Например, если выполняется только insert
, необходимо включить пустую инструкцию update
<update></update>
, как в этом XML-коде:
insert
и две пустых инструкции update
. Подробнее о том, как создавать и структурировать файлы обратной записи XML, см. в разделе "Создание файлов шаблонов обратной записи".
<?xml version="1.0" encoding="utf-8" ?> <WebMessageTables xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="oracle.bi.presentation/writebackschemas/v1"> <WebMessageTable lang="en-us" system="WriteBack" table="Messages"> <WebMessage name="SetQuotaUseID"> <XML> <writeBack connectionPool="Supplier"> <insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert> <update></update> </writeBack> </XML> </WebMessage> <WebMessage name="SetForecastUseID"> <XML> <writeBack connectionPool="Supplier"> <insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e0}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert> <update></update> </writeBack> </XML> </WebMessage> </WebMessageTable> </WebMessageTables>
Администраторы могут разрешить пользователям редактировать данные в анализах и на информационных панелях.
Пользователи могут выполнять обратную запись данных в любой источник данных, который позволяет выполнять запросы SQ из Oracle Analytics.
При настройке обратной записи помните о следующих ограничениях:
Числовые столбцы должны содержать только числа. Они не должны содержать никаких символов форматирования данных, таких как знаки доллара ($), знаки фунта или хэша (#), знаки процента (%) и т. д.
Текстовые столбцы должны содержать только строковые данные.
Если пользователь, вошедший в систему, уже просматривает инфопанель с анализом, в котором данные изменены с помощью обратной записи, данные не будут автоматически обновляться на инфопанели. Чтобы увидеть обновленные данные, пользователь должен вручную обновить инфопанель.
Механизм шаблонов можно использовать только с табличными представлениями и только для данных с одним значением. Механизм шаблонов не поддерживается для представлений сводных таблиц или любых других типов представлений, для данных с несколькими значениями или для раскрывающихся столбцов с данными с одним значением.
Все значения в столбцах обратной записи можно редактировать. При отображении в контексте не для печати редактируемые поля отображаются так, как будто у пользователя есть разрешение Записать обратно в базу данных. Однако когда логический столбец сопоставляется с физическим столбцом, который может изменяться, логический столбец возвращает значения для нескольких пересечений уровней. Этот сценарий может вызвать проблемы.
Любое поле в анализе можно пометить как поле обратной записи, даже если оно не является производным от созданной таблицы обратной записи. Однако невозможно выполнить операцию обратной записи, если в таблице не разрешена обратная запись. Ответственность за правильную маркировку полей лежит на разработчике контента.
Шаблон может содержать инструкции SQL, отличные от insert
и update
. Функция обратной записи передает эти инструкции в базу данных. Однако Oracle не поддерживает и не рекомендует использовать инструкции, отличные от insert
или update
.
Oracle Analytics выполняет только минимальную проверку введенных данных. Если пользователь вводит текстовые данные в числовое поле, Oracle Analytics обнаруживает это и предотвращает попадание недопустимых данных в базу данных. Однако другие формы ввода некорректных данных (значения вне диапазона, смешанные текстовые и числовые значения и т. д.) не обнаруживаются. Когда пользователь нажимает на кнопку обратной записи и запускает вставку или обновление, недопустимые данные приводят к появлению сообщения об ошибке в базе данных. Затем пользователь может исправить ошибочный ввод. Разработчики контента могут включить текст в анализ обратной записи, чтобы помочь пользователю, например, "Ввод смешанных буквенно-цифровых значений в числовое поле данных не допускается".
Механизм шаблонов не подходит для ввода произвольных новых записей. Не стоит его использовать в качестве инструмента для ввода данных.
При создании таблицы обратной записи убедитесь, что хотя бы в один столбец не включена возможность обратной записи, но включены значения, которые уникальны для каждой строки и не являются неопределенными.
Анализ обратной записи не поддерживает детализацию. Поскольку детализация изменяет структуру таблицы, шаблон обратной записи не работает.
Внимание.:
Механизм шаблонов принимает пользовательский ввод и записывает его непосредственно в базу данных. За безопасность физической базы данных отвечает пользователь. Для обеспечения оптимальной безопасности храните таблицы базы данных с обратной записью в уникальном экземпляре базы данных.Файл шаблона обратной записи – это файл в формате XML, содержащий один или несколько шаблонов обратной записи.
Шаблон обратной записи состоит из элемента WebMessage
, в котором указывается имя шаблона, пул подключений и операторы SQL, необходимые для вставки и обновления записей в созданных таблицах и столбцах обратной записи. Когда разработчики контента включают табличное представление для обратной записи, они должны указать имя шаблона обратной записи, который будет использоваться для вставки и обновления записей в табличном представлении.
Шаблон обратной записи должен соответствовать следующим требованиям:
WebMessage
: необходимо указать имя шаблона обратной записи с помощью атрибута name
в элементе WebMessage.
Чтобы обратная запись работала правильно, при включении ее в табличное представление разработчик контента должен указать имя шаблона обратной записи, который будет использоваться для вставки и обновления записей в представлении.
В примере показан шаблон обратной записи под именем SetQuotaUseID
.
<WebMessage name="SetQuotaUseID">
connectionPool
: для соответствия требованиям безопасности необходимо указать пул подключений, а также команды SQL для вставки и обновления записей. Эти команды SQL ссылаются на значения, которые передаются в схеме обратной записи, чтобы сгенерировать инструкции SQL для изменения таблицы базы данных.
VALUES
: на значения столбцов можно ссылаться по идентификатору столбца или по позиции столбца. Предпочтительнее использовать идентификатор столбца.
Заключите значения строк и дат в одинарные кавычки. Одинарные кавычки не требуются для числовых значений.
Идентификатор столбца – идентификатор каждого столбца является буквенно-цифровым и генерируется случайным образом. Идентификаторы столбцов можно найти в определении XML анализа, которое доступно на вкладке Дополнительно редактора анализа. Например, значения идентификаторов столбцов могут быть следующими: @{c5f6e60e1d6eb1098}
, @{c3a93e65731210ed1}
, '@{c6b8735ea60ff3011}'
Если используется идентификатор столбца, обратная запись продолжает работать даже при изменении порядка столбцов.
Положение столбца – нумерация положения столбцов начинается с 1. Например, значения положения столбцов могут быть следующими: @1
, @3
, '@5'
Если порядок столбцов меняется, обратная запись больше не работает, и это причина, по которой идентификаторы столбцов предпочтительнее.
Необходимо включить в шаблон оба элемента: <insert>
и <update>
. Если не требуется включать команды SQL в элементы, то между открывающим и закрывающим тегами нужно вставить пробел. Например, необходимо ввести такой элемент:
<insert> </insert>
А не такой:
<insert></insert>
Если опустить пробел, появится сообщение об ошибке обратной записи, например "Система не может прочитать шаблон обратной записи 'my_template'".
Если тип данных параметра не является целым или вещественным числом, заключите его в одинарные кавычки. Если база данных не выполняет завершения транзакций автоматически, добавьте необязательный узел postUpdate
после узлов insert
и update
, чтобы принудительно выполнить завершение транзакции. Узел postUpdate
обычно следует этому примеру:
<postUpdate>COMMIT</postUpdate>
Пример обратной записи файла шаблона с использованием синтаксиса идентификатора столбца
Файл шаблона обратной записи, ссылающийся на значения по идентификатору столбца, может выглядеть так:
<?xml version="1.0" encoding="utf-8" ?> <WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1"> <WebMessageTable lang="en-us" system="WriteBack" table="Messages"> <WebMessage name="SetQuotaUseID"> <XML> <writeBack connectionPool="Supplier"> <insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert> <update>UPDATE regiontypequota SET Dollars=@{c0432jkl53eb92cd8} WHERE YR=@{c5f6e60e1d6eb1098} AND Quarter=@{c5d7e483445037d9e} AND Region='@{c3a93e65731210ed1}' AND ItemType='@{c6b8735ea60ff3011}'</update> </writeBack> </XML> </WebMessage> </WebMessageTable> </WebMessageTables>
Пример обратной записи файла шаблона с использованием синтаксиса положения столбца
Файл шаблона обратной записи, который ссылается на значения по позиции столбца, может выглядеть так:
<?xml version="1.0" encoding="utf-8" ?> <WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1"> <WebMessageTable lang="en-us" system="WriteBack" table="Messages"> <WebMessage name="SetQuota"> <XML> <writeBack connectionPool="Supplier"> <insert>INSERT INTO regiontypequota VALUES(@1,@2,'@3','@4',@5)</insert> <update>UPDATE regiontypequota SET Dollars=@5 WHERE YR=@1 AND Quarter=@2 AND Region='@3' AND ItemType='@4'</update> </writeBack> </XML> </WebMessage> </WebMessageTable> </WebMessageTables>