> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Consultas de datos ad hoc en Slack

export const UseCaseHero = ({title, description, prompt, category, features, devinUrl, agent, intent, playbookId, type}) => {
  const encodedPrompt = encodeURIComponent(prompt || '');
  const tag = 'docs-use-case-gallery';
  const utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=hero-cta';
  const agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  const devinHref = type === 'schedule' ? 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + (prompt ? '&prompt=' + encodedPrompt : '') : type === 'review' ? 'https://app.devin.ai/review?' + utm : agent === 'ada' ? 'https://app.devin.ai/search?' + utm + '&noSubmit=true' + (prompt ? '&prompt=' + encodedPrompt : '') : devinUrl ? devinUrl.includes('?') ? devinUrl + '&' + utm + agentParams : devinUrl + '?' + utm + agentParams : prompt ? 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encodedPrompt : 'https://app.devin.ai/?' + utm + agentParams;
  const buttonLabel = type === 'schedule' ? 'Schedule in Devin ↗' : type === 'review' ? 'Set Up Devin Review ↗' : agent === 'advanced' ? 'Try in Devin ↗' : agent === 'dana' ? 'Try in Dana ↗' : agent === 'ada' ? 'Try in Ask Devin ↗' : 'Try in Devin ↗';
  const featureList = features ? features.split(',').map(f => f.trim()) : [];
  return <div className="uc-hero">
      <div className="uc-hero-inner">
        <div className="uc-hero-left">
          <h1 className="uc-hero-title">{title}</h1>
          <p className="uc-hero-desc">{description}</p>
          <div>
            <a href={devinHref} target="_blank" rel="noopener noreferrer" className="try-in-devin-btn">
              {buttonLabel}
            </a>
          </div>
        </div>
        <div className="uc-hero-meta">
          <div className="uc-meta-item">
            <span className="uc-meta-label">Author</span>
            <span className="uc-meta-value">Cognition</span>
          </div>
          <div className="uc-meta-item">
            <span className="uc-meta-label">Category</span>
            <span className="uc-meta-value">{category}</span>
          </div>
          {featureList.length > 0 && <div className="uc-meta-item">
              <span className="uc-meta-label">Features</span>
              <span className="uc-meta-value">{featureList.join(', ')}</span>
            </div>}
        </div>
      </div>
    </div>;
};

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

<UseCaseHero title="Consultas de datos ad hoc en Slack" description="Escribe /dana en cualquier canal de Slack para consultar tu base de datos en inglés simple." prompt="/dana ¿Cuál fue nuestro crecimiento intersemanal de registros, desglosado por canal de adquisición?" category="Datos y analítica" features="Integraciones, MCP" agent="dana" />

