Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Добрый день, коллеги.
Назрело 2 вопроса, гугл не помог:
1. Можно ли заставить QV игнорировать регистр (в названиях полей и в записях) ?
2. Как можно заполнить пустые ячейки значениями сверху?
Добрый день,
1. в хелпе есть функция, попробуйте ее.
The force statement forces QlikView to interpret field values of subsequent Load and Select (SQL) statements as written with only upper case letters, with only lower case letters, as always capitalized or as they appear (mixed). This statement makes it possible to associate field values from tables made according to different conventions. The syntax is:
force ( capitalization | case upper | case lower | case mixed )
Force Capitalization;
Force Case Upper;
Force Case Lower;
Force Case Mixed;
2. С помощью трансформации в File Wizard.
Добрый день,
1. в хелпе есть функция, попробуйте ее.
The force statement forces QlikView to interpret field values of subsequent Load and Select (SQL) statements as written with only upper case letters, with only lower case letters, as always capitalized or as they appear (mixed). This statement makes it possible to associate field values from tables made according to different conventions. The syntax is:
force ( capitalization | case upper | case lower | case mixed )
Force Capitalization;
Force Case Upper;
Force Case Lower;
Force Case Mixed;
2. С помощью трансформации в File Wizard.
Спасибо. Со вторым вопросом всё заработало! А вот по первому...
Почитал, про 'force case...' но я правильно понимаю, что оно действует только для значений поля?
Это уже хорошо, но необходимо так же приравнять и названия полей
"код товара"="Код товара"="Код Товара".
Т.е. по маске загружается пачка файлов, таблицы имеют одну структуру, но вот в названиях столбцов в каждом городе большие и маленькие буквы используют по своему, а нужно, чтоб QV видел это всё как одну таблицу.
А полей очень много? Почему их нельзя просто переименовать через AS в LOAD?
Вот, нашла тему на форуме http://www.qlikcommunity.com/thread/64404
Считывают отделно поля, потом переименовывают.
Еще как вариант, переименования:
А всё разобрался, проблема решается через использование явных меток, вместо встроенных, но всё равно полезно было бы иметь какой-то инструмент для загрузки, плохо формализованных данных,
допустим загрузка полей по маске, что-то вроде:
load
*рода* as продажи
from продажи/*.xls;
И в поле продажи тогда бы загрузились данные полей : продажи, Продажи, продано, Продажи за месяц...и т.д. из всех документов в папке .
Нет ли чего-то подобного?
Вот по первой ссылке хороший вариант.
А как переименовать в load? Полей то не слишком много, но много документов,
Т.е. если написать, что-то вроде
Load
продажи аs Продажи,
Продажи
from *.xls;
То будет же ошибка, разве нет?
Кстати раз уж затронули такой вопрос, есть опция игнорирования некритических ошибок скрипта?
Следующие переменные могут использоваться для обработки ошибок в скрипте:
ErrorMode
ScriptError
ScriptErrorDetails
ScriptErrorCount
ScriptErrorList
Вот только, что критически что нет, решать в скрипте вам.
Скрипт просто идет дальше и все, и ошибки могут нарастать снежным комом.
Ага, спасибо. С ошибками буду что-нибудь делать само-собой (всё больше склоняюсь к варианту исправления путём криков и угроз тем, кто отсылает кривые данные) перед сдачей, но сейчас только начал разработку и они раздражают (не отойдешь покурить, пока пересчитывается- надо жать "ОК"), так что на текущий момент очень пригодится.
Что-то типа такого:
'$(Table)': SQL SELECT $(Fields) FROM $(vFrom);
let vScriptError = num(ScriptError);
// В случае отказа в доступе к таблице или другой ошибке
IF vScriptError>0 then
....
Главное фиксировать ScriptError сразу после потенциально возможного оператора с ошибкой.
И можно записывать в табличку все моменты и условия возникновения ошибки.
Довольно удобно.
А что касается заголовков, так первое что приходит на ум - сделать всем одинаковые заголовки и ввести санкции за нарушение Программисты, конечно, народ плечистый но зачем тратить свое время когда вопрос решается организационно.
А поля в файлах идут разбросанно или всегда в одном и том же порядке?
Ведь можно не привязываться к названием полей, не читать хидер, и использовать:
LOAD
@1 as Дата,
@2 as Продукт,
@3 as Цена
From file;