#qlikview #qliksense #qlik-expression
#qlikview #qliksense #qlik-выражение
Вопрос:
Я усердно работал, чтобы понять Qlik, но документация скудная, и просто нет тонны примеров сценариев, которые помогли бы мне быстрее разобраться. Я очень расстроен, поэтому приношу свои извинения, если я плохо это объясняю.
Мои данные невелики, всего около 3500 записей и 100 столбцов. Это единственная таблица, к которой я подключился через ODBC-соединение. Мне нужно создать новый производный столбец, который будет содержать значения, полученные в результате вычисления. Мне нужно выполнить это в редакторе загрузки данных.
Вычисление было передано мне и должно быть переведено из этого псевдокода в рабочий код:
(сумма (Col_A) / общее _ число__ записей) * value_in_Col_B
- Col_A — это фиктивный столбец со значениями 1 или 0.
- total_num_of_records должно быть подсчетом общего количества строк в таблице.
- Col_B — это существующий столбец в базе данных, который содержит числовые значения (значения с плавающей запятой).
В редакторе загрузки данных мне нужно написать что-то вроде этого, но я не могу понять, почему это не сработает. В сообщении об ошибке буквально отображается вопросительный знак и никаких объяснений:
LOAD * ,
((SUM(Col_A) / COUNT(Record_ID)) * Col_B) AS New_Column;
Это все, что я хочу сделать, но это не сработает, и, несмотря на кучу поисковых запросов, я не могу понять, как выполнить такое простое вычисление в редакторе загрузки данных. Пожалуйста, помогите! Спасибо!
Ответ №1:
Механизм сценариев так же запутан, как и вы 🙂 шутки.
Функции агрегирования в скрипте требуют предложения group by для всех полей, не включенных в агрегацию. Без group by скриптовый движок не знает, как sum() или count(), потому что он работает построчно, и поэтому Sum(A) = A и count(A)= 1.
Зная только то, что вы сказали нам здесь, это выражение не имеет смысла выполнять в редакторе загрузки данных, оно было бы намного лучше обслуживаться и имело бы смысл в редакторе выражений через интерфейс. Там это было бы:
((SUM(Col_A) / COUNT(total Record_ID)) * Col_B)
Это дает вам значение Col_B, умноженное на процент транзакций, помеченных знаком 1. Так что, вероятно, процент выполненных задач или что-то подобное.
Чтобы сделать это в редакторе загрузки данных, вам нужно создать временную таблицу с вашими группами только для создания того же самого, тогда вы никогда не сможете отобразить это соотношение на любом другом уровне, кроме того, что вы определили в group by, поэтому вы потеряете всю мощь интерфейса Qlik.
Что-то вроде этого: (Я только что добавил ОТДЕЛ, чтобы показать, что все поля, не входящие в sum() , count(), должны быть в группе by . Это включает Col_B предполагая, что вы хотите значение New_Column для каждого значения Col_B на ДАТУ для каждого ОТДЕЛА)
DAILY_COMP_RATIOS:
load
DATE,
DEPARTMENT,
((SUM(Col_A) / COUNT(Record_ID)) * Col_B) AS New_Column
resident
SOURCE_TABLE
group by
DATE,
DEPARTMENT,
Col_B;
Комментарии:
1. Ты легенда! В этом есть смысл! Большое вам спасибо!