4

J'essaie de trouver une façon spécifique de copier toutes les données d'une table particulière (appelons-la opportunities) et de la copier dans une nouvelle table, avec un horodatage de la date copiée dans la nouvelle table, dans le seul but de générer des données historiques dans une base de données hébergée dans Azure Data Warehousing.Copier des données d'une table SQL Server dans une table historique et ajouter un horodatage de l'heure copiée?

Quelle est la meilleure façon de faire cela? Jusqu'à présent, je suis allé et créé une table en double dans l'entrepôt de données, avec une colonne supplémentaire appelée datecopied

La requête que j'ai commencé à utiliser est:

SELECT OppName, Oppvalue 
INTO Hst_Opportunities 
FROM dbo.opportunities 

Je ne suis pas vraiment sûr où aller d'ici!

+0

Vous tentez de partitionner vos données. La recherche avec ce terme devrait aider. Quelle version de SQL Server est-ce? Si le partitionnement 2016 est disponible au niveau standard dans SP1. –

+0

Merci - 2005 mais im synchroniser les données à un entrepôt de données Azure à l'aide d'Azure Data Factory. Basé sur les commentaires ci-dessous si je peux changer cela pour être un serveur IAAS Azure SQL 2016 Server. – Seiryth

+0

juste fait un peu de lecture - le partitionnement horizontal me permettra-t-il de générer un graphique grâce à powerbi montrant la croissance des revenus potentiels? – Seiryth

Répondre

2

SELECT INTO est pas pris en charge dans SQL Azure Data Warehouse à ce moment. Vous devez vous familiariser avec la syntaxe CREATE TABLE AS ou CTAS, qui est l'équivalent dans Azure DW.

Si vous voulez fixer la date de la copie, il suffit d'assigner à une variable avant la CTAS, quelque chose comme ceci:

DECLARE @copyDate DATETIME2 = CURRENT_TIMESTAMP 

CREATE TABLE dbo.Hst_Opportunities 
WITH 
(
    CLUSTERED COLUMNSTORE INDEX, 
    DISTRIBUTION = ROUND_ROBIN 
) 
AS 
SELECT OppName, Oppvalue, @copyDate AS copyDate 
FROM dbo.opportunities; 

Je dois aussi mentionner que le cas d'utilisation pour Azure DW est millions et des milliards de lignes avec des téraoctets de données. Il n'a pas tendance à fonctionner correctement à faible volume. Par conséquent, prenez en compte si vous avez besoin de ce produit, d'une installation SQL Server 2016 traditionnelle ou d'une base de données SQL Azure.

+0

Ok merci, c'est vraiment bon à méditer. la taille de la base de données elle-même est d'environ 5 Go de données CRM, de sorte qu'il ne justifie probablement pas un entrepôt de données, puis pour les données historiques. – Seiryth

+0

commentaire: au bout du compte, ce que je veux, c'est pouvoir représenter graphiquement la somme totale des revenus potentiels de l'entreprise sur une base mensuelle, au moment de ce mois, pour montrer une croissance ou une baisse des revenus potentiels. – Seiryth

+0

Salut wBob, jut pour suivre cette suggestion, j'ai tenté d'ajouter au champ "from" le nom de la base de données qui existe sur un autre serveur.Essentiellement ce que j'essaie de faire est d'exécuter une requête de sélection à partir d'une table dans un serveur et de copier les résultats avec un horodatage à l'entrepôt - je me demande si je devrais juste utiliser le SQL normal à la place? – Seiryth

1

Vous pouvez écrire insérer dans la requête de sélection comme ci-dessous, qui fonctionnera avec SQL Server 2008 +, SQL Azure datawarehouse

INSERT INTO Hst_Opportunities 
    SELECT OppName, Oppvalue, DATEDIFF(SECOND,{d '1970-01-01'},current_timestamp) 
    FROM dbo.opportunities 
+0

Cela ne mènerait-il pas à de gros vidages en changeant les millisecondes, les secondes, les minutes? Juste au cas où plus tard on veut sélectionner un vidage spécifique. – tobi6

+0

Je pensais que vous utiliseriez datettime pour la date copiée. Pour un vidage spécifique, vous pouvez récupérer unix_timestamp en utilisant DATEDIFF (SECOND, {d '1970-01-01'}, current_timestamp) cela retournera unix_timestamp en secondes. Je viens de mettre à jour ma réponse. –

+0

Toujours pas sûr si cela ne conduirait pas à des horodatages différents avec de longues courses ... – tobi6