我有大量來自源的數據,每個記錄都有一個維度dim1。 Dim1可以有多達一百萬個唯一值。其中一些將有大量的數據,有些則會少一些。對於例如Dim1value1可能有100K條記錄,Dim1value2可能有100萬條記錄,Dim1value3可能有10條記錄等等。分區數據分成20個大致相等的SQL Server分區
現在我想將它們分組到一定程度相等的分區,以便與每個DIM1數據進入一個組,我要創建約20幾分等於組。
基本上每個記錄具有Dim1Value1應該進入一個組等。 這裏是顯示ntile如何不這樣做的腳本。
IF OBJECT_ID('tempdb.dbo.#t') IS NOT NULL
DROP TABLE #t
CREATE TABLE #t
(
Dim1 varchar(100),
numberofrecs int
)
DECLARE @counter int = 1
WHILE(@counter < = 100)
BEGIN
INSERT #t
SELECT
'Dim1value' + CAST(@counter AS VARCHAR(10)),
CAST(RAND() * 100 AS INT)
SET @counter = @counter + 1
END
SELECT * FROM #t
SELECT
NTILE(5) OVER(order by numberofrecs),
Dim1, *
FROM #t
它是mysql還是sql-server?更新標籤並僅保留相關供應商。 – Dekel
如果SQL Server考慮NTile()https://msdn.microsoft.com/en-us/library/ms175126.aspx –
我不認爲ntile會這樣做。我考慮過它,但它只是將度量分類,然後將我的維度分成n組。基本上它會把所有具有最高數字的維度放在同一組中。這不是我想要的...這個SQL腳本將demonostrate它... –