Функция Sum() не работает в редакторе загрузки данных Qlik Sense

#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. Ты легенда! В этом есть смысл! Большое вам спасибо!