Использование файла Excel для переменных в Qlikview говорит, что файл не найден

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

Поле не найдено = ‹,›

Список переменных:

Нагрузка ,

From [D:\Development\UserDocs\ExpressionDictionary.xlsx] (ooxml, встроенные метки, таблица $(ExcelTable)) WHERE [Load Flag];

sub GetVariables(TableName, ExcelTable, NameColumn, VariableColumn)
    
        $(TableName):
        
        LOAD 
             $(NameColumn), 
             $(ExpressionColumn)
        FROM [D:\Development\UserDocs\ExpressionDictionary.xlsx] (ooxml, embedded labels, table is $(ExcelTable))
        WHERE [Load Flag];
        
        FOR counter = 1 TO NoOfRows('$(TableName)')
            LET vVariable = Peek('$(NameColumn)', $(counter) -1, '$(TableName)');
            LET $(vVariable) = Peek('$(ExpressionColumn)', $(counter) -1, '$(TableName)');
        NEXT 
        
        LET vVariable = null();
        LET counter = null();
    
end sub

call GetVariables('VariableList', 'Variables') 

Я понимаю, что он не видит столбца Names, но я не знаю, как заставить его работать. Я пробовал как с расширением доллара в сценарии загрузки, так и без него. Что мне не хватает?


person djblois    schedule 21.12.2017    source источник


Ответы (1)


Функция GetVariables, которая у вас есть, принимает 4 параметра: TableName, ExcelTable, NameColumn и VariableColumn.

Когда вы его вызвали, вы указали только первые 2, поэтому NameColumn и Variable Column пусты. Чтобы исправить это, вам нужно сообщить ему, какие имена столбцов из листа переменных в Excel вы хотите загрузить. Может быть «VariableName» и «VariableValue», но я не могу сказать, не видя самого файла.

Что-то вроде:

call GetVariables('VariableList','Variables','VariableName','VariableValue')

Ошибка в том, что он запускает этот код:

VariableList:
LOAD 
    , 

FROM [D:\Development\UserDocs\ExpressionDictionary.xlsx] 
(ooxml, embedded labels, table is Variables)
WHERE [Load Flag];

Обратите внимание, что в операторе LOAD нет имен полей, поскольку значения этих переменных не определены.

person x3ja    schedule 21.12.2017
comment
вау спасибо. Глупая ошибка. Я делал это и ломал себе голову. Еще раз спасибо. - person djblois; 21.12.2017
comment
Нет проблем, не стесняйтесь проголосовать или отметить это как правильный ответ :) - person x3ja; 21.12.2017