Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Align
alignjustified

Ir pieejamas vairākas noderīgas kopu atlases metodes, ko var izmantot Laika periodu kopām ( Time sets) .

  • PeriodsToDate(Time.Year, Time.CurrentMember)  - atgriezīs visus periodus sākot no .Current member ( Tekošā rādītāja) atbilstošajā līmenī ( šajā gadījumā no tekoša gada sākuma ) lidz izvēlētajam rādītājam.
  • YTD(Time.CurrentMember) ir īsāka versija šai pašai funkcijai (saīsinājums no Year-to-date)
  • QTD(Time.CurrentMember) atbilstoši  tā pati funkcija ceturkšņiem  -  quarter-to-date rādītāju kopai
  • MTD(Time.CurrentMember)  funkcija mēnešiem  - month-to-date rādītāju kopai
  • WTD(Time.CurrentMember) atgriezīs nedēļu  - week-to-date rādītāju kopu. Ja jūsu datu kubā ir tikai Laika ( Time ) dimensija, tad jūs pat varat izmantot vēl īsaku funkcijas versiju YTD(), QTD(), MTD() un WTD() tā kā , kā noklusēto vērtību tās tāpat saņems tekošo rādītāju (  Current member ) no laika dimensijas  Time.CurrentMember.
  • Bet dažreiz ir nepieciešams padot citus rādītājus , kā neatkarīgos mainīgos šīm funkcijām.  Piemēram , ja jums nepieciešams salīdzināt tekošo  year-to-date kopu ar  year-to-date kopu vienu gadu atpakaļ, jūs varat izmantot sekojošu definīciju, lai iegūtu  year-to-date kopu atbilstošajam Laika ( Time) dimensijas rādītājam vienu gadu atpakaļ :
     YTD(ParallelPeriod(Time.Year, 1, Time.CurrentMember)) 

    Ja vēlaties funkcijas definīciju saīsināt, tad var izlaist current member argumentu arī šajā funkcijā YTD(ParallelPeriod(Time.Year, 1)). Lielākā daļai ar laika dimensiju saistītajās funkcijās izmanto  Time.CurrentMember kā noklusēto funkcijas rādītāja vērtību ( argumentu) . 
    Ja vēlaties iegūt skaitu ar pēdējiem periodien no Laika ( Time ) dimensijas, tad varat izmantot LastPeriods funkciju. Piemēram LastPeriods(3, Time.CurrentMember),
    kas atgriezīs kopu ar tekošo ( current ) laika (Time) rādītāju un divus iepriekšējo rādītājus vērtību. Ja Jūs vēlaties iegūt Tekošo (Current) un nākamos divus Laika periodus rādītāju vērtības , tad jš varat izmantot negatīvu vērtību -3 nevis 3.

 

...

Kopu operācijas

Align
alignjustified

There are several operations that you can perform on sets:

  • {set1, set2, ..., setn} returns union of two or more sets
  • Except(set1, set2) returns set1 members but removes any member that is in set2
  • Head(set, number) returns set with first number of members from original set (if number is not specified then set from the first set member is returned)
  • Tail(set, number) returns last number of members from set
  • set.Item(position) returns one member from set with specified position (starting from zero). So if you would like to get first member of set you can use expression Head(set).Item(0)Quite frequently you would like to filter set members using some condition. You can do this with Filter(set, condition). For example in this way you can filter all cities with sales larger than 1000:Filter(Customers.City.Members, Measures.Store Sales > 1000)
    Within condition expression [Customers].CurrentMember references current set member for which condition is evaluated. For example, this will return all cities which name starts with San (using MATCHES operator with regular expression)Filter(Customers.City.Members, Customers.CurrentMember.Name MATCHES 'San .*')
    Other typical function that is used in conditions is IsEmpty. This expression will return all cities which have non-empty sales amount:Filter(Customers.City.Members, NOT IsEmpty(Measures.Store Sales))
    Previously simple set to string function SetToStr was mentioned that is useful for expression testing purposes. But if you would like to format set results in customized way then you can use Generate(set, string_expression, separator_string). For example the following expression will return city names concatenated using comma where there is no sales amount recorded:Generate(
    Filter(Customers.City.Members, IsEmpty(Measures.Store Sales)),
    Customers.CurrentMember.Name, ', ') \\\\\\\\\\\\\\\\\\\\\\\\\\

 

Aggregates

Align
alignjustified

Now that you know how to select different sets of dimension members you can calculate different aggregated values from these setsTagad, kad jūs mākat atlasīt dažādas dimensiju rādītāju kopas, jūs varat izrēķināt arī dažādas darbības starp tām:

  • Sum(set, numeric_expression) calculates   - kalkulē summu noteiktajam rādītājam (numeric_expression for each set member and returns sum of all these results. For example, Sum(LastPeriods), katram norādītās kopas (set) rādītājam un atgriež to rezultātu summu.  Piemēram, Sum(LastPeriods(3). Measures.Store Sales) will calculate total sales for last three Time periods starting from current Time dimension memberizkalkulēs kopējo pārdošanas apjomu pēdējiem 3 laika ( Time ) periodiem ( LastPeriods (3) ) , sākot ar tekošo laika ( Tiems) dimesijas  rādītāju.
  • Count(set) returns count of set members.   -  atgrieš kopas rādītāju skaitu, kas iekļauti kopā ,piemēram, Count(set, ExcludeEmpty ) will return count of set members for which corresponding measure values are not empty.saskaitīs to kopas rādītāju skaitu, kuriem atbilstošās vērtības nav tuksās (ExcludeEmpty - neiekļaut tukšos )
  • Avg(set, numeric_expression) calculates average of numeric_expression in set  - kalkulē vidējo aritmētisko norādītajam rādītājam ( numeric expression) noteiktajā kopā.
  • Max(set, numeric_expression) returns maximum value of numeric_expression in set  - atgriež maksimālo vērtību norādītajam rādītājam ( numeric expression) noteiktajā kopā .
  • Min(set, numeric_expression) returns minimum value of numeric_expression in set \\\\\\\\\\\\\\ir tāda pati funkcija, tikai atriež minimālo vērtību kopas ietvaros.

 

Nosacījumi

Align
alignjustified

Jūs varat rakstīt dažadas formulas ismantojot nosacījumus un izvadīt dažadus rezultātus balstoties atblstību nosacījumiem  izmantojot IIF ( Ja ) un CASE ( Gadījumā ja) funkcijas. Priekš vienkāršiem IF/THEN /ELSE tipa nosacījumiem izmantojiet IIF(noacījums, ja_nosacījums_pateiss, ja_nosacījums_nepatiess)  , (    IIF(condition, if_true_expression, if_false_expression) . Taču ņemiet vērā ka "IIF" satur divus "I" burtus, nevis kāierats IF !  Piemēram  IIF(Measures.Profit > 0, 'Profit', 'Loss') t.i ja Measures.Profit būs lielāks par nulli tad rezultāts būs " Profit", ja vērtība neatbildīs nosacījumam un būs mazāka par 0, ta rezultāts būs " Loss" .

Ja ir vairāki nosacījumi tad ir vieglāk izmantot CASE funkciju , piemēram šadā gadījumā :
CASE
WHEN Measures.Profit > 1000        – Kad peļņa ir lielāka par 1000
THEN 'Big profit'                               -- tad peļņa ir " Liela Peļņa "
WHEN Measures.Profit > 0              – kad peļņa ir lielāka par 0
THEN 'Small profit'                           --tad rezultāts "Maza peļņa"
ELSE 'Loss'                                      – citādi rezultāts  " Zaudējumi" ( darbosies visām vērtībām kas ir mazākas vai vienādas ar 0 )
END


Ja visi nosacījumi ir salīdzinājums vienam un tam pašam nosacījumam, kas attiecas uz dažāda tipa vērtībām, tad var izmantot cita tipa CASE funkcijas fomu .

CASE Time.CurrentMember.Level.Name                     – Ja Laika dimensijas tekošā rādītāja līmenī Nosaukums
WHEN 'Month'                                                              – atbilst " Mēnesis"
THEN Sum(LastPeriods(3), Measures.Store Sales)    –  tad summēt pēdējos trīs periodu ( 3 mēnešus) pārdošanas rezultātus
WHEN 'Day'                                                                  – Ja atbilst  " Diena "
THEN Sum(LastPeriods(90), Measures.Store Sales)  – Tad summēt pēdējās 90 dienu ( kas arī ir 3 mēneši) pārdošanas rezultātus
END

Lietojot IIF un CASE nosacījumus var izmantot standarta salīdzinājuma zīmes (=, <, <=, <>, >, >=) kā arī AND, OR and NOT  ( UN, VAI un NAV) operatorus, kā arī vēl dažus papildus specifiskos operatorus :

  • IS  - atgriezīs rezultātā to, vai divi objekti ir vienādi, piemēram, Customers.CurrentMember IS Customers.DefaultMember ( kas būs patiesi, ja Customers tekošais rādītājs ( Current member)  ir noklusētais  All Customers ( Visi Klienti)  rādītājs.
  • IN un  NOT IN  operatori atgriezīs rezultātā vai rādītājs ir iekļauts kādā noteiktā rādītāju kopā, Piemēram Customers.CurrentMember IN Customers.USA.CA.Children , šajā gadījumā vai Klienti tekošais rādītājs ( Current member )  ir no Kanādas klientiem.

 

...