H3 индексирования в Clickhouse где можно почитать про примеры использования? Моя задача состоит в том, чтобы с бекенда принимать выделенную область и быстро (+ точно, не выходя за рамки) фильтровать из большого массива данных по этим координатам. Заранее благодарю за ответы!
                  
                  
                
В целом рабочий вариант, на счет примеров наверное нет
 Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  очень мало информации удалось найти в сети... как например организовывать данные в таблице? Делать 15 столбцов по каждому resolution индекса H3 или обойтись одним столбцов? Как передавать в фильтр WHERE координаты выбранной области?
ну логично хранить самое маленькое разрешение
> Делать 15 столбцов по каждому resolution индекса H3 Точно нет, думаю одного с какой то разумной точностью хватит. (например 9) > Как передавать в фильтр WHERE координаты выбранной области? Кодируя их в H3 число
 Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  почему? Что если будет передана область огромного размера, как оптимально выбрать данные?
 Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  можете дать пример, как кодировать координаты в H3, чтобы эффективно произвести поиск?
Сгенерировать список H3 тайлов что перекрывают эту область
 Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  если будет один столбец с маленьким разрешением --> высокая кардинальность и придется сканировать больше данных, я правильно понимаю?
Маленькое разрешение -> низкая кардинальность. С одной стороны да, с другой суть H3 индекса. что он "хорошим" образом заметает поверхность, так что скорее всего будет читать данные из одного диапазона гранул
 Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  т.е. в таблице хранить родительский H3 (маленькое разрешение, к примеру, H3_3) индекс и каждый раз на лету получать от него список дочерних и сравнивать их с тем, что приходит в запросе на фильтрацию?
да, потом дополнительно отфильтровывать по попаданию координат в ваш полигон
 Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  но в этом случае будет происходит полное сканирование таблицы?
Почему? вы по H3 отсечете те гексы что вообще не попадают
 Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Igor
                          Gorbenko
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  ага, понял. Условие фильтрации комплексное - сперва отсекаю по H3, который большой родительский и находится в PRIMARY KEY, затем дополнительно получаю список дочерних H3 в этом диапазон и сравниваю с тем, что пришло в запросе
Не совсем SELECT * FROM table WHERE h3_index IN (list_of_h3_covers_your_polygon) AND pointInPolygon(polygon_arr,lat,log) > бекенда принимать выделенную область
Обсуждают сегодня