3 Replies Latest reply: Jul 14, 2016 4:31 AM by Gysbert Wassenaar RSS

    Genaue Funktion von PICK(MATCH())

    Friedrich Hofmann

      Hallo,

       

      ich bin mittlerweile mit einem anderen BI-Tool unterwegs, nämlich mit Crystal_Reports von SAP. Das hat sicher einige Nachteile ggü. QlikView, aber so schlecht ist es auch nicht.

      Jetzt hab ich da eine Funktion entdeckt - bzw. zwei - und frage mich, welcher von den beiden die PICK(MATCH())-Funktion in QlikView, das wäre wohl die Entsprechung, eher entspricht:

      - Die SELECT_CASE-Abfrage, die hört bei der ersten Abfrage, die TRUE ergibt, auf und fragt die folgenden Parameter nicht ab,

        d.h. der speziellste/seltenste Fall sollte ganz vorn stehen, weil ein einmal gefülltes Abfrageergebnis ja nicht mehr revidiert wird.

      - Die SWITCH-Abfrage macht eigtl. das gleiche, auch hier gibt es eine Reihe von Teilabfragen, aber im Gegensatz zur SELECT_CASE

        fragt die JEDEN Teil ab, auch wenn bereits einer TRUE ergeben hätte; Hier ist die Reihenfolge also nicht so entscheidend.

       

      Dass alle diese Konstrukte das gleiche tun wie eine Reihe geschachtelter IF-Konstrukte, ist eh klar. Die Frage ist, welcher dieser beiden Varianten entspricht die PICK(MATCH())-Funktion? Hört die beim ersten jew. gefundenen TRUE auf oder fragt die jeden Parameter ab?

       

      Danke vielmals!

      Gruß,

       

      DataNibbler

        • Re: Genaue Funktion von PICK(MATCH())
          Friedrich Hofmann

          Mal etwas allgemeiner gefragt (meine konkrete Frage nach der PICK(MATCH()) bleibt aber stehen):

           

          Hätte jemand hier Lust und sieht einen Sinn darin, mit mir zusammen so eine Art "Übersetzungshilfe" zwischen verschiedenen BI-Tools aufzubauen? Ich fang da grad an, aber große Pläne hab ich damit eigtl. nicht, so was sollte dann wie ein WIKI allgemein zur Verfügung stehen, denke ich.

          Bisher hab ich da nur ein paar wenige Befehle drin, aber es sollen natürlich mehr werden, und zwar, soweit als möglich, immer gleich in

          - Excel,

          - QlikView und

          - Crystal_Reports

          weil wie mir, nachdem ich mit all diesen Tools schon BI betrieben habe, immer klarer geworden ist, jedes Tool mit zwar anderer Syntax einen im Kern immer ähnlichen Vorrat an Daten-Manipulationen mitbringt. Deshalb hab ich mich jetzt mal darangesetzt, lfr. so eine Art Übersetzungshilfe zwischen diesen Tools aufzubauen.

           

          Gruß,

           

          DataNibbler

            • Re: Genaue Funktion von PICK(MATCH())
              Friedrich Hofmann

              Hello,

               

              sorry, I only just realized that I have written all this in German, the main common language of this forum being English. So let me translate:

               

              I have for a while been working with a different BI tool, Crystal_Reports by SAP.

              This tool has two functions, both of which do approximately the same as a PICK(MATCH()) in QlikView:

              - SELECT_CASE - this one stops as soon as one query returns TRUE, so you have to take care, the most specific/

                 rarest case should be queried first, then the more general;

              - SWITCH does just the same, it does a series of queries, but the difference is that SWITCH does NOT stop, it queries

                 every case that is specified in the clause, so the order is not so critical - but that can make a difference

                 performance-wise, of course

               

              My question now is, which of these two is closer to PICK(MATCH()) - I think it is the SWITCH clause which does NOT stop before the full series of cases has been queried, right?

              Other candidates would be - nested IFs, of course - and, well, there are others like ALT()

               

              Can anyone help me out here, please?

               

              Thanks a lot!

              Best regards,

               

              DataNibbler

                • Re: Genaue Funktion von PICK(MATCH())
                  Gysbert Wassenaar

                  The Select case is similar to the pick-match combination. Both only evaluate the branches until a result is found. The switch is like a set of nested if's where each branch is always evaluated. In a pick-match the order is important. Match will return only one result and that number is used to pick the right result from the pick-list. Get the order of that pick-list wrong and you get the wrong result.