Blog

Window Functions trong Google Cloud Bigquery

Giới thiệu

Trong Bigquery các Window Functions, hoặc các Analytic Functions là một hàm để tính các giá trị tổng hợp trên một nhóm các dòng . Chúng trả về một giá trị duy nhất cho mỗi dòng, ngược lại với các hàm tổng hợp (Aggregate function) trả về một giá trị duy nhất cho một nhóm dòng.

>>Đọc thêm:

KHOÁ HỌC GOOGLE BIGQUERY FOR DATA ANALYSIS

KHOÁ HỌC TRUY VẤN VÀ THAO TÁC DỮ LIỆU (SQL) TỪ CƠ BẢN ĐẾN NÂNG CAO

LỘ TRÌNH TRỞ THÀNH DATA ENGINEER CHO NGƯỜI MỚI BẮT ĐẦU

DATA ENGINEER LÀ GÌ? CÔNG VIỆC CHÍNH CỦA DATA ENGINEER? CÁC KỸ NĂNG CẦN THIẾT

Aggregate vs window/analytic functions:

SELECT
letter,
SUM(number) AS aggregate
FROM
(
SELECT
'A' AS letter,
2 AS number
UNION ALL
(   SELECT
'A' AS letter,
3 AS number)
UNION ALL
(   SELECT
'C' AS letter,
6 AS number)
) AS table_3
GROUP BY
letter


Kết quả:

SELECT
  letter,
  SUM(number) OVER (PARTITION BY letter) AS `window`
FROM
  (
    SELECT
      'A' AS letter,
      2 AS number
    UNION ALL
(    SELECT
      'A' AS letter,
      3 AS number)
    UNION ALL
(    SELECT
      'C' AS letter,
      6 AS number)
  ) AS table_3

Kết quả:

Trong ví dụ đầu tiên, dữ liệu kết quả được nhóm theo chữ cái, nhưng trong ví dụ thứ hai, chúng ta đã giữ nguyên các dòng của mình.

Tại sao sử dụng window functions?

Các chức năng của window functions rất mạnh mẽ và khi bạn đã hiểu rõ về cách sử dụng chúng, bạn sẽ ngạc nhiên về việc chúng cho phép bạn làm điều đó. Một số trường hợp sử dụng phổ biến là:

  • Running/Cumulative Total (Tổng lũy kế)
  • Moving Average (Trung bình động)
  • Xếp hạng các hàng theo tiêu chí tùy chỉnh và nhóm
  • Tìm% Thay đổi qua từng năm

Cú pháp:

window_function_name ([arguments]) OVER (
   [PARTITION BY partition_expression] 
   [ORDER BY expression ASC | DESC] 
   [ROWS frame_clause])

Trong đó PARTITION BY biểu thị cách GROUP các hàng thành các phân vùng, ORDER BY cách sắp xếp thứ tự các hàng trong các phân vùng đó và ROWS những hàng nào cần xem xét trong các phân vùng có thứ tự .

Window Functions

Nói chung, window functions có thể được nhóm thành 3 loại:

  1. Navigation functions: Trả về giá trị được cung cấp cho một tiêu chí vị trí cụ thể (ví dụ: giá_trị_đầu tiên)
  2. Numbering functions: Gán một số (ví dụ: Rank) cho mỗi hàng dựa trên vị trí của chúng trong window được chỉ định
  3. Hàm phân tích: Thực hiện phép tính trên một tập giá trị (ví dụ: tổng)
  • FIRST_VALUE: FIRST_VALUE (value_expression [{RESPECT | IGNORE} NULLS]) -> Trả về value_expression cho hàng đầu tiên trong khung window hiện tại.
  • LAST_VALUE: LAST_VALUE (value_expression [{RESPECT | IGNORE} NULLS]) -> Trả về value_expression cho hàng cuối cùng trong khung window hiện tại.
  • NTH_VALUE: NTH_VALUE (value_expression, const_integer_expression [{RESPECT | IGNORE} NULLS]) -> Trả về value_expression cho hàng thứ N của khung window hiện tại.
  • LEAD: LEAD (value_expression [, offset [, default_expression]]) -> Trả về value_expression trên hàng tiếp theo.
  • LAG: LAG (value_expression [, offset [, default_expression]]) -> Trả về value_expression trên hàng trước.
  • PERCENTILE_CONT: PERCENTILE_CONT (value_expression, percentile [{RESPECT | IGNORE} NULLS]) -> Trả về phân vị của value_expression với nội suy tuyến tính (tỷ lệ liên tục).
  • PERCENTILE_DISC:  PERCENTILE_DIST (value_expression, percentile [{RESPECT | IGNORE} NULLS]) -> Trả về phân vị của value_expression (tỷ lệ rời rạc).

