¿Los científicos de datos que usan SQL pueden obtener lo que necesiten en su primera consulta?

Hay mucho que puede hacer con SQL cuando se trata de extracción de datos, estructuración y limpieza. Y si puede usar SQL fácilmente para su trabajo, a menudo es recomendable hacerlo:

  • Su código será bastante fácil de transportar entre diferentes herramientas y bases de datos.
  • Muchas compañías no tienen demasiadas personas con una comprensión profunda de R, Python, Spark (ya sea con Scala, Python o R) … Pero las personas con algunos conocimientos de SQL son bastante comunes. Entonces la transferencia de código / conocimiento será más fácil.
  • Las bases de datos SQL son muy maduras. Con toda probabilidad, serán bastante buenos para procesar sus consultas de manera efectiva.
  • Es muy legible, incluso para personas no técnicas aún es posible entender las consultas básicas de SQL. (por supuesto, si entras en subconsultas correlacionadas, el uso masivo de UDF, etc., todas las apuestas se cancelan de nuevo;))

Y probablemente podría hacer mucho de su trabajo dentro de una sola consulta, con muchas subconsultas diferentes. Pero al igual que probablemente pueda escribir una pieza de software en un solo archivo, es probable que sea una mala idea, lo que resulta en un desastre inmanejable.

Por lo tanto, se recomienda trabajar con múltiples consultas de un tamaño más manejable. Cada consulta completa una tarea específica. Creando vistas / tablas temporales / Spark Dataframes / … en el camino.

Desde mi registro del historial de SQL, desde hace aproximadamente una hora:

  1. USE ;
  2. MOSTRAR TABLAS;
  3. SELECT * FROM LIMIT 10;
  4. SELECT * FROM WHERE = 0 AND > “2015-12-01”;
  5. SELECCIONE , Count (*) FROM WHERE = 0 AND > “2015-12-01” GROUP BY A;
  6. SELECCIONE , Count (*) AS x FROM WHERE = 0 AND> “2015-12-01” GROUP BY , ORDER BY X;

Obviamente, he reemplazado los nombres de las tablas reales con cosas en galones 🙂


Veamos por qué ejecuté estas cosas:


  1. Puedo recordar el nombre de la base de datos que quiero usar
  2. No recuerdo el nombre de la tabla en la que está esta cosa en particular, pero lo reconoceré cuando lo vea.
  3. No puedo recordar los nombres exactos de los campos, pero vea 2 arriba
  4. Solo obtengamos los datos: no puedo molestarme con un límite, porque tengo una idea del orden de magnitud de los resultados, y espero que sean unos pocos cientos (resulta ser unos pocos miles , pero está bien)
  5. OK, en unos pocos miles, necesito agruparlos de una manera particular (OK, son unos cientos de filas, y sospecho que lo que necesito será uno de los 10 más comunes).
  6. Eso es mejor … la mayoría de las filas se desplazan desde la parte superior de la terminal, pero tengo las que tienen el mayor recuento en pantalla.

Levante el teléfono, hable con el Jefe de atención al cliente, léale la de las pocas más populares, escúchela decir “¡Ajá!” cuando llego al que claramente está buscando.

Ahora, la persona promedio que se hace llamar “científico de datos” probablemente está escribiendo una consulta mucho, mucho más compleja en SQL, y supongo que la descomponen como lo hice yo, pero más aún 🙂

Mi primera consulta generalmente es recuperar información sobre la tabla (dentro de una base de datos). Incluso si tuviera un libro de códigos con todos los detalles de los campos y tablas enumerados con precisión con sus unidades de medida, verifico esos valores para ver si hay alguna anomalía o falta información.

Supongamos que tengo que contar el número de estudiantes por género, suponiendo que exista una columna llamada Sexo, todavía necesito verificar si existe la columna Sexo, de lo contrario llamar a un

SELECT Gender, count(*) FROM

GROUPBY Gender;

fallaría.

Por lo tanto, generalmente hago coincidir los detalles del libro de códigos con las entradas de DB existentes al mostrar un subconjunto de una tabla (específica para hacer coincidir columnas de papel a tabla), que va en la línea de

SELECT * FROM

LIMIT 10; //first 10 rows

