Ostatnia aktualizacja: 1 października 2024
Czas czytania: 3 min
Spis treści

Co to jest DENSE_RANK?

DENSE_RANK jest funkcją okienkową w SQL, która przypisuje rangę każdemu wierszowi w ramach określonej partycji danych. W przeciwieństwie do funkcji RANK, DENSE_RANK nie pomija żadnych rang w przypadku remisów. Oznacza to, że jeśli dwa lub więcej wierszy ma tę samą wartość, otrzymają tę samą rangę, a następny wiersz otrzyma rangę o jeden większą.

W BigQuery, DENSE_RANK jest używany do tworzenia rankingów w ramach grup danych, co pozwala na sortowanie danych w sposób, który uwzględnia zarówno kolejność, jak i powtarzające się wartości.

Zastosowanie DENSE_RANK

DENSE_RANK ma wiele praktycznych zastosowań w analizie danych, przetwarzaniu zapytań i innych scenariuszach związanych z BigQuery, w tym:

  • Identyfikacja N-tych najwyższych wartości w grupach danych (np. 3 najwyższe pensje w każdym dziale)
  • Tworzenie rankingów produktów, klientów lub innych obiektów w oparciu o różne kryteria
  • Wyświetlanie danych w postaci hierarchii, gdzie każdy poziom reprezentuje określoną rangę
  • Analizowanie trendów i wzorców w danych, poprzez identyfikację rang poszczególnych wartości

Przykład użycia w BigQuery

Załóżmy, że mamy tabelę o nazwie „employee_data” z informacjami o pracownikach, w tym ich numerze identyfikacyjnym, dziale i pensji:

employee_id department_id salary
E1 D1 70000
E2 D1 80000
E3 D1 75000
E4 D2 60000
E5 D2 65000

Chcemy znaleźć 3 najwyższe pensje w każdym dziale. Możemy to zrobić za pomocą funkcji DENSE_RANK w następujący sposób:

SELECT department_id, salary
FROM (
  SELECT department_id, salary,
    DENSE_RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) as rank
  FROM `your_project.your_dataset.employee_data`
)
WHERE rank = 3;

W tym przykładzie, DENSE_RANK() jest używany do przypisania rangi każdemu wierszowi w ramach każdego działu, posortowanego malejąco według pensji. Następnie filtrujemy wyniki, aby wyświetlić tylko wiersze z rangą 3, co odpowiada 3 najwyższym pensjom w każdym dziale.

Najczęstsze błędy i sposoby ich unikania

Najczęstsze błędy popełniane przy użyciu DENSE_RANK w BigQuery obejmują:

  • Niepoprawne użycie klauzul PARTITION BY i ORDER BY w funkcji DENSE_RANK. Upewnij się, że klauzule te są używane prawidłowo, aby uzyskać pożądane wyniki.
  • Niewłaściwe zrozumienie różnic między DENSE_RANK, RANK i ROW_NUMBER. Zrozumienie, kiedy użyć każdej funkcji, jest kluczowe dla uzyskania prawidłowych wyników.
  • Brak zrozumienia wpływu NULL na funkcję DENSE_RANK. NULL jest traktowany jako mniejsza wartość niż każda inna wartość, co może wpływać na wyniki.

Optymalizacje i najlepsze praktyki

Aby zoptymalizować zapytania z użyciem DENSE_RANK w BigQuery, należy:

  • Upewnij się, że kolumny używane w klauzulach PARTITION BY i ORDER BY są prawidłowo zindeksowane.
  • Użyj klauzul WHERE i LIMIT, aby ograniczyć liczbę wierszy przetwarzanych przez funkcję DENSE_RANK.
  • Rozważ użycie funkcji APPROX_QUANTILES zamiast DENSE_RANK, jeśli dokładność nie jest krytyczna.

Porównanie z innymi dialektami SQL

DENSE_RANK jest dostępny w większości popularnych dialektów SQL, takich jak MySQL, PostgreSQL i Oracle. Funkcja ta działa w zasadzie tak samo w różnych dialektach, ale mogą istnieć niewielkie różnice w składni lub sposobie obsługi NULL.

Udostępnij wpis
Newsletter

Zapisz się do Newslettera

Zapisując się, wyrażasz zgodę na przetwarzanie Twoich danych do celów marketingowych, zgodnie z naszą polityką prywatności.

Optymalizacja kosztów BigQuery

Poradnik

10 sposobów na optymalizację kosztów BigQuery
Looker Studio Dashoard

Poradnik

Looker Studio dla Początkujących – Co to jest Looker Studio i jak z niego korzystać?
Grafika prezentująca BigQuery

Tutorial

BigQuery dla początkujących. Jakie są sposoby przechowywania danych w BigQuery?
Google Search Console Dashboard

Dashboard analityczny

Dashboard analityczny SEO – Looker Studio
Grafika pokazująca 5 dobrych praktyk podczas tworzenia narzędzia Business Intelligence

Poradnik

Najlepsze praktyki tworzenia dashboardów analitycznych i biznesowych
Grafika pokazująca odwrócony proces ETL

Poradnik

Replikacja danych do BigQuery  – Jedyny przewodnik po procesach ETL i ELT w GCP jakiego potrzebujesz
Ikona plików cookies

Ustawienia plików cookies

Używamy plików cookies, aby zapewnić Ci najlepsze wrażenia z korzystania z naszej strony. Możesz wybrać, które pliki cookies chcesz zaakceptować.
Ikona plików cookies

Informacje o plikach cookies

Szanujemy Twoją prywatność

Używamy plików cookies lub podobnych technologii w celu zapewnienia Ci dostępu do serwisu, usprawniania jego działania, profilowania i wyświetlania treści dopasowanych do Twoich potrzeb. W każdej chwili możesz zmienić ustawienia plików cookies lub podobnych technologii poprzez zmianę ustawień prywatności w przeglądarce bądź aplikacji lub zmianę swoich preferencji w zakładce Ustawienia cookies w stopce strony. Pamiętaj, że zmiana ta może spowodować brak dostępu do niektórych funkcji serwisu.
Dane osobowe dotyczące korzystania z serwisu, w tym zapisywane i odczytywane z plików cookies lub podobnych technologii będą przetwarzane w celu zapewnienia dostępu do serwisu, w celach marketingowych, w tym profilowania, w celach wewnętrznych związanych ze świadczeniem usług oraz prowadzeniem działalności gospodarczej, w tym dowodowych, analitycznych i statystycznych, wykrywania i eliminowania nadużyć oraz w celu wykonywania obowiązków wynikających z przepisów prawa.
Przysługuje Ci prawo do dostępu do danych, ich usunięcia, ograniczenia przetwarzania, przenoszenia, sprzeciwu, sprostowania oraz cofnięcia zgód w każdym czasie. Szczegółowe informacje dotyczące przetwarzania danych oraz przysługujących Ci uprawnień, informacje dotyczące plików cookies lub podobnych technologii, w tym dotyczące możliwości zarządzania ustawieniami prywatności, znajdują się w Polityce Prywatności.