Cubetti OLAP di Analysis Services 2005: è possibile creare una misura di conteggio distinta su una colonna nvarchar?

StackOverflow https://stackoverflow.com/questions/320405

  •  11-07-2019
  •  | 
  •  

Domanda

Sto cercando di creare un cubo con una sola misura. Questa misura è un conteggio distinto di un "nome" colonna. Il cubo funziona perfettamente se la misura è impostata su "conta". genere. Tuttavia quando imposto un conteggio distinto ottengo questo errore:

" Errori nel motore di archiviazione OLAP: l'ordinamento specificato per record di conteggio distinti non è corretto "

Ho letto in alcuni blog che puoi avere un conteggio distinto su una colonna numerica. Non riesco a vedere una buona ragione per questo e non riesco a trovare quelle informazioni sulla documentazione ufficiale. Tuttavia, potrebbe essere vero. Ad ogni modo, sono davvero bloccato con questo problema. Quali sono le mie opzioni?

È stato utile?

Soluzione

la mia risposta potrebbe essere troppo tardi per te, ma spero che questo possa aiutare altri che hanno lo stesso problema.

  1. Vai alla vista dell'origine dati in Esplora soluzioni
  2. Trova una tabella che contiene la colonna GUID che deve essere aggregata
  3. Fai clic con il pulsante destro del mouse sull'intestazione della tabella selezionata e seleziona "Crea calcolo denominato"
  4. Dagli un nome
  5. Digita quanto segue nel campo Espressione:        CAST (ColumnName as varchar (36))

Questa soluzione proviene da questo link http://www.bi-dw.info /sql-server-tips/distinct_count-measure-on-uniqueidentifier.htm

Altri suggerimenti

Google e in particolare Eggheadcafe sono venuti in soccorso con una soluzione:

  • Connessione ad Analysis Services da SQL Server Management Studio
  • Fare clic con il pulsante destro del mouse sul nome del server Analysis Services (ovvero il collegamento più in alto di Analysis Services)
  • Scegli proprietà
  • Seleziona Mostra proprietà avanzate (tutte)
  • Trova le seguenti impostazioni
  • OLAP \ Process \ CheckDistinctRecordSortOrder
  • Imposta questo valore su 0
  • Fai clic su OK
  • Apri OLAP in Visual Studio o BIDS.
  • Elabora il cubo.

Mi risponderò, forse questo è utile per qualcun altro.

La risposta breve è SÌ.

Ho creato alcune tabelle di test con la stessa struttura ma solo poche righe di test. Il cubo funziona perfettamente con questi dati.

Quindi, suppongo che ci siano alcuni dati corrotti nelle tabelle originali, o forse alcuni caratteri rari.

Hai ragione, puoi fare un conteggio distinto su una colonna nvarchar.

Potrebbe essere qualcosa a che fare con personaggi strani o con le tue impostazioni di confronto.

È possibile provare a elaborare sottoinsiemi più piccoli del gruppo di misure per provare a isolare una riga del problema.

Può essere dovuto alle impostazioni di confronto. Il server SQL ha per impostazione predefinita SQL_Latin1_General_CP1_CI_AS dove come SSAS utilizza le regole di confronto Latin1_General di Windows. Se modifichi le regole di confronto sulla colonna su cui stai eseguendo il conteggio distinto, penso che risolverà il problema

Ho avuto questo problema cercando di fare un conteggio distinto su una colonna ID INT. Dopo aver passato anni a guardare le impostazioni di Unknown Member e le impostazioni di utilizzo delle dimensioni, ho trovato un altro suggerimento che le misure di Distinct Count non gradiscono i valori NULL. L'aggiunta di WHERE COLUMN NOT NULL alle query di partizione per questo gruppo di misure di conteggio distinto ha risolto il mio problema.

Questo era il suggerimento: " Errori nel motore di archiviazione OLAP: l'ordinamento specificato per record di conteggio distinti non è corretto.

Verifica che la colonna distinta non contenga valori null. In tal caso, questi possono essere omessi dal gruppo di misure tramite una query nella definizione della partizione (supponendo che la misura di conteggio distinta sia nel proprio gruppo di misure) "

Derby ha fornito la risposta corretta nella mia situazione. Nel mio caso, stavo cercando di elaborare un modello di data mining in SSDT (VS 2012) e stavo ottenendo l'errore.

L'errore è iniziato dopo aver apportato alcune correzioni a una query che ha generato una tabella che ho usato come origine dati. La mia ipotesi è che ha introdotto alcuni NULL da qualche parte che non avevo prima di apportare le correzioni alla mia query, e quindi la tabella di origine (il modello di data mining è stato elaborato proprio prima). Non sono in grado di votare Derby a causa della mia reputazione di Noob.

Stavo affrontando lo stesso problema e ho scoperto che nei miei dati c'erano caratteri / simboli speciali che impedivano l'elaborazione del cubo. Molto probabilmente, il cubo non è stato in grado di ordinare i dati con caratteri speciali.

Sono stato in grado di risolvere il problema convertendo i dati in stringa hashbyte usando la seguente funzione:

SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', [column_name])), 3, 32)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top