QLikView VBScript создает поле в сводной таблице

Я создаю сводную таблицу с помощью VBScript в QLikView:

sub cleanUp()

    set sheet = ActiveDocument.Sheets("Summary")

    set summaryTable = sheet.CreatePivotTable

    summaryTable.addDimension "Product Group Desc"
    summaryTable.addDimension "Product Type Desc"
    summaryTable.addDimension "Product Sub Group Desc"
    summaryTable.addDimension "Country"
    summaryTable.addDimension "ZoneMgrName"

    summaryTable.addExpression "Sum({<[Fiscal Year]={$(vCurrentYear)}>}
                                                           [Sales Amount])"

    set props = summaryTable.getProperties
    set expr = props.Expressions.Item(0).Item(0).Data.ExpressionVisual

    expr.Label.v = "Expenses $(vCurrentYear)"
    expr.NumAdjust = 1    'center
    expr.LabelAdjust = 1    'center
    summaryTable.SetProperties props

end sub

Кроме того, я хотел бы создать новые поля, используемые в качестве измерений. Этих полей пока нет в моем документе QLikView. Значение этих полей связано со значением других полей. Скажем, у меня есть поле Страна в моей сводной таблице. Я хотел бы добавить новое поле «Область», которое содержит название области, к которой принадлежит страна. Так что значения для поля будут возвращаемым значением функции, которая возвращает площадь для данной страны.


person kiriloff    schedule 29.06.2014    source источник
comment
Я много использовал qlikview в сочетании с VBA, поэтому надеюсь, что смогу помочь. В чем именно вопрос? Код работает, но вы хотите, чтобы он делал больше? Я не уверен, чего вы хотите.   -  person Tanner    schedule 29.06.2014
comment
Спасибо! Я хочу создать новое поле (поле, не существующее в документе QLikView) и создать измерение в сводной таблице на основе этого поля: `summaryTable.addDimension NewField   -  person kiriloff    schedule 29.06.2014
comment
@ tannman357 Мне нужно указать значения для нового поля: значения — это возвращаемое значение функции, которая принимает в качестве аргумента значение другого поля. См. мой пример со страной и областью.   -  person kiriloff    schedule 29.06.2014
comment
Как вы использовали VBA в сочетании с qlikView? Используя VBScript или другим способом?   -  person kiriloff    schedule 29.06.2014
comment
Я всегда экспортирую любые данные ИЗ qlikview в Excel, а затем управляю ими с помощью макросов, которые сохраняю на другом листе. Если вы хотите создать новые поля, это очень легко сделать один раз в Excel.   -  person Tanner    schedule 29.06.2014
comment
Вы можете создать новое поле, а затем программа снова заполнит область и оператор if для любой страны. Можете ли вы опубликовать пример данных с желаемым результатом?   -  person Tanner    schedule 29.06.2014
comment
цель проекта — показать, что я могу воспроизвести все операции внутри Qlikview без экспорта в Excel.   -  person kiriloff    schedule 29.06.2014
comment
Оооо..... Я не знаю об этой стороне qlikview, чувак... :(   -  person Tanner    schedule 29.06.2014


Ответы (1)


Это зависит от того, как осуществляется доступ к вашим данным «поиска» (находятся ли они в вашем документе QlikView или являются внешними), но вы можете свободно добавлять вычисляемые измерения в свой свод с помощью метода addDimension. Например:

summaryTable.addDimension "=if(Country='France', 'EU', 'non-EU')"

Вы можете использовать любое нормальное выражение, которое может возвращать значимые значения для вашего измерения.

Если вы хотите назвать измерение, вы можете использовать возвращаемое значение addDimension следующим образом:

dimensionNum = summaryTable.addDimension("=if(Country='France', 'EU', 'non-EU')")

set tableProperties = summaryTable.getProperties

set calcDim = tableProperties.Dimensions.Item(dimensionNum-1)
calcDim.Title.v = "Area"

summaryTable.SetProperties tableProperties
person i_saw_drones    schedule 01.07.2014