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.
Note
Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie jest zalecana w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą nie być obsługiwane lub mogą mieć ograniczone możliwości. Aby uzyskać więcej informacji, zobacz Warunki dodatkowe korzystania z testowych wersji Microsoft Azure.
Filtrowanie powoduje zawężenie wyników do wierszy, które mają znaczenie. Agregacja podsumowuje te wiersze w liczby, sumy i średnie. W tym artykule pokazano, jak zastosować obie techniki w zapytaniach GQL względem grafu w Microsoft Fabric.
Przykłady korzystają z przykładowego zestawu danych sieci społecznościowej. Aby uzyskać pełne odniesienie do instrukcji i wyrażeń GQL, zobacz Przewodnik języka GQL.
Wymagania wstępne
- Element grafu z załadowanymi danymi. Jeśli jesteś nowy w grafie, najpierw ukończ samouczek.
- Znajomość podstawowych
MATCHiRETURNzapytań. Zobacz Przewodnik po języku GQL.
Filtrowanie wierszy za pomocą filtru
Użyj polecenia FILTER , aby zachować tylko wiersze spełniające warunek. Umieść FILTER po MATCH, aby zawęzić dopasowane wyniki.
Następujące zapytanie zwraca wszystkie kobiety z ich nazwiskiem i urodzinami:
MATCH (p:Person)
FILTER p.gender = 'female'
RETURN p.firstName, p.lastName, p.birthday
Połącz wiele warunków z AND i OR. Na przykład następujące zapytanie zwraca nazwy wszystkich kobiet urodzonych przed 1990 r.:
MATCH (p:Person)
FILTER p.gender = 'female' AND p.birthday < 19900101
RETURN p.firstName, p.lastName
Wskazówka
Aby uzyskać lepszą wydajność, filtruj podczas dopasowywania wzorca za pomocą klauzuli wbudowanej WHERE , a nie w oddzielnej FILTER instrukcji. Zobacz Filtrowanie podczas dopasowywania wzorca.
Filtrowanie podczas dopasowywania wzorca
Klauzule wbudowane WHERE wewnątrz MATCH wzorca ograniczają, które węzły i krawędzie są dopasowywane przed utworzeniem jakichkolwiek wyników. Takie podejście jest bardziej wydajne niż klauzula po dopasowaniu FILTER , ponieważ aparat zapytań przycina wiersze wcześniej.
Aby na przykład znaleźć osoby urodzone przed 1994 r. wraz z firmą, w której pracują, ograniczając wyniki do firm, których nazwa zaczyna się od "A":
MATCH (p:Person WHERE p.birthday < 19940101)-[:workAt]->(c:Company WHERE c.name STARTS WITH 'A')
RETURN p.firstName, p.lastName, c.name
Filtruj właściwości krawędzi w taki sam sposób. Aby na przykład zwrócić tylko osoby, które rozpoczęły pracę w firmie w 2000 roku lub nowszym:
MATCH (p:Person)-[w:workAt WHERE w.workFrom >= 2000]->(c:Company)
RETURN p.firstName, p.lastName, c.name, w.workFrom
Aby uzyskać więcej informacji na temat różnicy wydajności między filtrowaniem wbudowanym i po dopasowaniu, zobacz Optymalizowanie wydajności zapytań GQL.
Obsługa wartości null w filtrach
GQL używa trójwartościowej logiki: predykaty przyjmują wartość TRUE, FALSE lub UNKNOWN. Gdy wartość właściwości ma wartość null, porównania zwracają wartość UNKNOWN.
FILTER uznaje UNKNOWN za niezgodny, więc wiersz jest wykluczony.
Użyj IS NULL i IS NOT NULL , aby jawnie przetestować wartości null:
-- Only include people who have a nickname
MATCH (p:Person)
FILTER p.nickname IS NOT NULL
RETURN p.firstName, p.nickname
Użyj coalesce(), aby zastąpić wartość domyślną, gdy właściwość może być pusta.
MATCH (p:Person)
RETURN p.firstName, coalesce(p.nickname, p.firstName) AS displayName
Caution
NULL = NULL daje wynik UNKNOWN, a nie TRUE. Zawsze używaj IS NULL do testowania wartości pustych, a nie równości.
Agregowanie wyników za pomocą funkcji RETURN
Użyj funkcji agregujących w RETURN, aby podsumować wyniki. GQL obsługuje count(), sum(), avg(), min() i max().
Aby na przykład zliczyć wszystkie osoby na wykresie:
MATCH (p:Person)
RETURN count(*) AS totalPeople
Aby zliczyć unikalne wartości, takie jak liczba różnych firm zatrudniających osoby:
MATCH (p:Person)-[:workAt]->(c:Company)
RETURN count(DISTINCT c) AS companyCount
Grupuj wyniki za pomocą funkcji GROUP BY
GROUP BY i RETURN służą do grupowania wierszy według wspólnych wartości i obliczania agregatów w każdej grupie. To grupowanie jest odpowiednikiem GQL języka SQL GROUP BY.
Aby na przykład policzyć pracowników na firmę:
MATCH (p:Person)-[:workAt]->(c:Company)
LET companyName = c.name
RETURN companyName, count(*) AS employeeCount
GROUP BY companyName
ORDER BY employeeCount DESC
Grupuj według wielu kolumn i oblicza kilka agregacji jednocześnie. Na przykład podziel liczbę osób i zakres urodzin według płci i przeglądarki, zwracając 10 najczęściej używanych kombinacji:
MATCH (p:Person)
LET gender = p.gender
LET browser = p.browserUsed
RETURN gender,
browser,
count(*) AS personCount,
min(p.birthday) AS earliestBirthday,
max(p.birthday) AS latestBirthday
GROUP BY gender, browser
ORDER BY personCount DESC
LIMIT 10
Note
Wszystkie wyrażenia niegregowane w pliku RETURN muszą być wyświetlane w pliku GROUP BY. Wyrażenia, które nie są zawarte w GROUP BY, muszą korzystać z funkcji agregującej.
Sortowanie i ograniczanie zagregowanych wyników
Użyj ORDER BY i LIMIT razem z GROUP BY, aby znaleźć wyniki top-N.
Aby na przykład znaleźć pięć pierwszych miast według liczby mieszkańców:
MATCH (p:Person)-[:isLocatedIn]->(city:City)
LET cityName = city.name
RETURN cityName, count(*) AS residentCount
GROUP BY cityName
ORDER BY residentCount DESC
LIMIT 5
Important
Umieść ORDER BY przed LIMIT.
LIMIT zawsze ma zastosowanie do już posortowanego zestawu wyników.
Użyj funkcji CASE dla wartości warunkowych w wynikach
Użyj CASE/WHEN/THEN/ELSE do obliczania wartości warunkowych w RETURN lub LET.
Aby na przykład podzielić ludzi na epoki na podstawie ich roku urodzenia:
MATCH (p:Person)
RETURN p.firstName,
CASE WHEN p.birthday < 19800101 THEN 'Before 1980'
WHEN p.birthday < 20000101 THEN '1980–1999'
ELSE '2000 or later'
END AS era