Đối với các chức năng này, chúng ta sẽ sử dụng dữ liệu demo sau:

SELECT
  'James Harden' AS player,
  2335 AS points,
  2020 AS season
UNION ALL
(SELECT
  'Damian Lillard' AS player,
  1978 AS points,
  2020 AS season)
UNION ALL
(SELECT
  'Devin Booker' AS player,
  1863 AS points,
  2020 AS season)
UNION ALL
(SELECT
  'James Harden' AS player,
  2818 AS points,
  2019 AS season)
UNION ALL
(SELECT
  'Paul George' AS player,
  1978 AS points,
  2019 AS season)
UNION ALL
(SELECT
  'Kemba Walker' AS player,
  2102 AS points,
  2019 AS season)
UNION ALL
(SELECT
  'Damian Lillard' AS player,
  2067 AS points,
  2019 AS season)
UNION ALL
(SELECT
  'Devin Booker' AS player,
  1700 AS points,
  2019 AS season)
UNION ALL
(SELECT
  'Paul George' AS player,
  1033 AS points,
  2020 AS season)
UNION ALL
(SELECT
  'Kemba Walker' AS player,
  1145 AS points,
  2020 AS season)

Kết quả:

Cách tìm sự thay đổi qua từng năm

SELECT DISTINCT
  player,
  season,
  FIRST_VALUE(points) OVER (PARTITION BY player ORDER BY season ASC ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) AS first_season,
  LAST_VALUE(points) OVER (PARTITION BY player ORDER BY season ASC ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) AS last_season,
  (100 * ((LAST_VALUE(points) OVER (PARTITION BY player ORDER BY season ASC ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) - FIRST_VALUE(points) OVER (PARTITION BY player ORDER BY season ASC ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING)) / FIRST_VALUE(points) OVER (PARTITION BY player ORDER BY season ASC ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING))) AS per_change
FROM
  top_scorers

Kết quả:

Chúng ta đã sử dụng FIRST_VALUE và LAST_VALUE để tìm điểm số cho từng cầu thủ trong dữ liệu mùa giải sớm nhất và gần đây nhất. Sau đó, chúng ta tính toán phần trăm chênh lệch bằng cách sử dụng:

100 * ((new value - old value) / old value) per_difference

Numbering functions

  • RANK: RANK () -> Trả về thứ hạng của mỗi hàng trong phân vùng có thứ tự (bắt đầu từ 1).
  • DENSE_RANK: DENSE_RANK () -> Trả về thứ hạng, nhưng các giá trị có cùng giá trị sẽ có cùng thứ hạng (bắt đầu từ 1).
  • PERCENT_RANK: PERCENT_RANK () -> Trả về thứ hạng phần trăm của một hàng.
  • CUME_DIST: CUME_DIST () -> Trả về thứ hạng tương đối của một hàng.
  • NTILE: NTILE (constant_integer_expression) -> Trả về số bucket sau khi chia mỗi phân vùng vào constant_integer_expression xô.
  • ROW_NUMBER: ROW_NUMBER () -> Trả về số hàng tuần tự cho mỗi phân vùng được sắp xếp.

⚠️ Numbering functions không cho phép [ROWS frame_clause]

Làm thế nào để nhận được top 3 kết quả cho mỗi nhóm?

SELECT
  *
