Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 20

Mam kilka zapytań do różnych plików, do których ścieżkę chcę pobierać z tabeli w arkuszu:

baza źródło
EKF /EKF/2017.04.20 17q1 - all - EKF.xlsx
EKK /EKK/2017.04.20 17q1 - all - EKK.xlsx
EKI /EKI/2017.04.20 17q1 - all - EKI.xlsx


Na początku każdego zapytania chciałbym pobrać z tej tabeli ścieżkę do pliku:

let
    Matryca = Excel.CurrentWorkbook(){[Name="tŹródła"]}[Content],
    #"Przefiltrowano wiersze" = Table.SelectRows(Matryca, each ([baza] = "EKF")){0}[źródło]
in
    #"Przefiltrowano wiersze"

Chciałbym teraz zastąpić fragment [baza] = "EKF" funkcją, która pobierze nazwę aktualnej kwerendy (np. EKF) i użyje jej w miejsce tekstu wpisanego na stałe, żeby móc wkleić taki uniwersalny kod do każdej z kwerend. Czy da się coś takiego zrobić?

 

Mirosław_Janiak
  • Zapytał
  • @ Mirosław_Janiak | 12.05.2017
    • 1
    • 7
    • 1
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 0

Bogatszy o trzy miesiące doświadczenia w obcowaniu z PQ, mogę sobie odpowiedzieć, że się nie da, ale jednak się da. :) Nie spotkałem się z funkcją, o którą pytałem, jednak jak to zwykle z Excelem bywa, wystarczający zamiennik możemy stworzyć sami - bo tak naprawdę potrzebowałem własnej funkcji z argumentem wejściowym.

 Czyli po kolei:

1) Piszemy uniwersalną funkcję, która przyjmie parametr tekstowy:

let fPlik = (src as text) =>
let
    Matryca = Excel.CurrentWorkbook(){[Name="tŹródła"]}[Content],
    #"Przefiltrowano wiersze" = Table.SelectRows(Matryca, each ([baza] = src)){0}[źródło]
in
    #"Przefiltrowano wiersze"
in fPlik

2) Tworzymy kolejne kwerendy, które odwołają się do tej funkcji, wprowadzając różne argumenty (EKF, EKK lub EKI), np:

let
    Source = fPlik("EKK")
in
    Source

I to cała filozofia. :) Jeżeli będę potrzebował zmienić coś w sposobie pozyskania nazwy pliku z tabeli, zmienię to w jednym miejscu - w funkcji z punktu 1), a jeśli dojdą kolejne źródła, powielę kwerendy z punktu 2).

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 26.08.2017
    • 1
    • 7
    • 1