Sum () не работает в Qlik Sense Data Load Editor

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

Мои данные небольшие, всего около 3500 записей и 100 столбцов. Это единственная таблица, к которой я подключился через соединение ODBC. Мне нужно создать новый производный столбец, в котором будут храниться значения, полученные в результате вычислений. Мне нужно сделать это в редакторе загрузки данных.

Расчет предоставлен мне и его нужно перевести из этого псевдокода в рабочий код:

(сумма (Col_A) / total_num__of_records) * 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;

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


person CitizenKaye    schedule 05.11.2020    source источник


Ответы (1)


Сценарий запутан так же, как и вы :) Шутки.

Для функций агрегирования в скрипте требуется предложение group by для всех полей, не входящих в агрегирование. Без группы механизм сценария не знает, как sum () или count (), потому что он работает построчно, и поэтому Sum (A) = A и count (A) = 1.

Зная только то, что вы нам здесь рассказали, это выражение не имеет смысла делать в редакторе загрузки данных, и его будет гораздо лучше обслуживать и иметь смысл в редакторе выражений через интерфейс. Там было бы:

((SUM(Col_A) / COUNT(total Record_ID)) * Col_B)

Это дает вам Col_B, умноженный на процент транзакций, отмеченных цифрой 1. Так что, вероятно, процент выполненных задач или что-то подобное.

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

Примерно так: (Я просто добавил DEPARTMENT, чтобы показать, что все поля, не входящие в sum (), count (), должны быть в группе by. Это включает Col_B, если вы хотите, чтобы значение New_Column для каждого значения Col_B на DATE на DEPARTMENT )

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;
person The Budac    schedule 05.11.2020
comment
Ты легенда! В этом есть смысл! Большое спасибо! - person CitizenKaye; 08.11.2020