giovedì 16 aprile 2020

Dashboard COVID-19 Italia

Questo report è una rielaborazione e un arricchimento della dashbord italiana ufficiale del ministero della Salute reperibile qui

Le pagine dalla 11 alla 13 contengono esempi di custom visuals creati con pbiviz (vedi questo post).



Disponibile anche sulla community Power BI a questo link

lunedì 16 marzo 2020

Collegare Power BI Desktop ad un Server Analysis Services in un dominio differente

Se avete il vostro Analysis Services attestato su un server in un dominio differente dal vostro, quando tentate di connettervi con Power BI Desktop avrete come risultato:

  1. "Timeout" se tentate la Live Connection
  2. "We couldn't Authenticate" se tentate la Import

La soluzione è lanciare da un Command Prompt eseguito come Amministratore il seguente script

runas /netonly /user: DOMAIN\USERNAME "C:\Program Files\Microsoft Power BI Desktop\bin\PBIDesktop.exe"

La password vi verrà chiesta contestualmente. Quanto detto vale per Power BI Desktop. Per l'app Power BI scaricata dal Microsoft Store, andrebbe eseguita come differente utente (Run as different user) fornendo le credenziali di dominio necessarie

venerdì 17 gennaio 2020

Come sistemare un campo Taxonomy che dia l’errore “The SPListItem being updated was not retrieved with all taxonomy fields” in fase di update


  1. Con uno script powershell creare un CSV con l'URL delle pagine contenenti il campo in questione e il valore dello stesso (un esempio è riportato in fondo a questo post)
  2. Rimuovere il campo dalla Document Library "Pages"
  3. Rimuovere il campo dai content types che lo contengono
  4. Cancellare la Site Column dalla site collection
  5. Ricrearla con lo stesso Internal Name
  6. Aggiungerla di nuovo tutti i Content Type interessati
  7. Reinserire i valori nelle pagine con uno script powershell che legga il file creato al punto 1 (lo script di inserimento lo lascio a voi, io l'ho già scritto, ma è un po' troppo corposo per inserirlo nel post)

filter Get-PublishingPages {
       $pubweb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($_)
       $query = new-object Microsoft.SharePoint.SPQuery

       $query.ViewAttributes = "Scope='Recursive'"
       $pubweb.GetPublishingPages($query)
}

$str = "https://[sitecollectionURL]"
$site = Get-SPSite -Identity $str

$web = $site.RootWeb

$web | Get-PublishingPages | select Uri, @{Name="[Display Name colonna]";Expression={$_.ListItem["[Internal Name colonna]"]}}| Export-CSV -Append  "[Path File CSV]"

Script di esportazione valori taxonomy

giovedì 2 gennaio 2020

ClientCallableSettings questi sconosciuti

Che bello utilizzare il CSOM su Sharepoint On Premise, giusto? Poche righe di Javascript e sul browser faccio tutto quello che facevo con il Server Object Model. Peccato però che il CSOM controlli prima che diritti ha l'utente e normalmente nei vostri (nostri) portali Web, l'utente è Anonimo. Così avete errori del tipo: "Error: The Method “GetItems” of the type “List” with id “{Lists’s Guid}” is blocked by the administrator on the server". In questo caso vi viene in aiuto la classe ClientCallableSetting. Con poche righe di Powershell potete abilitare l'utente anonimo ad eseguire get_items.

$web = Get-SPWebApplication -Identity http://[your web address]
$web.ClientCallableSettings.AnonymousRestrictedTypes.Remove
([Microsoft.SharePoint.SPList],"GetItems")
$web.Update()

Se poi vi pentite della vostra decisione, potete ritornare sui vostri passi:

$web = Get-SPWebApplication -Identity http://[your web address]
$web.ClientCallableSettings.AnonymousRestrictedTypes.Add
([Microsoft.SharePoint.SPList],"GetItems")
$web.Update()

giovedì 5 settembre 2019

Utilizzare Kendo React in spfx 1.8 (e pbiviz: PowerBI Visual Tools)

Kendo React è una suite di controlli basati su React della Progress (vedi qui). Per utilizzarli in una soluzione Sharepoint framework (spfx) 1.8, va seguito il tutorial a questo link. Unico accorgimento in più rispetto  al tutorial: è necessario installare il typescript 3.4.2. I passi da seguire sono:

  • eseguire npm install typescript@3.4.2
  • eseguire npm install @microsoft/rush-stack-compiler-3.4
  • sostituire tutte le occorrenze di "@microsoft/rush-stack-compiler-2.7": "^0.4.0" con "@microsoft/rush-stack-compiler-3.4": "^0.1.20"
  • sostituire nel file tsconfig.json "extends": "./node_modules/@microsoft/rush-stack-compiler-2.7/includes/tsconfig-web.json" con "extends": "./node_modules/@microsoft/rush-stack-compiler-3.4/includes/tsconfig-web.json"
UPDATE: vanno installati anche i pacchetti  @progress/kendo-drawing e @progress/kendo-react-data-tools, quindi
  • eseguire npm install @progress/kendo-drawing
  • eseguire npm install @progress/kendo-react-data-tools
UPDATE: Questo tutorial va bene anche per pbiviz. Vanno prima seguite queste linee guida. Per avere un quadro più generale di pbiviz vedere qui. La parte di modifica su tsconfig.json e package.json di rush-stack-compiler non è necessaria in pbiviz dopo averne installato il package

venerdì 9 agosto 2019

SPFX - Nel caso un pacchetto risulti outdated durante il processo di build

Capita ogni tanto che lanciando il comando gulp bundle --ship build la build non riesca perchè qualche pacchetto risulta outdated. Nel mio caso l'errore era "Browserslist: caniuse-lite is outdated. Please run next command npm update caniuse-lite browserslist". In realtà il messaggio è fuorviante e spesso lanciare semplicemente npm update con il nome del pacchetto da aggiornare non risolve niente (questo a partire da npm@2.6.1, vedi qui). Il trucco consiste nell'utilizzare il parametro depth per aggiornare le dipendenza anche in pacchetti annidati molto in profondità nella gerarchia del progetto. Nel mio caso ho lanciato
npm update --depth 10 caniuse-lite browserslist e ho risolto.

martedì 7 agosto 2018

SPFX The property '__metadata' does not exist on type 'SP.Social.SocialActorInfo'. Make sure to only use property names that are defined by the type.

L'errore compare nelle chiamate effettuate con  SPHttpClient.post e oltre a SP.Social.SocialActorInfo può riguardare qualunque altro tipo Sharepoint (SP. ecc.). La causa dell'errore è da ricercarsi nel fatto che SPHttpClient appende sempre un header odata-version: 4.0 . La soluzione è fare l'override dell'header usando un oggetto ISPHttpClientOptions e fare la chiamata post utilizzando tale oggetto come parametro (vedi questo articolo):

const options: ISPHttpClientOptions = {
   headers: {'odata-version':'3.0'},
   body: {'query': {'__metadata': ...
};