<div className="uc-detail-wrapper">
  <Tip>¿No quieres configurar esto manualmente? Pega un enlace a esta página en una sesión de Devin y pídele que lo configure todo por ti.</Tip>

  <Steps>
    <Step title="Conectar una base de datos en el MCP Marketplace">
      Dana necesita acceso a al menos una base de datos para responder preguntas. Ve a **Settings > [MCP Marketplace](/es/work-with-devin/mcp)** y habilita un MCP de base de datos:

      | Origen de datos | Nombre del MCP | Qué necesitarás                                            |
      | --------------- | -------------- | ---------------------------------------------------------- |
      | Amazon Redshift | Redshift       | Host, puerto, base de datos, nombre de usuario, contraseña |
      | Google BigQuery | BigQuery       | OAuth (un clic) o JSON de cuenta de servicio               |
      | PostgreSQL      | PostgreSQL     | Cadena de conexión                                         |
      | MySQL           | MySQL          | Cadena de conexión                                         |
      | Snowflake       | Snowflake      | Cuenta, nombre de usuario, contraseña                      |

      Haz clic en **Enable** en la tarjeta del MCP, completa tus credenciales y luego haz clic en **Test listing tools** para confirmar que la conexión funciona. Puedes conectar varias bases de datos: Dana consultará la que sea relevante para tu pregunta.
    </Step>

    <Step title="Haz tu primera pregunta con /dana">
      [Dana](/es/work-with-devin/data-analyst) es el modo de analista de datos de Devin: un agente especializado con herramientas y prompts optimizados para consultar bases de datos, crear gráficos y responder preguntas de negocio en inglés sencillo.

      Abre cualquier canal de Slack donde [Devin esté instalado](/es/integrations/slack) y escribe `/dana` seguido de una pregunta en inglés sencillo. Si el comando de barra `/dana` no está disponible en tu espacio de trabajo, también puedes usar `@Devin !dana ...`: ambos funcionan de la misma manera. Dana crea una sesión, escribe el SQL, lo ejecuta y responde en el hilo.

      <PromptBlock agent="dana">
        ```txt Hazle una pregunta a Dana theme={null}
        /dana What were our top 10 customers by revenue last quarter?
        ```
      </PromptBlock>

      También puedes invocar a Dana mencionando a Devin con la macro `!dana`:

      <PromptBlock agent="dana">
        ```txt Usa la macro !dana theme={null}
        @Devin !dana How many active users do we have per plan tier this month?
        ```
      </PromptBlock>

      Dana responde directamente en el hilo de Slack con tablas formateadas, recuentos y, cuando es útil, una breve interpretación de los resultados. No es necesario cambiar de contexto a una herramienta de BI.

      Dana no se limita a consultas rápidas: también es excelente para informes completos y análisis profundos. Pídele que investigue tendencias, segmente datos y sintetice hallazgos en varias consultas:

      <PromptBlock agent="dana">
        ```txt Análisis profundo theme={null}
        /dana Conduct a deep investigation on our user growth over the past
        month. Which user segments and use cases can the growth be attributed
        to? Is it more growth in existing accounts (expansion) or top of
        funnel (new signups)? Break it down by acquisition channel and plan
        tier, and highlight any notable changes compared to the prior month.
        ```
      </PromptBlock>
    </Step>

    <Step title="Enséñale a Dana tu esquema y convenciones">
      Dana funciona desde el primer momento, pero mejora significativamente cuando conoce tu esquema y tus definiciones de negocio. En lugar de agregar entradas de Knowledge manualmente, solo dale comentarios directamente a Dana — en Slack o en la aplicación web — y pídele que recuerde cosas para la próxima vez:

      * *"Recuerda que 'active user' significa al menos un evento en `analytics.events` en los últimos 30 días."*
      * *"Todas nuestras marcas de tiempo se almacenan en UTC. Convierte siempre a America/New\_York al mostrar los datos."*
      * *"`billing.subscriptions.mrr` está en centavos, no en dólares. Divide entre 100 al mostrar los ingresos."*
      * *"Actualiza tu Knowledge: los valores de la columna `plan` son free, pro y enterprise, no basic/premium."*

      Dana puede listar y actualizar su propio Knowledge, por lo que las correcciones se acumulan con el tiempo. Cuantos más comentarios le des — significados de columnas, valores de enums, reglas de zonas horarias, definiciones de negocio — menos preguntas de seguimiento necesitará hacer Dana en consultas futuras.
    </Step>

    <Step title="Haz preguntas de seguimiento en el mismo hilo">
      Dana mantiene el contexto dentro de un hilo de Slack, por lo que las preguntas de seguimiento pueden hacer referencia a resultados anteriores sin que tengas que repetirte.

      <PromptBlock agent="dana">
        ```txt Haz un seguimiento de los resultados theme={null}
        Break that down by plan tier and show the month-over-month trend.
        ```
      </PromptBlock>

      <PromptBlock agent="dana">
        ```txt Solicita una visualización theme={null}
        Can you chart daily signups for the past 90 days with a 7-day moving average?
        ```
      </PromptBlock>

      Para las preguntas que haces con regularidad, considera crear un [playbook](/es/product-guides/creating-playbooks) con las consultas y el formato exactos que deseas, y luego ejecutarlo con un `!macro` personalizado desde Slack.
    </Step>
  </Steps>
</div>
