पावर क्वेरी SQL क्वेरी में क्लॉज़ में पैरामीटर


1

मैंने देखा है उदाहरण (और एक कोडित) जो स्प्रेडशीट में कोशिकाओं से पढ़े गए मानों के साथ एक पॉवर क्वेरी SQL कथन को पैरामीटर करता है। लेकिन ये हमेशा सरल तार्किक स्थिति जैसे व्यवहार करते हैं myField = <parameter>। मैं एक खंड में परिशोधित करना चाहता हूं ( myField IN <values> ), जहां की एक मनमानी संख्या values एक एक्सेल टेबल (एक ही फाइल में भी) से पढ़ा जाता है। क्या किसी को भी यह करना आता है?

जवाबों:


1

बदसूरत, लेकिन यह काम करने लगता है।

  1. वांछित पैरामीटर मानों के एकल कॉलम 'पैरामीटरवैल्यू' तालिका पर कब्जा करने के लिए पीक्यू क्वेरी बनाएं
  2. डमी कॉलम जोड़ें और डमी द्वारा सभी पंक्तियों को समूह बनाएं
  3. पैरामीटर सूची बनाने और अन्य स्तंभों को हटाने के लिए Text.Combine का उपयोग करें
  4. सेल वैल्यू के लिए नीचे ड्रिल
  5. खण्ड में वांछित sql क्वेरी बनाएँ (दक्षता के लिए 'शीर्ष 1 चुनें ...' का उपयोग करें)
  6. एडवांस्ड एडिटर का उपयोग करके, sql क्वेरी को हटाकर 'शीर्ष 1' को संशोधित करें और चरण 1 से क्वेरी को IN पैरामीटर के रूप में स्वीकार करें

QUERY1:

let
    source = *yourData*,
    addDummy = Table.AddColumn(source, "Custom", each 1),
    group = Table.Group(addDummy, {"Custom"}, {{"Count", each _, type table}}),
    string = Table.AddColumn(group, "queryString", each Text.Combine([Count][parameterValue],"','")),
    removeOtherColumns = Table.SelectColumns(string,{"queryString"}),
    queryString = removeOtherColumns{0}[queryString]
in
    queryString

फिर

QUERY2:

let
    Source = Sql.Database("*serverName*", "*dbName*", [Query=
Text.Replace("
select * from x
where parameterValue in('" & query1 & ")", ")", "')" )
])
in 
Source

0

केन पल्स ने अपने ब्लॉग में पावर क्वेरी के साथ एक पैरामीटर तालिका का उपयोग करने के बारे में एक अच्छा लिखा है: http://www.excelguru.ca/blog/2014/11/26/building-a-parameter-table-for-power-query/

कार्यकारी सारांश: मापदंडों के लिए एक तालिका बनाएँ, एक निर्दिष्ट पैरामीटर पढ़ने के लिए एक फ़ंक्शन लिखें, वांछित पैरामीटर को गतिशील रूप से लागू करने के लिए एम कोड में फ़ंक्शन का उपयोग करें।

एक स्ट्रिंग के रूप में अपने एसक्यूएल स्टेटमेंट के निर्माण के लिए आपको इस दृष्टिकोण का विस्तार करने की आवश्यकता हो सकती है।


जैसा कि मैंने अपने प्रश्न में उल्लेख किया है, मैं पहले से ही जानता हूं कि एकल पैरामीटर कैसे प्राप्त करें (मैंने एक उदाहरण के लिए एक लिंक भी शामिल किया है)। और हाँ, मैंने इसके बारे में टिप्पणी देखी WHERE IN। यह अभी भी नहीं है कि मैं किस बारे में पूछ रहा हूं। मैं जो करना चाहता हूं वह एक तालिका से मानों की एक सरणी को पढ़ना है।
Dmitry B.

0

मैं सबसे पहले एक पॉवर क्वेरी का निर्माण करूँगा। एक्सेल टेबल की पंक्तियों में पढ़ने के लिए "मान"। मैं लोड = को केवल कनेक्शन पर सेट करूंगा।

फिर मुख्य SQL- आधारित क्वेरी में मैं उस नए "मान" क्वेरी के साथ विलय करूंगा, और Join Kind = Inner को सेट करूँगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.