También tenga en cuenta que no dice nada sobre el rango de valores, que serían mis consultas posteriores. Por lo tanto, incluso la segunda consulta no me da lo que quiero como resultado final.

La pregunta está mal definida. No estoy seguro de que comprenda lo que significa Consulta, y estoy seguro de que el resultado esperado no puede definirse por “lo que sea que necesiten”. Es como si preguntaras “¿Cuántas cosas necesita la gente para lo que sea que necesite?”

Consulta significa instrucción de selección. La cantidad de sentencias select que ejecutará depende de lo que necesite. Teniendo en cuenta que obtiene una salida tabular, si necesita una sola tabla, sí, la obtiene de una consulta. Si necesita varias tablas de varias formas, como un historial de pedidos + el último inicio de sesión de un usuario, no tiene sentido agrupar esto en una sola tabla, incluso si puede.

Si quiere decir dentro de una declaración, nuevamente, depende de lo que esté haciendo: en teoría, con el uso de uniones, subconsultas y uniones, podría obtener cualquier cosa en una declaración. Prácticamente, las declaraciones demasiado complicadas tienden a volverse ilegibles (no se repita) por mantenimiento y tienen malos tiempos de ejecución, por lo que desea separarse.

Personalmente, para cosas únicas en conjuntos de datos pequeños, a menudo tengo una sola consulta. Para grandes conjuntos de datos, o para código de producción, creo tablas temporales con índices antes de llegar al resultado final: muchas declaraciones, una consulta.

Para ‘Lo que sea que necesiten’, ejecutaré muchas consultas durante muchos días, ya que mi trabajo con una empresa no termina con una sola consulta.

Aunque, en teoría, podría obtener todos los datos con una consulta: se llama volcado.

Si quiso decir si uno puede obtener la salida correcta desde el primer intento, solo es cuestión de prestar atención: si lo divide en entidades lógicas y presta atención a su ortografía, puede escribir cualquier consulta y ejecutarla la primera vez, aunque probablemente deberías probar en el camino.

Al igual que cualquier programador que utilice cualquier lenguaje de codificación, los científicos de datos rara vez o nunca realizan una tarea de codificación compleja en su primer intento.

Eso solo sucede en las películas. Lo compararía con alguien en una película disparando a través de una cuerda delgada con una pistola o una flecha. Es teóricamente posible, pero extremadamente raro, y generalmente no es necesario.

He tenido exactamente una experiencia codificando un programa no trivial en mi primer intento. Nunca lo he hecho desde entonces, en más de 25 años de ser un ingeniero de software profesional. Conozco a muchos otros programadores muy brillantes y experimentados, y todos cometen errores. A veces, los errores de lógica y, a veces, los errores tipográficos como faltar un paréntesis o invertir el orden de los argumentos de la función. El uso de editores de código inteligentes ayuda a reducir los errores tipográficos simples, pero no los errores lógicos.

La escritura de programas complejos generalmente se realiza dividiendo el problema en pasos más simples. Una vez que haya verificado su código para que el paso más sencillo funcione, continúe con el siguiente paso.

Soy un interno analista de datos. Trabajo en proyectos para la organización. Requieren el uso de: SQL, Excel y Report Builder. Estas son habilidades técnicas.

Las primeras veces con el lenguaje de consulta, no estaba familiarizado con el diseño de la base de datos. Tomó repetidas búsquedas y usos. A veces las consultas no eran semánticamente correctas. La validación corrigió los extractos de datos.

A medida que experimenté el diseño de la base de datos y la sintaxis de consulta, me volví más competente. En estos momentos, puedo escribir consultas sin errores sin una gran corrección.

Data Science no se trata solo de no saber la respuesta; también se trata de no conocer la pregunta o simplemente conocerla de manera imprecisa; cuando usa SQL, conoce la pregunta (“Quiero saber cuántos empleados estuvieron ausentes el año pasado”) y Data Science es más “Quiero saber el tipo de empleado que es propenso a estar ausente”, ¿están casados? ¿El soltero? ¿Los casados ​​que tienen dos hijos? ¿Cuatro niños y un perro? ¿No tiene hijos pero tiene un perro? Es menor de 30? ¿Tiene más de 50 y tiene un perro? Y así. Data Science da este tipo de respuesta. No veo cómo escribir un SQL para esto, incluso uno muy complejo.