FROM
  (
    SELECT
      season,
      RANK() OVER (PARTITION BY season ORDER BY points DESC) AS points_rank,
      player,
      points
    FROM
      top_scorers
  ) AS table_1
WHERE
  (points_rank <= 3)

Kết quả:

Trong ví dụ này, chúng ta đã sử dụng RANK để xếp hạng từng người chơi theo điểm qua mỗi mùa giải. Sau đó, chúng ta sử dụng một truy vấn phụ để sau đó chỉ trả về top 3 người chơi được xếp hạng cao nhất cho mỗi mùa giải.

Aggregate functions

Các hàm tổng hợp có sẵn bên ngoài các window functions , nhưng có thể được áp dụng bổ sung trên một window cụ thể.

  • ANY_VALUE: ANY_VALUE (expression) [OVER (…)] -> Trả về biểu thức cho một số dòng được chọn từ nhóm. Về cơ bản là một lựa chọn ngẫu nhiên từ một biểu thức.
  • ARRAY_AGG: Trả về một mảng giá trị biểu thức.
ARRAY_AGG([DISTINCT] expression [{IGNORE|RESPECT} NULLS]
  [ORDER BY key [{ASC|DESC}] [, ... ]]  [LIMIT n]
) [OVER (...)]
  • AVG: AVG ([DISTINCT] expression) [OVER (…)] -> Trả về giá trị trung bình của các giá trị đầu vào không phải NULL.
  • CORR: CORR (X1, X2) [OVER (…)] -> Trả về hệ số tương quan Pearson cho một tập hợp các cặp số.
  • COUNT: COUNT ([DISTINCT] expression] [OVER (…)] -> Trả về số phần tử [khác biệt] trong biểu thức
  • COUNTIF: COUNTIF (expression) [OVER (…)] -> Trả về tổng số giá trị True cho biểu thức
  • COVAR_POP: COVAR_POP (X1, X2) [OVER (…)] -> Trả về hiệp phương sai tổng thể của một tập hợp số
  • COVAR_SAMP: COVAR_SAMP (X1, X2) [OVER (…)] -> Trả về hiệp phương sai mẫu của một tập hợp số
  • MAX: MAX (expression) [OVER (…)] -> Trả về giá trị không NULL lớn nhất của biểu thức.
  • MIN: MIN (expression) [OVER (…)] -> Trả về giá trị không NULL nhỏ nhất của biểu thức.
  • ST_CUSTERDBSCAN: ST_CLUSTERDBSCAN (address_column, epsilon, Minim_geographies) OVER (…) -> Thực hiện phân nhóm DBSCAN trên một cột địa lý
  • STDEV_POP: STDDEV_POP (expression [DISTINCT]) [OVER (…)] -> Trả về độ lệch chuẩn tổng thể của các giá trị
  • STDEV_SAMP: STDDEV_SAMP (expression [DISTINCT]) [OVER (…)] -> Trả về độ lệch chuẩn mẫu của các giá trị
  • STRING_AGG: STRING_AGG ([DISTINCT] expression [, delimiter] [ORDER BY key [{ASC | DESC}] [, …]] [LIMIT n]) [OVER (…)] -> Trả về giá trị nhận được bởi nối tất cả các giá trị không rỗng
  • SUM: SUM (expression [DISTINCT]) [OVER (…)] -> Trả về tổng của tất cả các giá trị không rỗng
  • VAR_POP: VAR_POP (expression [DISTINCT]) [OVER (…)] -> Trả về phương sai tổng hợp của kết quả
  • VAR_SAMP: VAR_SAMP (expression [DISTINCT]) [OVER (…)] -> Trả về phương sai mẫu của kết quả

Làm thế nào để tìm một tổng lũy kế?

SELECT
  season,
  player,
  points,
  SUM(top_scorers.points) OVER (PARTITION BY player ORDER BY season ASC) AS running_total_points
FROM
  top_scorers

Kết quả:

Để tìm tổng lũy kế, chỉ cần sử dụng SUM với mệnh đề OVER trong đó bạn chỉ định các nhóm của mình ( PARTITION BY ) và thứ tự thêm chúng ( ORDER BY ).

