Comparteix a través de


Tutorial: ingerir datos en un grupo de datos de SQL Server con Transact-SQL

Se aplica a: SQL Server 2019 (15.x)

Importante

El complemento Clústeres de macrodatos de Microsoft SQL Server 2019 se va a retirar. La compatibilidad con Clústeres de macrodatos de SQL Server 2019 finalizará el 28 de febrero de 2025. Todos los usuarios existentes de SQL Server 2019 con Software Assurance serán totalmente compatibles con la plataforma, y el software se seguirá conservando a través de actualizaciones acumulativas de SQL Server hasta ese momento. Para más información, consulte la entrada de blog sobre el anuncio y Opciones de macrodatos en la plataforma Microsoft SQL Server.

En este tutorial, se muestra cómo usar Transact-SQL para cargar datos en el grupo de datos de un Clústeres de macrodatos de SQL Server 2019. Con Clústeres de macrodatos de SQL Server, se pueden ingerir y distribuir datos de una amplia variedad de orígenes en varias instancias de grupos de datos.

En este tutorial, aprenderá a:

  • Crear una tabla externa en el grupo de datos.
  • Insertar datos de secuencias de clics web de ejemplo en la tabla del grupo de datos.
  • Combinar datos de la tabla del grupo de datos con tablas locales.

Sugerencia

Si lo prefiere, puede descargar y ejecutar un script con los comandos de este tutorial. Para obtener instrucciones, vea los Ejemplos de grupos de datos en GitHub.

Requisitos previos

Crear una tabla externa en el grupo de datos

En los pasos siguientes, crearemos una tabla externa en el grupo de datos llamado web_clickstream_clicks_data_pool. Después, esta tabla se puede usar como una ubicación para ingerir datos en el clúster de macrodatos.

  1. En Azure Data Studio, conéctese a la instancia maestra de SQL Server del clúster de macrodatos. Para obtener más información, vea Conectarse a una instancia maestra de SQL Server.

  2. Haga doble clic en la conexión de la ventana Servidores para mostrar el panel del servidor de la instancia maestra de SQL Server. Seleccione Nueva consulta.

    Consultar una instancia maestra de SQL Server

  3. Ejecute el siguiente comando de Transact-SQL para cambiar el contexto de la base de datos Ventas de la instancia maestra.

    USE Sales
    GO
    
  4. Cree un origen de datos externo al grupo de datos (si aún no existe).

    IF NOT EXISTS(SELECT * FROM sys.external_data_sources WHERE name = 'SqlDataPool')
      CREATE EXTERNAL DATA SOURCE SqlDataPool
      WITH (LOCATION = 'sqldatapool://controller-svc/default');
    
  5. Cree una tabla externa llamada web_clickstream_clicks_data_pool en el grupo de datos.

    IF NOT EXISTS(SELECT * FROM sys.external_tables WHERE name = 'web_clickstream_clicks_data_pool')
       CREATE EXTERNAL TABLE [web_clickstream_clicks_data_pool]
       ("wcs_user_sk" BIGINT , "i_category_id" BIGINT , "clicks" BIGINT)
       WITH
       (
          DATA_SOURCE = SqlDataPool,
          DISTRIBUTION = ROUND_ROBIN
       );
    

La creación de la tabla externa del grupo de datos es una operación de bloqueo. El control se devuelve cuando se ha creado la tabla especificada en todos los nodos del grupo de datos de back-end. Si se produce un error durante la operación de creación, se devuelve un mensaje de error al autor de la llamada.

Cargar datos

En los pasos siguientes, se ingieren datos de secuencias de clics web de ejemplo en el grupo de datos mediante la tabla externa creada en los pasos anteriores.

  1. Use una instrucción INSERT INTO para insertar los resultados de la consulta en el grupo de datos (la tabla externa web_clickstream_clicks_data_pool).

    INSERT INTO web_clickstream_clicks_data_pool
    SELECT wcs_user_sk, i_category_id, COUNT_BIG(*) as clicks
      FROM sales.dbo.web_clickstreams_hdfs
    INNER JOIN sales.dbo.item it ON (wcs_item_sk = i_item_sk
                            AND wcs_user_sk IS NOT NULL)
    GROUP BY wcs_user_sk, i_category_id
    HAVING COUNT_BIG(*) > 100;
    
  2. Inspeccione los datos insertados con dos consultas SELECT.

    SELECT count(*) FROM [dbo].[web_clickstream_clicks_data_pool]
    SELECT TOP 10 * FROM [dbo].[web_clickstream_clicks_data_pool]  
    

Consultar los datos

Combine los resultados de la consulta almacenados en el grupo de datos con los datos locales de la tabla Ventas.

SELECT TOP (100)
   w.wcs_user_sk,
   SUM( CASE WHEN i.i_category = 'Books' THEN 1 ELSE 0 END) AS book_category_clicks,
   SUM( CASE WHEN w.i_category_id = 1 THEN 1 ELSE 0 END) AS [Home & Kitchen],
   SUM( CASE WHEN w.i_category_id = 2 THEN 1 ELSE 0 END) AS [Music],
   SUM( CASE WHEN w.i_category_id = 3 THEN 1 ELSE 0 END) AS [Books],
   SUM( CASE WHEN w.i_category_id = 4 THEN 1 ELSE 0 END) AS [Clothing & Accessories],
   SUM( CASE WHEN w.i_category_id = 5 THEN 1 ELSE 0 END) AS [Electronics],
   SUM( CASE WHEN w.i_category_id = 6 THEN 1 ELSE 0 END) AS [Tools & Home Improvement],
   SUM( CASE WHEN w.i_category_id = 7 THEN 1 ELSE 0 END) AS [Toys & Games],
   SUM( CASE WHEN w.i_category_id = 8 THEN 1 ELSE 0 END) AS [Movies & TV],
   SUM( CASE WHEN w.i_category_id = 9 THEN 1 ELSE 0 END) AS [Sports & Outdoors]
FROM [dbo].[web_clickstream_clicks_data_pool] as w
INNER JOIN (SELECT DISTINCT i_category_id, i_category FROM item) as i
   ON i.i_category_id = w.i_category_id
GROUP BY w.wcs_user_sk;

Limpieza

Use este comando para quitar los objetos de la base de datos creados en este tutorial.

DROP EXTERNAL TABLE [dbo].[web_clickstream_clicks_data_pool];

Pasos siguientes

Obtenga información sobre cómo ingerir datos en el grupo de datos con trabajos de Spark: