Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
SQL Server 2019 i starsze usługi Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
Ważne
Funkcja wyszukiwania danych została uznana za przestarzałą w usługach SQL Server 2017 Analysis Services i została zakończona w usługach SQL Server 2022 Analysis Services. Dokumentacja nie jest aktualizowana dla przestarzałych i wycofanych funkcji. Aby dowiedzieć się więcej, zobacz zgodność z poprzednimi wersjami usług Analysis Services.
W tym artykule opisano składnię filtru modelu i podano przykładowe wyrażenia.
Filtry na atrybutach przypadków
Filtry atrybutów zagnieżdżonej tabeli
Filtry dla wielu zagnieżdżonych atrybutów tabeli
Atrybuty filtrów brakujące w zagnieżdżonej tabeli
Aplikowanie filtrów na wielu zagnieżdżonych wartościach tabeli
Filtry dla atrybutów tabeli zagnieżdżonej i EXISTS
Składnia filtru
Wyrażenia filtru są zwykle równoważne wyrażeniom w klauzuli WHERE . Połącz wiele warunków z operatorami ANDlogicznymi , ORi NOT.
W tabelach zagnieżdżonych użyj operatorów EXISTS i NOT EXISTS. Warunek EXISTS ma wartość true, jeśli podzapytanie zwraca co najmniej jeden wiersz. Ten warunek umożliwia ograniczenie modelu do przypadków zawierających określoną wartość w tabeli zagnieżdżonej, takich jak klienci, którzy kupili element co najmniej raz.
Warunek NOT EXISTS przyjmuje wartość true, jeśli podzapytanie nie zwraca żadnych wierszy. Użyj tego warunku, aby ograniczyć model do klientów, którzy nigdy nie kupili określonego elementu.
Poniżej przedstawiono ogólną składnię:
<filter>::=<predicate list> | ( <predicate list> )
<predicate list>::= <predicate> | [<logical_operator> <predicate list>]
<logical_operator::= AND| OR
<predicate>::= NOT <predicate>|( <predicate> ) <avPredicate> | <nestedTablePredicate> | ( <predicate> )
<avPredicate>::= <columnName> <operator> <scalar> | <columnName> IS [NOT] NULL
<operator>::= = | != | <> | > | >= | < | <=
<nestedTablePredicate>::= EXISTS (<subquery>)
<subquery>::=SELECT * FROM <columnName>[ WHERE <predicate list> ]
filter
Zawiera co najmniej jeden predykat połączony przez operatory logiczne.
lista predykatów
Co najmniej jedno prawidłowe wyrażenie filtru oddzielone operatorami logicznymi.
Columnname
Nazwa kolumny struktury wydobywczej.
operator logiczny
AND, OR, NOT
avPredicate
Wyrażenie filtra, które można zastosować tylko do skalarnej kolumny struktury danych wydobywczych. Wyrażenie avPredicate może być używane zarówno w filtrach modelu, jak i w filtrach tabel zagnieżdżonych.
Wyrażenie, które używa dowolnego z następujących operatorów, można zastosować tylko do kolumny ciągłej. :
< (mniejsze niż)
> (większe niż)
>= (większe lub równe)
<= (mniejsze niż lub równe)
Uwaga / Notatka
Niezależnie od typu danych nie należy stosować tych operatorów do kolumn typu Discrete, Discretizedlub Key.
Wyrażenie, które używa dowolnego z następujących operatorów, można zastosować do kolumny ciągłej, dyskretnej, dyskretyzowanej lub kluczowej:
= (równa się)
!= (nie równa się)
IS NULL
Jeśli element avPredicate ma zastosowanie do zdyskretyzowanej kolumny, użyj dowolnej wartości z zasobnika docelowego w filtrze.
Nie należy definiować warunku jako AgeDisc = '25-35'. Zamiast tego użyj wartości z tego interwału.
Na przykład AgeDisc = 27 reprezentuje dowolną wartość w tym samym interwale co 27, czyli 25–35 w tym przykładzie.
nestedTablePredicate
Wyrażenie filtru, które ma zastosowanie do zagnieżdżonej tabeli. Można go używać tylko w filtrach modelu.
Element nestedTablePredicate akceptuje podzapytywanie tylko dla kolumny struktury wyszukiwania tabel.
Podkwerenda
Instrukcja SELECT, po której następuje prawidłowy predykat lub lista predykatów.
Używaj tylko avPredicate predykatów. Każdy predykat może odwoływać się tylko do kolumn w bieżącej tabeli zagnieżdżonej identyfikowanej przez columnName.
Ograniczenia składni filtru
Następujące ograniczenia dotyczą filtrów:
Używaj tylko prostych predykatów w filtrze, w tym operatorów matematycznych, skalarnych i nazw kolumn.
Składnia filtru nie obsługuje funkcji zdefiniowanych przez użytkownika.
Składnia filtru nie obsługuje operatorów innych niż logiczne, takich jak znaki plus i minus.
Przykłady filtrów
Poniższe przykłady pokazują, jak zastosować filtry do modelu eksploracji danych. Jeśli utworzysz wyrażenie filtru przy użyciu SQL Server Data Tools, okno Właściwości i okienko Wyrażenie w oknie dialogowym filtru pokaże tylko ciąg po WITH FILTER słowach kluczowych. Każdy przykład zawiera definicję struktury eksploracji, aby wyjaśnić typ kolumny i sposób jej użycia.
Przykład 1: Typowe filtrowanie z uwzględnieniem wielkości liter
W tym przykładzie pokazano prosty filtr, który ogranicza przypadki używane w modelu do klientów, których zawód jest architektem i którego wiek wynosi ponad 30 lat.
ALTER MINING STRUCTURE MyStructure ADD MINING MODEL MyModel_1
(
CustomerId,
Age,
Occupation,
MaritalStatus PREDICT
)
WITH FILTER (Age > 30 AND Occupation='Architect')
Przykład 2: Filtrowanie na poziomie przypadku przy użyciu atrybutów tabeli zagnieżdżonej
Jeśli struktura wyszukiwania zawiera tabele zagnieżdżone, możesz filtrować istnienie wartości w zagnieżdżonej tabeli lub filtrować według zagnieżdżonych wierszy tabeli zawierających określoną wartość. Ten przykład ogranicza przypadki używane dla modelu klientom w wieku powyżej 30 lat, którzy dokonali co najmniej jednego zakupu, który obejmował mleko.
Filtr może używać kolumn, których model nie zawiera. Zagnieżdżona tabela Products jest częścią struktury górniczej, ale model górniczy nie zawiera go. Nadal można filtrować po wartościach i atrybutach w zagnieżdżonej tabeli. Włącz przeglądanie szczegółowe, aby wyświetlić szczegóły przypadku.
ALTER MINING STRUCTURE MyStructure ADD MINING MODEL MyModel_2
(
CustomerId,
Age,
Occupation,
MaritalStatus PREDICT
)
WITH DRILLTHROUGH,
FILTER (Age > 30 AND EXISTS (SELECT * FROM Products WHERE ProductName='Milk')
)
Przykład 3: Filtrowanie na poziomie przypadku dla wielu zagnieżdżonych atrybutów tabeli
W tym przykładzie przedstawiono filtr trzyczęściowy: warunek dotyczy tabeli przypadków, inny warunek atrybutu w tabeli zagnieżdżonej oraz inny warunek dla określonej wartości w jednej z zagnieżdżonych kolumn tabeli.
Pierwszy warunek w filtrze , Age > 30dotyczy kolumny w tabeli przypadków. Pozostałe warunki dotyczą zagnieżdżonej tabeli.
Drugi warunek, EXISTS (SELECT * FROM Products WHERE ProductName='Milk'), sprawdza, czy tabela zagnieżdżona zawiera co najmniej jeden zakup obejmujący mleko. Trzeci warunek, Quantity >= 2, wymaga od klienta zakupu co najmniej dwóch jednostek mleka w jednej transakcji.
ALTER MINING STRUCTURE MyStructure ADD MINING MODEL MyModel_3
(
CustomerId,
Age,
Occupation,
MaritalStatus PREDICT,
Products PREDICT
(
ProductName KEY,
Quantity
)
)
FILTER (Age > 30 AND EXISTS (SELECT * FROM Products WHERE ProductName='Milk' AND Quantity >= 2)
)
Przykład 4: Filtrowanie na poziomie przypadku według braku zagnieżdżonych atrybutów tabeli
Ten przykład ogranicza przypadki klientów, którzy nie kupili określonego elementu, filtrując pod kątem braku atrybutu w zagnieżdżonej tabeli. Model używa klientów w wieku powyżej 30 lat, którzy nigdy nie kupili mleka.
ALTER MINING STRUCTURE MyStructure ADD MINING MODEL MyModel_4
(
CustomerId,
Age,
Occupation,
MaritalStatus PREDICT,
Products PREDICT
(
ProductName
)
)
FILTER (Age > 30 AND NOT EXISTS (SELECT * FROM Products WHERE ProductName='Milk') )
Przykład 5. Filtrowanie wielu zagnieżdżonych wartości tabeli
W tym przykładzie przedstawiono filtrowanie zagnieżdżonych tabel. Filtr tabeli zagnieżdżonej działa po filtrze uwzględniającym wielkość liter i ogranicza tylko wiersze w tabeli zagnieżdżonej.
Ten model może zawierać wiele wystąpień z pustymi zagnieżdżonymi tabelami, ponieważ EXISTS nie został określony.
ALTER MINING STRUCTURE MyStructure ADD MINING MODEL MyModel_5
(
CustomerId,
Age,
Occupation,
MaritalStatus PREDICT,
Products PREDICT
(
ProductName KEY,
Quantity
) WITH FILTER(ProductName='Milk' OR ProductName='bottled water')
)
WITH DRILLTHROUGH
Przykład 6: Filtrowanie według atrybutów tabeli zagnieżdżonej i EXISTS
W tym przykładzie filtr zagnieżdżonej tabeli ogranicza wiersze do tych, które zawierają mleko lub wodę butelkowaną. Instrukcja EXISTS następnie ogranicza model do przypadków z niepustą zagnieżdżoną tabelą.
ALTER MINING STRUCTURE MyStructure ADD MINING MODEL MyModel_6
(
CustomerId,
Age,
Occupation,
MaritalStatus PREDICT,
Products PREDICT
(
ProductName KEY,
Quantity
) WITH FILTER(ProductName='Milk' OR ProductName='bottled water')
)
FILTER (EXISTS (Products))
Przykład 7. Złożone kombinacje filtrów
Ten scenariusz przypomina scenariusz w przykładzie 4, ale jest znacznie bardziej złożony. Tabela zagnieżdżona ProductsOnSale ma warunek filtru (OnSale), co oznacza, że wartość OnSale musi być true dla produktu podanego w ProductName. W tym przypadku OnSale jest kolumną typu strukturalnego.
Druga część filtru dla elementu ProductsNotOnSale używa tej samej składni, ale filtruje produkty, dla których wartość OnSale to false (!OnSale).
Na koniec połączysz warunki i dodasz jeszcze jedno ograniczenie do tabeli przypadków. Wynikiem jest przewidywanie zakupów produktów na liście ProductsNotOnSale na podstawie przypadków uwzględnionych na liście ProductsOnSale dla wszystkich klientów w wieku powyżej 25 lat.
ALTER MINING STRUCTURE MyStructure ADD MINING MODEL MyModel_7
(
CustomerId,
Age,
Occupation,
MaritalStatus,
ProductsOnSale
(
ProductName KEY
) WITH FILTER(OnSale),
ProductsNotOnSale PREDICT ONLY
(
ProductName KEY
) WITH FILTER(!OnSale)
)
WITH DRILLTHROUGH,
FILTER (EXISTS (ProductsOnSale) AND EXISTS(ProductsNotOnSale) AND Age > 25)
Przykład 8. Filtrowanie dat
Możesz filtrować kolumny wejściowe według dat, tak jak w przypadku innych danych. Daty zawarte w kolumnie typu data/godzina są wartościami ciągłymi; w związku z tym można określić zakres dat przy użyciu operatorów, takich jak większe niż (>) lub mniejsze niż (<). Jeśli źródło danych nie reprezentuje dat według typu ciągłego danych, ale jako wartości dyskretne lub tekstowe, nie można filtrować według zakresu dat, ale musi określać poszczególne wartości dyskretne.
Nie można jednak utworzyć filtru w kolumnie daty w modelu szeregów czasowych, jeśli kolumna daty używana dla filtru jest również kolumną klucza modelu. To ograniczenie istnieje, ponieważ w modelach szeregów czasowych i modelach klastrowania sekwencji kolumna daty może być obsługiwana jako typ KeyTime lub KeySequence.
Jeśli musisz filtrować według dat ciągłych w modelu szeregów czasowych, możesz utworzyć kopię kolumny w strukturze wyszukiwania i filtrować model w nowej kolumnie.
Na przykład następujące wyrażenie filtruje kolumnę daty Continuous dodaną do modelu prognozowania.
=[DateCopy] > '12:31:2003:00:00:00'
Uwaga / Notatka
Wszelkie dodatkowe kolumny dodawane do modelu mogą mieć wpływ na wyniki. Jeśli nie chcesz, aby kolumna była używana do obliczania serii, dodaj ją tylko do struktury eksploracji, a nie do modelu. Możesz również ustawić flagę modelu w kolumnie na PredictOnly lub Ignore. Aby uzyskać więcej informacji, zobacz Modelowanie flag (wyszukiwanie danych).
W przypadku innych typów modeli można użyć dat jako kryteriów wejściowych lub kryteriów filtrowania, tak jak w dowolnej innej kolumnie. Jeśli jednak musisz użyć określonego poziomu szczegółowości, którego typ danych ciągły nie obsługuje, utwórz wartość pochodną w źródle danych przy użyciu wyrażeń w celu wyodrębnienia jednostki do użycia w filtrowaniu i analizie.
Ostrzeżenie
Po określeniu daty jako kryterium filtrowania użyj mm/dd/yyyy formatu niezależnie od formatu daty bieżącego systemu operacyjnego. Dowolny inny format powoduje błąd.
Jeśli na przykład chcesz filtrować wyniki centrum telefonicznego w celu wyświetlenia tylko weekendów, możesz utworzyć wyrażenie w widoku źródła danych, które wyodrębnia nazwę dnia tygodnia dla każdej daty, a następnie użyć tej wartości nazwy dnia tygodnia dla danych wejściowych lub jako dyskretnej wartości w filtrowaniu. Pamiętaj, że powtarzające się wartości mogą mieć wpływ na model, więc użyj tylko jednej z kolumn, a nie kolumny daty i wartości pochodnej.
Zobacz też
Filtry modeli wyszukiwania (Analysis Services — wyszukiwanie danych)
Testowanie i walidacja (eksploracja danych)