Làm thế nào để tìm một moving average (đường trung bình)?

SELECT
  date,
  number,
  AVG(number) OVER (ORDER BY date ASC ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_avg
FROM
  (
    SELECT
      date,
      number
    FROM
      UNNEST(GENERATE_DATE_ARRAY('2020-01-01', '2020-02-01')) AS date
      CROSS JOIN UNNEST(GENERATE_ARRAY(1, 30)) AS number
  ) AS table_1
LIMIT
  10

Kết quả:

Để đặt cửa sổ trung bình động 7 ngày, chúng ta có thể sử dụng ROWS BETWEEN 6 PRECEDING AND CURRENT ROW trong mệnh đề OVER.

Làm thế nào để tìm mặt hàng phổ biến nhất trong một nhóm?

SELECT
  item,
  category,
  qty,
  LAST_VALUE(item) OVER (PARTITION BY category ORDER BY qty DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS most_popular
FROM
  (
    SELECT
      'apple' AS item,
      'fruit' AS category,
      1 AS qty
    UNION ALL
(    SELECT
      'pear' AS item,
      'fruit' AS category,
      3 AS qty)
    UNION ALL
(    SELECT
      'green beans' AS item,
      'vegetable' AS category,
      4 AS qty)
    UNION ALL
(    SELECT
      'brussel sprouts' AS item,
      'vegetable' AS category,
      5 AS qty)
  ) AS table_4

Kết quả:

>>Đọc thêm:

KHOÁ HỌC GOOGLE BIGQUERY FOR DATA ANALYSIS

KHOÁ HỌC TRUY VẤN VÀ THAO TÁC DỮ LIỆU (SQL) TỪ CƠ BẢN ĐẾN NÂNG CAO

LỘ TRÌNH TRỞ THÀNH DATA ENGINEER CHO NGƯỜI MỚI BẮT ĐẦU

DATA ENGINEER LÀ GÌ? CÔNG VIỆC CHÍNH CỦA DATA ENGINEER? CÁC KỸ NĂNG CẦN THIẾT

    Xin vui lòng điền vào form dưới đây. Chúng tôi sẽ liên hệ lại ngay cho bạn khi nhận được thông tin:


    Leave a Reply

    Your email address will not be published. Required fields are marked *

    suarairama pestanada beritabandar rumahjurnal podiumnews dailyinfo wikiberita zonamusiktop musicpromote bengkelpintar liburanyuk jelajahhijau carimobilindonesia jalanjalan-indonesia otomotifmotorindo ngobrol olahraga mabar dapurkuliner radarbandung indosiar radarjawa medianews infowarkop kalbarnews ketapangnews beritabumi kabarsantai outfit faktagosip beritagram lagupopuler seputardigital updatecepat marihidupsehat baliutama hotviralnews cctvjalanan beritajalan beritapembangunan pontianaknews monitorberita koronovirus museros iklanjualbeli festajunina capoeiravadiacao georgegordonfirstnation 1reservoir revisednews

    Teknik Presisi Mengatur Kecepatan Spin Mahjong Ways 3 Untuk Kenaikan Hasil yang Ideal Mulai dengan Doa Menang Cara Efektif Menganalisis Trik Baccarat Online Secara Sistematis Cara Unlock Pola Tersembunyi Mahjong Wins 3 Sebagai Langkah Pintar Meraih Kemenangan Trik Escape di Putaran Cepat Pragmatic Gate Olympus Sambut Kemenangan Spesial Pelajari Membaca Pola Sederhana Mahjong Ways 2 Bikin Menang Tipis Tapi Tetap Stabil Taktik Rahasia Supir Pribadi Memanggil Scatter Hitam di Mahjong Ways 2 Saat Drive Thru Cara Intuisi Bekerja Mencatat Pola Baccarat Online Melalui Skema yang Sempurna Tafsir Personal Membuka Pintu Berkah Lewat Mahjong Wins 3 Bikin Keuntungan Tetap Stabil Arsip Data Narasi Gates of Olympus Ciptakan Putaran Warna Spesial Lebih Menguntungan Resonansi Sunyi di Tengah Irama Mahjong Ways 3 Berikan Labirin Menuju Cuan Besar Perhitungan Panas dan Dingin Alur Spin Wild Bandito untuk Mengincar Target yang Realistis Rahasia Kemenangan 99% dengan Pola Top Scatter di Mahjong Ways 3 Bikin Heboh Dunia Maya Metode Baru Kelola Emosi Bermain Baccarat Online dengan Cermat Melalui Perhitungan yang Tepat Seni Mengatur Ritme Mahjong Wins 3 Layak Menjadi Pondasi Kuat Menjaga Keuntungan yang Seimbang Langkah Tepat Menghadapi Sulitnya Kemunculan Scatter di Gates of Olympus dengan Strategy yang Kondusif Semarang Menjadi Kota Fantasi Mahjong, Tukang Edit Foto Mengunggah Permainan Pola Mahjong Terbaru Hujan Deras, Sejumlah Pengendara Menepi dan Mencoba Bermain Mahjong Wins 3 yang Sedang Bocor Saat Ini Fenomena Tengah Malam, Mahjong Ways 3 Tiba-Tiba Berubah Warna dan Disebut Masuk Mode Rahasia Scatter Black Peneliti Visual SUHUBET Ungkap Sinkronisasi Pola Mahjong dan Musik, Disebut Harmoni Terserasi Tahun Ini Kobarkan Semangat Syair Mahjong, Tangerang Gelarkan Protokol Putaran Cepat 50 Kali Dalam 1 Kali Coba Rahasia di Balik Pola Mahjong Wins 3 Akhirnya Ditemukan! Pemain Asal Bandung Bongkar Trik yang Selama Ini Disembunyikan Strategi Langkah Mundur di Mahjong Ways Tiba-Tiba Populer, Katanya Bisa Bikin Pola RTP Tetap Stabil Sepanjang Hari Dari Analisis Panjang ke Hasil Mengejutkan! Mahjong Wins 3 Ternyata Punya Pola Tersembunyi yang Jarang Disadari Pemain Rahasia Pemain Surabaya Akhirnya Terkuak! Mahjong Ways 2 Bisa Pecah Berkali-Kali Cuma Modal Rotasi 15 Menit Sekali Fenomena Baru Mahjong Wins! Pemain Bogor Ungkap Pola Pergantian Hari yang Selalu Bawa Kemenangan Besar Fenomena Langka di Komunitas Digital Mahjong Black Dragon, Visualnya Bikin Kagum Perpaduan Suara dan Penyajian Semerbak untuk Mata Kita, Mahjong Sedang Melakukan Pembangunan Besar Besaran Beginilah Caranya Agar Perputaran Selalu Stabil dan Membuat Mahjong Seru untuk Diperjuangkan Perbincangan yang Memberikan Esensi Kehidupan Mahjong dengan Datangnya Pola Wild Anti Kalah Host Livestreaming Sedang Menjadi Perbincangan, Dikarenakan Bermain Mahjong dengan Pecahan Besar Diketahui Bermain di SUHUBET Menggunakan Mahjong Ways 2, Pemuda Hilman Mendapatkan 29 Juta Membagikan Cara Membuat Kandang Ayam Ternak Hanya Menggunakan Lucky Neko Saja, Joko Mendapatkan 410.000.000 dan Membagikan Pengalaman dan Cara Merawat Burung Beo Pola Terbaru Hari Ini dari Anggi Analisis Data Permainan Mahjong Ways 2 Selama 3 Bulan Tim Analisis Data Indonesia Telah Bermain Memecahkan Kode Mahjong Wins 3, Perjuangan 2 Bulan Akhirnya Terbayarkan dengan 320 Juta Kantor Suhubet Telah Merilis RTP Terbaru Mahjong Wins 3 99%, Hasil dari Data Analisis Para Pemain Baru Penjual Tahu Bulat Dadakan Dikagetkan Sama Pecahnya Wild Mahjong Wins 3 Dengan Membawakan 450 Juta Pemain Pro Dari Kota Madiun Berbagi Taktik Permainan Mahjong Wins 3 Yang Menghasilkan Berbagai Kemenangan Terbukti Ampuh, Suherman Menggunakan Pola Terlarang Permainan Mahjong Ways 3 Dengan Hasil 320.000.000 Rahasia Terbaru Pola Mahjong Ways 3 Terbongkar RTP98% Membawakan Wild Sebesar 410.000.000 Suli Dari Pemantang Siantar Membawakan Pola Terbaru Hasil Analisa Terbaru Mahjong Wins 3 Dengan Cara High Risk High Return Perpaduan Simbol Wild dan Scatter yang Menggemparkan Mahjong Ways 3, Bentuk Apresiasi Para Pemain Setiap SUHUBET Putaran 3 Manual dan 20 Auto Membuahkan Hasil, Pemain Bernama Kintami di Mahjong Ways 3 Ciptakan Momen yang Sangat Keren Pola Terbaru Diberi Nama ‘Harmony Data’ karena Ditemukan dari 1.200 Putaran Analisis oleh Komunitas SUHUBET Pola Unik Anak Bengkel Ini Bikin Komunitas Mahjong Ways 3 Terkejut, Disebut Punya Akurasi Tinggi Gelombang Wild Tak Biasa, Scatter Muncul Bersamaan Seperti Dipanggil oleh Pola Data Baru di Mahjong Ways 3 Taktik Licik Digunakan oleh Maskapai Mahjong dengan Memberikan Diskon Perputaran dan Paket Jalan Wild Sebesar Rp 312 Juta Inspiration Bermain Catch The Wild Symbol Mengundang Banyak Pemain Mencoba di Mahjong Ways 3 Karena Membagikan Sejumlah Kemenangan Menarik Pola Terbaru Menjamin Cuan Hanya Bermodal Receh 50 Ribu Sudah Bisa Meraup Untung Rp 21 Juta di SUHUBET Strategi Ganas dan Terlarang Digunakan Pelajar SMK dalam Bertarung Melawan Mahjong Wins 3 dengan Pencapaian Rp 152 Juta Ini yang Dinamakan Berkat, Supir Angkot Membeli Motor Vario 160 dengan Penghasilan dari Mahjong Wins 3, Simak Pola Terbaru dari Supir Angkot Pemanfaatan Strategi dan Fitur Simbol Wild Mahjong Ways 1 Menghadirkan Pengalaman Mengejar Api Kemenangan di Dunia Digital Ini Programing Asal Jepara Membuat Fusion Dari Wild Mahjong Wins Menghadirkan Pengalaman Membaca Pola RTP Terbaru Koi Gates Memberikan Rp 25.000.000, Triyono Memberikan Pengalaman Memelihara dan Cara Merawat Ikan Koi Supir Kontainer Mendapatkan Rp 75.000.000 di Mahjong Ways 3 Pada Saat Ia Sedang Beristirahat di Rest Area Tukang Bangunan Asal Jawa Tengah Membuat Rumah Baru Untuk Dirinya Dengan Bermodalkan Rp 450.000.000 Hasil Dari Mahjong Ways 3 Yang Ia Mainkan Pahami Dan Cobain Takti Terbaru Kakek Zeus Yang Dipastikan Mendapatkan Hadiah GrandPrize 650.000.000 Kakek Asal Goa Jomblang Memberikan Bansos RTP Mahjong Ways 2 Dengan Aturan Take Profit Rp 152.000.000 Tukang Servis HP Membongkar HP Seorang Senior Mahjong Wins 3 Dan Mendapatkan Pola Bermain 20 30 10 50 Yang Selalu Membuat Cuan Jangan Terengah Takti Yang Telah Dibuktikan Anti Boncor di Kakek Zeus Menggunakan Pola 40 50 20 Berhasil Membuat Tukang Cilok Keliling Membeli Motor Baru Jangan Terengah Takti Yang Telah Dibuktikan Anti Boncor di Kakek Zeus Menggunakan Pola 40 50 20 Berhasil Membuat Tukang Cilok Keliling Membeli Motor Baru Cara Cerdas Menggunakan Simbol Wild dari Analisis Data Mahjong Ways 2 Mendapatkan 10 Juta Jangan Terengah Takti Yang Telah Dibuktikan Anti Boncor di Kakek Zeus Menggunakan Pola 40 50 20 Berhasil Membuat Tukang Cilok Keliling Membeli Motor Baru Mahjong Analisa Pola Terbaru dan Dikatakan Pola Terlarang dari Bandar Karena Menghasilkan 125 Juta untuk Pemain Baru Stick Biliar Baru yang Dibawa Pemain Pro Ternyata Dibeli Menggunakan Hasil Mahjong Wins 3 yang Ia Menangkan Sebesar 260 Juta Tak Hanya Menyediakan Pemancingan Ikan Galatama di Jember Juga Menyediakan Turnamen Mancing Simbol Wild dengan Hasil Spektakuler Tak Diduga Samberan Petir di HP Pelajar SMA Ternyata Berasal dari Kakek Zeus dengan Pengali X500 Turun pada Saat yang Sama Memberikan Maxwin 120 Juta Gempa Papua 6,7 SR Bikin Panik, Komunitas SUHUBET dan Mahjong Ways 1 Sebut Getarannya Mirip Pola Scatter Cepat Indonesia Beli 42 Jet Tempur, Publik di SUHUBET Bandingkan Strateginya dengan Pola Panas Mahjong Wins 3 Kasus Warga Australia di Bali, Warganet di SUHUBET Mahjong Wins 2 Samakan Dramatiknya dengan Plot Permainan Digital Program Makanan Gratis Sekolah Tersendat, Netizen di Mahjong Ways 2 SUHUBET Sebut Polanya Mirip Ritme Naik-Turun Scatter Uji Bahan Bakar Ramah Lingkungan Dimulai, Forum Mahjong Ways 3 di SUHUBET Ramai Bahas Konsistensi Polanya Energi Bersih dan Pola Alamiah Mahjong Ways 2 Jadi Perbincangan di SUHUBET Ilmuwan Dinyatakan Bebas, Komunitas SUHUBET Kaitkan dengan Pola Rebound Mahjong Wins 3 Indonesia Beli 42 Jet Tempur, Netizen SUHUBET Sebut Mirip Strategi Mahjong Wins 2 Patrick Kluivert Dipecat, Netizen SUHUBET Bandingkan dengan Pola Keberuntungan Mahjong Ways 1 SUHUBET Bahas Program Digital Ekonomi dan Pola Mahjong Ways 3 yang Sedang Naik Daun Cerita Tukang Bakso yang Mendadak Viral Usai Dapat Kejutan Tak Terduga Saat Hujan Deras Data Baru Tunjukkan Pola Perputaran Ekonomi Mirip Strategi Anak Muda di Mahjong Wins 2 Fenomena Aneh di Pontianak Warga Kaitkan dengan Pola Cepat yang Viral di Medsos Gempa Kecil Guncang Papua Komunitas SUHUBET Bandingkan Getarannya dengan Pola Scatter Mahasiswa Ini Temukan Rumus Pola Keberuntungan Netizen Sebut Mirip Mahjong Ways 3 Bocah SD di Singkawang Jadi Sorotan Pola Mainnya Disebut Seakurat Profesional Dosen Ekonomi Buka Suara Soal Fenomena Pola Cuan Disebut Menular ke Dunia Digital Pakar Feng Shui Bongkar Rahasia Perputaran Keberuntungan Netizen Mirip Pola Scatter Hitam Tren Pola Cepat di Media Sosial Bikin Heboh Netizen Kaitkan dengan Mahjong Wins 3 Warkop Kecil di Surabaya Ramai Didatangi Setelah Video Pola Unik Viral di TikTok Bocoran Pola Rahasia dari Komunitas SUHUBET Disebut Punya Akurasi Lebih dari 90% Fenomena Anak Gen-Z Takut Ketinggalan Pola Disebut Sebagai Era Baru Cuan Cepat Hasil Analisis Digital Pola Cepat Viral di SUHUBET Disebut Bisa Picu Efek Domino Netizen Ramai Bahas Pola Simbol Keberuntungan Ternyata Terinspirasi dari Mahjong Ways Seorang Supir Travel Mendadak Viral Usai Menemukan Pola Aneh Saat Istirahat di Jalan Tol Cerita Pemuda Asal Bandung Viral Setelah Temukan Pola Kehidupan dari Game Digital Populer Dosen Ekonomi Sebut Pola Digital Mirip Mekanisme Pasar, Netizen Langsung Bahas Hebatnya Logika Itu Fenomena Komunitas Digital Bahas Pola Analisis Unik, Disebut Bikin Hidup Lebih Teratur Komunitas SUHUBET Disebut Punya Akurasi Analisis Lebih dari 90%, Banyak yang Tak Percaya Tren Analisis Pola Digital Kembali Naik, Banyak Disebut Mirip Gaya Berpikir Mahasiswa Generasi Z Fenomena Mahjong dan Pola Klik Digital yang Ternyata Punya Akurasi Tinggi di Tahun 2025 Mahjong 2025 Bukan Sekadar Game Tapi Fenomena Pola Data yang Sedang Diteliti Banyak Komunitas Pola Mahjong 2025 Disebut Lebih Stabil Banyak yang Kaget Melihat Hasil Analisis Digitalnya Pola Mahjong 2025 Jadi Sorotan Disebut Punya Irama Klik Unik yang Bikin Banyak Orang Penasaran Rahasia Pola Mahjong Mulai Terbongkar Komunitas Digital Temukan Pola Klik yang Tak Pernah Gagal Eksperimen Grid Staking 2–1–3–2 Versi Dimas UI, Tercatat Stabil 94,8% Dalam 50 Menit Pengujian Berlapis Fenomena Irama Scatter dari Tim Research Jogja, Ubah Cara Main Manual Jadi Auto Sync 4x Lebih Cepat Metode Pola Klik Ala Rani, Data Analyst Asal Bandung: Irama 1–2–1–3 Tembus Akurasi 96,2% Setelah 68 Menit Eksperimen Mandiri Model Data Wave Scatter dari Mahasiswa IT Malang Terbukti Bisa Aktifkan Wild Secara Bersamaan di Menit Ke-43 Pola Reverse Flow Buatan Komunitas Surabaya Diuji 15 Kali, Hasilnya Sinkron Dengan RTP PGSOFT 95,7% Tanpa Gangguan Server Investasi Rp50 Triliun Di KEK Galang-Batam Dorong Hilirisasi Bauksit dan Prospek Baru Bagi Masyarakat Kejaksaan Batam Ungkap Dugaan Korupsi Asuransi Aset PT Persero, Empat Tersangka Resmi Ditahan Menjelang Akhir Tahun, Harga Beras di Batam Terpantau Stabil Wali Kota Amsakar Pastikan Pasokan Aman Penyelundupan Sisik Trenggiling Senilai Rp1,2 Miliar Digagalkan di Pelabuhan Batam, Satu Tersangka Diamankan Warga Batam Siaga: BMKG Prediksi Hujan Petir & Gerimis Sepanjang Hari di Wilayah Kota Dari Bali Hingga Seoul, Tren Spa Ramah Lingkungan dan Filosofi Mahjong Ways Mulai Jadi Gaya Hidup Baru Di Balik Hening dan Aroma Kayu Manis: Pola Ketenangan yang Sama Seperti Saat Menemukan Irama di Mahjong Wins Gelombang Baru Wellness di Asia Pasifik: Saat Spa dan Pola Mahjong Wins Sama-Sama Bicara Tentang Kesabaran dan Irama Rahasia Di Balik Senyum Para Penerima APSWC 2025 Awards: Dari Pola Hidup Seimbang Hingga Filosofi Mahjong Ways Wellness Tak Lagi Sekadar Tren: Data Menunjukkan Pola Mahjong Ways dan Mindfulness Kini Jadi Arah Baru Dunia repository.tdjpublisher.com