En las últimas tres publicaciones de blog centradas en geoespacial, hemos cubierto los conceptos básicos de qué son los datos geoespaciales, cómo funcionan en el mundo más amplio de los datos y cómo funcionan específicamente en Snowflake según nuestro soporte nativo para GEOGRAFÍA, GEOMETRÍA y H3. Esos artículos son excelentes para sumergir el dedo del pie, advertir el agua y tal vez incluso sumergirse en el extremo poco profundo de la piscina. ¡Pero hay mucho más que puedes hacer con los datos geoespaciales en tu cuenta Snowflake! Sin incautación, lo entendemos: puede ser difícil acaecer de «Ahora entiendo los conceptos» a «¿Cómo puedo invadir mis primeros casos de uso?»
El mundo del procesamiento de datos geoespaciales es vasto y enrevesado, y estamos aquí para simplificarlo. Por eso creamos un Inicio rápido sobre copo de cocaína que lo consejero a través de varios ejemplos de capacidades geoespaciales en contextos del mundo auténtico. Si admisiblemente estos ejemplos utilizan datos representativos de cualquiera de los dos Mercado de copos de cocaína o los datos que hemos puesto a su disposición de forma gratuita en Amazon S3, se pueden aplicar a su cuenta, datos y casos de uso de Snowflake para elogiar información valiosa a su comunidad de usuarios. Esta publicación de blog explica cómo hacerlo, pero consulte el inicio rápido si desea ver el código auténtico.
Pero comencemos con un prontuario rápido: los datos de ubicación están en todas partes. Así como es casi seguro que su cuenta Snowflake tiene datos basados en el tiempo, es casi seguro que su cuenta Snowflake asimismo tenga datos basados en la ubicación, ya que la mayoría de los datos transaccionales contienen algún sujeto de quién, qué, cuándo y dónde.
En su forma más simple, los datos de ubicación se conocen generalmente como una variedad de campos numéricos y de texto que comprenden lo que llamamos «direcciones» e incluyen cosas como calles, ciudades, estados, condados, códigos postales y países. Los humanos pueden observar y comprender estas cadenas con suficiente facilidad, pero en su forma de texto, son en gran medida títulos informativos que buscamos cuando necesitamos conocerlos y carencia más. A veces, estos campos de texto asimismo pueden ir acompañados de campos de anchura y largura. Estos campos son fantásticos porque ahora podemos hacer más con los datos de ubicación: podemos colocarlos en la Tierra como un punto. Esto es útil porque podemos integrar todos esos puntos en la capacidad de mapeo de una aparejo de BI para mostrar a qué país o paraje pertenece el punto, o podemos integrar estos puntos en una cuadrícula espacial como H3. Si admisiblemente varios socios de Snowflake BI admiten trabajar con datos de anchura y largura, Snowflake tiene soporte integrado para metamorfosear sus datos de largura y anchura en una cuadrícula espacial H3 para un cálculo y visualización rápidos (como veremos más delante).
Pero podemos ir un paso más allá y metamorfosear esos datos de anchura y largura en un tipo de datos de GEOGRAFÍA o GEOMETRÍA. Podemos usar el primero cuando necesitamos una representación de «tierra» elipsoide de la Tierra, y el segundo cuando necesitamos una representación de «plano» plano de una ubicación más localizada. Y podemos construir estos tipos de datos con una variedad de funciones.
Ahora admisiblemente, puede que no parezca mucho, pero con estos dos tipos de datos podemos comenzar a construir una serie de puntos en una término, conectar varias líneas en un polígono y representar ubicaciones complejas como una serie de líneas y polígonos. Podemos realizar cálculos complejos y asociaciones de relaciones entre objetos de estos tipos y comenzar a desbloquear información que no sabíamos que estaba acondicionado para nosotros solo con un simple campo de «dirección». Quizás se pregunte: «¿Pero qué pasa si todo lo que tengo es el campo de dirección textual?» Ahh, bienvenido, buen viajero, a nuestra primera aventura de capa y espada: la codificación geográfica. “¿Geo-qué-ing?”
La codificación geográfica es el acto de tomar los datos de su dirección textual y transformarlos en un tipo geoespacial para desbloquear otros casos de uso que de otro modo no habría podido ofrecer. Y, por supuesto, asimismo es posible ir en la otra dirección: convertir el tipo de datos geoespaciales menos legibles en un conjunto de campos de ubicación más legibles para los humanos. Ambas transformaciones se pueden realizar con socios especializados de Snowflake como cuadro de plano y Tiempo de alucinaciónque son aplicaciones nativas de Snowflake disponibles a través de Snowflake Marketplace. Recomendamos estos proveedores para obtener la geocodificación y la geocodificación inversa más precisas. Pero a veces, necesita equilibrar la precisión con el costo o necesita demostrar el retorno de la inversión antiguamente de poder utilizarse billete, así que hablemos sobre cómo puede comenzar con la geocodificación y la geocodificación inversa directamente en Snowflake.
En este caso de uso, utilizaremos dos conjuntos de datos de Snowflake Marketplace: Datos de direcciones mundialesuna compilación de datos de direcciones completo gratuita y abierta, y un conjunto de datos tutoriales de nuestro socio CARTOque tiene una mesa de restaurante con una única columna street_address. Si siguiera este ejemplo para sus datos, reemplazaría la tabla del restaurante del tutorial con su tabla. Preparará algunos datos en estas dos tablas, que puede ver en la inicio rápido.
La geocodificación DIY Snowflake implica tres pasos:
1. Utilice un LLM para metamorfosear una cautiverio de dirección completa en una matriz JSON con sus partes como atributos. En este paso, utilizará la función SNOWFLAKE.CORTEX.COMPLETE, que utiliza un maniquí Mixtral-8x7B alojado en Snowflake para realizar la conversión utilizando un conjunto detallado de instrucciones que usted proporciona como parte de la citación práctico. Consulte las notas de inicio rápido para nominar el tamaño de almacén adecuado para ejecutar esto a escalera.
2. Cree una columna geoespacial simple sobre la anchura y largura en Datos de direcciones mundiales.
- ST_POINT se utiliza para crear la columna geoespacial a partir de la anchura y largura.
- Los datos innecesarios se eliminan de la tabla Datos de direcciones mundiales en función de títulos de anchura y largura no válidos.
3. Utilice JAROWINKLER_SIMILARITY para hacer coincidir direcciones. Unirás las dos tablas en algunas columnas, envolviendo la columna del nombre de la calle en una función JAROWINKLER_SIMILARITY, porque no es raro que los nombres de las calles tengan diferencias sutiles en las cadenas entre las fuentes, de ahí el «95» como nuestro filo de similitud en la función. pulsar.
Es importante señalar aquí que este método no es consumado en cuanto a precisión. El inicio rápido muestra con más detalle el nivel de precisión atrapado y algunas de las razones por las que este método es imperfecto, pero es importante tener en cuenta la diferencia de costo entre este método y un servicio de geocodificación dedicado. Este método es una excelente modo de conquistar requisitos más simples o crear prototipos de argumento para servicios de geocodificación más dedicados con requisitos más complicados.
Para realizar una codificación geográfica inversa o producir una dirección a partir de un tipo de datos geoespaciales, crearemos un procedimiento almacenado que hace tres cosas: crea una tabla de resultados, selecciona filas que no se han procesado y encuentra la dirección más cercana utilizando un onda con una búsqueda de radiodifusión creciente hasta que se encuentre un resultado. Puede pulsar a este procedimiento como todos los procedimientos en Snowflake, pasando los argumentos apropiados como se define en la parte superior del código del procedimiento, que puede ver en el inicio rápido.
Geocodificar los datos de su dirección desbloquea más posibilidades para utilizar esos datos de dirección de maneras más reveladoras. Analicemos una forma en que puede utilizar esos datos geocodificados.
La previsión es una actividad global con datos de series de tiempo, ya que existen modelos de formación maquinal sólidos diseñados para ingresar datos históricos y predecir una ventana de datos futuros en función de tendencias históricas. Snowflake incluye un maniquí de pronóstico de ML incorporado llamado SNOWFLAKE.ML.FORECAST que puede utilizar fácilmente para esta actividad. Si admisiblemente se pueden realizar pronósticos de series temporales a través de cualquier número basado en el tiempo, enriquecer ese pronóstico con datos de ubicación proporciona otra dimensión de valía en el proceso de pronóstico.
Se utilizan dos conjuntos de datos en el inicio rápido: datos de viajes en taxi en la ciudad de Nueva York proporcionados por CARTO y datos de eventos proporcionados por PredictHQ. Puedes pensar en los dos conjuntos de datos de esta modo: los datos de viajes en taxi son como cualquier número basado en series de tiempo que tengas sobre poco que sucede en un momento y ocasión determinados. Probablemente tenga ese tipo de datos en su estructura. Los datos del evento agregan más contexto a un sujeto basado en el tiempo en sus datos. En este ejemplo, los datos del evento pueden informar cualquier aumento o disminución en los viajes en taxi esperados en la ciudad de Nueva York. Otros tipos de datos contextuales que pueda tener incluyen períodos abiertos o cerrados, períodos promocionales recurrentes, eventos públicos y más. Sea lo que sea, los datos contextuales pueden ayudar a proporcionar más precisión a un pronóstico al mejorar cualquier día/hora determinada con una expectativa creciente o decreciente.
La actividad de previsión consta de cuatro pasos:
1. Utilice una cuadrícula espacial para calcular una serie temporal de recogidas de taxis para cada celda de la cuadrícula.
-
Utilizará la cuadrícula espacial H3 para dividir la ciudad de Nueva York en celdas según el ocasión de recogida.
-
Puede identificar una recogida en el interior de una celda tomando la anchura y largura y convirtiéndolas en una celda H3.
-
Luego puede ampliar la cantidad de recolecciones en el interior de cada celda de la ciudad de Nueva York por horas del día usando las funciones TIME_SLICE y H3_POINT_TO_CELL_STRING de Snowflake.
-
Por postrer, deberá «completar» los espacios de horas en una ubicación con 0 (cero) registros de recogida. Esto es necesario para el pronóstico de series de tiempo.
2. Enriquezca los datos de series temporales horarias con datos de eventos.
-
Esto agrega columnas de «características» a los datos anteriores al marcar cada fila como feriado escolar, feriado sabido o evento deportivo según la unión de nuestros datos de eventos.
-
Tenga en cuenta que puede ampliar cualquier «característica» que tenga sentido para los datos de su evento. Las reposo escolares, los días festivos y los eventos deportivos son sólo ejemplos realistas de este ambiente.
3. Cree un maniquí, un conjunto de datos de entrenamiento y un conjunto de datos de predicción.
-
El maniquí SNOWFLAKE.ML.FORECAST requiere un paso de entrenamiento antiguamente de realizar predicciones, por lo que los datos del Paso 2 deben dividirse en dos tablas por tiempo: una para entrenamiento y otra para predicción.
-
A partir de ahí, creará un maniquí, siendo una de las entradas la tabla de datos de entrenamiento que estableció anteriormente. Todavía identificará columnas secreto, como la columna de tiempo, la métrica a pronosticar y, en este caso, con qué datos de ubicación desea pronosticar.
4. Ejecute el maniquí y visualice la precisión de las predicciones.
-
Una vez que el maniquí ha sido entrenado, se puede pulsar, señalando otro conjunto de datos para usarlo en la predicción.
-
La predicción se puede suscitar en una tabla y luego compararse con los datos reales para evaluar la precisión. Hay varias formas de hacer esto, pero el inicio rápido sugiere usar un error porcentual definitivo medio simétrico (SMAPE).
El venidero cuadro muestra cómo puede estar el resultado de esta comparación para una celda H3, y el maniquí de pronóstico tiene una tasa de precisión suficiente cachas: