migueesc123 / powerbirestapi Goto Github PK
View Code? Open in Web Editor NEWA Microsoft Power BI Data Connector or Power Query Connector for the Power BI REST API
License: MIT License
A Microsoft Power BI Data Connector or Power Query Connector for the Power BI REST API
License: MIT License
Hi, thank you for your work! It's great.
I have one problem, the users column in the Workspacess List is null for all the workspaces so I'm trying to use the GETData function to GetGroupsAsAdmin by writing:
= GETData("admin/Groups?$top=5000%26$expand=users")
I get the error message:
"We couldn't authenticate with the credientials provided. Please try again."
I'm using the admin credentials and it works on this site:
https://docs.microsoft.com/en-us/rest/api/power-bi/admin/groups_getgroupsasadmin#code-try-0
by writing $top: 5000
$expand: users
Is it not possible to get data with the admin api?
Thanks,
Jon
I have created a report using this custom connector in PBI desktop and everything works fine connecting as a Power BI Service admin application account. I published report to web service and have setup a gateway connection for refreshing, but I get the error below. I have two gateway servers clustered together. I added custom connector on both gateway servers in connectors section and it shows up, I have allow custom connection gateway checkbox checked, but when refreshing I get error. Any ideas?
hello,
Firstly thank you for this great connector - it's a brilliant idea.
I've installed it in order to play around with metrics on a tenant and I noticed an error for the workspaces that are not PRO. As they don't have capacityID, the load is erroring out, as they show null on capacityID.
I've looked at the code - but I have to be honest: I'm an SQL/SSIS/PBI guy, so this is over my head.
Also, I had an idea for growing this brilliant connector: adding the dashboard/report usage to it (they are stored in a small cube for each of the objects, created automatically by the tenant). Not sure if this is possible or how to do it via API, but it would be neat to get it the same way.
thanks,
Victor
Thanks for this connector it is awesome!
The connector works with datasets from power bi desktop and as a custom connector on gateways for refreshing the dataset when published to the service.
However, when the power query's are migrated to dataflow entities, the connector is detected on the specified gateway, but an error is thrown when you try configure "how to connect" with your organisational account.
Admin - Datasets GetDatasourcesAsAdmin
While calling this API from the custom connector its failing to fetch the DatasourceID and gateway ID and shows as the error message.
I tried with online Power BI REST API try now
https://docs.microsoft.com/en-us/rest/api/power-bi/admin/datasets_getdatasourcesasadmin#code-try-0
Tried but its has 3 records and showing only 2 records.
{
"@odata.context": "http://wabi-west-us-redirect.analysis.windows.net/v1.0/myorg/admin/$metadata#datasources",
"value": [
{
"datasourceType": "Sql",
"connectionDetails": {
"server": "YYYYYYYYY",
"database": "finance"
},
"datasourceId": "4ce43ae2-2316-46ae-bd7e-94831d7e8003",
"gatewayId": "5adf17b9-f7ae-40c0-902e-ac93f0a57c2c"
},
{
"datasourceType": "Sql",
"connectionDetails": {
"server": "YYYYYYYY",
"database": "shared"
},
"datasourceId": "162e83d0-035f-400f-b406-0556bd23b227",
"gatewayId": "5adf17b9-f7ae-40c0-902e-ac93f0a57c2c"
},
{
"datasourceType": "Sql",
"connectionDetails": {
"server": "YYYYYY",
"database": "finance"
}
}
]
}
Hi!
Can I use this connector to view refresh histories if I only have a pro account and want to view a pro workspace?
When I select the "refresh history" query under the "Workspaces" folder I get the error message "Expression.Error: Access to the resource is forbidden."
Just need some help! I have followed all the steps but some how Power Bi desktop doesnt show the custom connector. Saved the .mez file in Documents\Power BI Desktop\Custom Connectors, without any luck.
We do use MFA!!
Hi, I finally got the PowerBIRestAPI to refresh via a gateway connection, but I get the below error when refreshing, anyone know why? Is there an API limit with this connector? Any way to fix?
Data source error: {"error":{"code":"DM_GWPipeline_Gateway_MashupDataAccessError","pbi.error":{"code":"DM_GWPipeline_Gateway_MashupDataAccessError","parameters":{},"details":[{"code":"DM_ErrorDetailNameCode_UnderlyingErrorCode","detail":{"type":1,"value":"-2147467259"}},{"code":"DM_ErrorDetailNameCode_UnderlyingErrorMessage","detail":{"type":1,"value":"Web.Contents failed to get contents from 'https://api.powerbi.com/v1.0/myorg/admin/Groups?$expand=reports,users,datasets,dataflows,dashboards&$top=1' (429): Too Many Requests"}},{"code":"DM_ErrorDetailNameCode_UnderlyingHResult","detail":{"type":1,"value":"-2147467259"}},{"code":"Microsoft.Data.Mashup.ValueError.DataSourceKind","detail":{"type":1,"value":"PowerBIRESTAPI"}},{"code":"Microsoft.Data.Mashup.ValueError.DataSourcePath","detail":{"type":1,"value":"PowerBIRESTAPI"}},{"code":"Microsoft.Data.Mashup.ValueError.Reason","detail":{"type":1,"value":"DataSource.Error"}},{"code":"Microsoft.Data.Mashup.ValueError.Url","detail":{"type":1,"value":"https://api.powerbi.com/v1.0/myorg/admin/Groups?$expand=reports,users,datasets,dataflows,dashboards&$top=1"}}],"exceptionCulprit":1}}} Table: Capacity_Datasets.
Cluster URI: WABI-US-NORTH-CENTRAL-C-PRIMARY-redirect.analysis.windows.net
Activity ID: e624c738-0489-4134-931f-eca054d2df57
Request ID: 28941de3-1126-d8eb-562d-2a2573dbda86
Time: 2020-06-26 13:12:51
Hi Team,
I followed the tutorial and have been able to fetch activity logs data successfully.
Thanks to your custom connector !!!
I am now planning to have an incremental refresh setup. I read on your blog that it is possible.
But somehow I am unable to figure it out.
This is my M Code code till now:
let
Source = PowerBIRESTAPI.Navigation(),
Functions = Source{[Key="Functions"]}[Data],
EventActivityLog = Functions{[Key="EventActivityLog"]}[Data],
invoke_function = EventActivityLog(#date(2020, 7, 1), #date(2020, 7, 9)),
add_dttm = Table.AddColumn(invoke_function, "Activity Date", each DateTime.From(
Text.Combine(
{Text.Range([CreationTime],0,10),
Text.Range([CreationTime],11)}, " "
)
) + #duration(0,5,30,0)),
#"Changed Type" = Table.TransformColumnTypes(add_dttm,{{"Activity Date", type datetime}})
in
#"Changed Type"
What I have done above is to get data from 1st July till date and then converted date to IST.
I have created the RangeStart and RangEnd Parameters, but unable to understand how to implement them.
Please guide.
--
Regards
Saurabha J
Hi Team,
I followed the instructions mentioned.
I have the Power BI Service Admin role assigned to me.
Using those credentials, I created the native app followed it up with the azure portal steps and successfully created the Custom Connector.
Once I am connected using PBI Desktop, I get a list of options like Functions, Gateways, etc ... but strangely when try the Event Activity Log, it gives a popup to login again and then says "We couldn't authenticate with the credentials..."(Image attached).
I am sure they are typed in correct as I am able to login with it everywhere else.
I am primarily only interested in Event Activity Log.
Please guide.
--
Regards
Saurabha J
Hi Team,
I'm getting this error when i "Close and apply" to load/import the data?
Something anyone faced?
It doesn't matter what table I try to import.
Failed to save modifications to the server. Error returned: 'Expression in partition 'n/a' in table 'n/a' references unknown variable or function 'PowerBIRESTAPI.Navigation'.
'.
Underlying error code: | -2147467259 Table: Reports. |
---|---|
Underlying error message: | The field 'datasetId' of the record wasn't found. |
DM_ErrorDetailNameCode_UnderlyingHResult: | -2147467259 |
Microsoft.Data.Mashup.ValueError.Reason: | Expression.Error |
Microsoft.Data.Mashup.ValueError.embedUrl: | https://app.powerbi.com/rdlEmbed?reportId=######################config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLVdFU1QtVVMtcmVkaXJlY3QuYW5hbHlzaXMud2luZG93cy5uZXQifQ%3d%3d |
Microsoft.Data.Mashup.ValueError.id: | 036a5849-16f8-4e9f-805d-298100e6e079 |
Microsoft.Data.Mashup.ValueError.isFromPbix: | False |
Microsoft.Data.Mashup.ValueError.isOwnedByMe: | True |
Microsoft.Data.Mashup.ValueError.name: | Mandatory Time Off Self Report |
Microsoft.Data.Mashup.ValueError.reportType: | PaginatedReport |
Microsoft.Data.Mashup.ValueError.webUrl: | https://app.powerbi.com/groups/50188c72-1ea3-4707-9061-fdeabc8ff73d/rdlreports/#################### |
Cluster URI: | WABI-WEST-US-redirect.analysis.windows.net
Activity ID: | cea4ab66-a46b-4faf-a9ff-c828328a8165
Request ID: | 3be3315d-064b-c68a-8e61-00ea3d675373
Time: | 2019-11-22 14:45:20Z
Report Refreshing is failing in both desktop and service for paginated reports publishing in the work space as they didnt have the dataset id with the error message.
Is there any other work around to fix the issue
Hi
Rest API screenshot.docx
Miguel,
Firstly, a big thank for the connector. I've used it to great effect in a project we are doing to move content from one Power BI Tenant to another. It was great to create an inventory of everything in the source tenant and then determine what needed to be moved.
I've just asked the admin of the new tenant to register the app there, so that we can use your API again. They reported a couple of error messages when registering. One was about the app using a deprecated version of the Azure Graph API and the other was about verified publishers. I'm attaching a screenshot. I wondered if a new version of this is going to resolve these issues or if you know of another similar connector which won't have these issues.
Again thank you so much for your hard work.
Rob
Hi @migueesc123,
Since ActivityLog is looking for ActivityLogType for the given range, I am seeing these kind of errors on a timely basis. The refresh works without any issue from PBI desktop for same date range (I am using last 30 days). From Power BI service it works sometimes, but an error would occur, I assume when some activity type is not part of the range (?)
Can you please help on how to resolve these?
Data source error: | The 'ExportedArtifactInfo' column does not exist in the rowset. Table: Event Activity Log.
Data source error: | The 'WorkspaceAccessList' column does not exist in the rowset. Table: Event Activity Log.
Thank you.
Hey Miguel
Cannot seem to get the new connection method to bring back data.
Am logged in to PBI and Windows with aad account that has PBI Service admin rights (additionally my colleague has done same, with same results and his aad is a PBI tenant admin. So between the two of us we should have the necessary access to extract the data.
Have not unzipped/adjusted the mez file.
Functions
First issue is the GETDATA not displaying and data through the connector ui (Navigator)
Gateways appear to load successfully
Personal
if no app or dashboard or tile or report (or dashboard does not have an associated report source) in personal workspace code fails. This would be a low use case but causes breakage?
Service Administrator
Data loads through the navigator
So for this issue im loading the getdata and all the administrator queries
I have disabled the getdata so i can get the other queries into DAX
Appears to be loading the data
Then boom they all error out
Eg (error for each query is same)
"Capacities (Admin)
Failed to save modifications to the server. Error returned: 'OLE DB or ODBC error: [Expression.Error] The field 'datasourceId' of the record wasn't found.. '."
As i alluded my colleague has exactly same issue with his tenant admin account so dont think its a permissions thing?
Any guidance appreciated.
Thanks and really appreciate the work you have done here to get this custom connector out there!!!
Cheers
Chris
Hello, how are you? Congratulations for the work, it was very good. Does this connector only bring data related to the logged in user? Not bringing all the data from the entire Power BI service environment?
Hi Miguel
I have downloaded and tried your method and it works great on Power BI Desktop, thanks!.
But when I publish it to Power BI Service, then I cannot seem to refresh dataset ( or data source).
I get an error "One or more data source is not supported so cannot schedule to update the dataset"
(The error is in Japanese so this is a rough translation by me)
and "Query contains unknown function name : Power BIRESTAPI.Navigation"
What am I missing or do I need to do something else to use this in Power BI Service ?
Hi Miguel,
I tried today your .mez file ( thinking to do a video on it), but it didnt work for me. Is it still working for you?
Your work is awesome by the way!
/Ruth
The new endorsement details and sensitivity labels for reports are not available via the connector per the Microsoft documentation:
https://docs.microsoft.com/en-us/rest/api/power-bi/reports/getreports
I have an idea for growing this brilliant connector: adding the dashboard/report usage to it (they are stored in a small cube for each of the objects, created automatically by the tenant). Not sure if this is possible or how to do it via API, but it would be neat to get it the same way.
Thanks,
Victor
Would be nice if you could include the data source status in the report - that allows me to chase after expired credentials or borked sources
Hi Miguel,
That's me again.
Regarding 'Get Datasets In Group' API:
https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets
There are workspaces that don't have Datasets tab
The workspace on the screen above was created when a user got access to a certain Teams tab. A user has Member permissions for this tab.
When I use 'Try It' tool for a workspace with Datasets tab absent:
https://docs.microsoft.com/en-us/rest/api/power-bi/datasets/getdatasetsingroup
I get Response Code: 403:
That's why when PowerBIRESTAPI connector runs 'Get Datasets In Group' API it experiences the same problem:
Hello
in a test tenant, i get this error. in an aother all work fine. any idea whyt coudl be differet? thx klaus
d7e40a9d3ce9","message":"","httpStatusCode":"OK","exceptionType":"","errorCode":"","errorDetails":"","cloudName":"GlobalCloud","parentId":" ffffffffffffffff","isError":"False","sessionId":"ffffffffffffffffff","deviceId":"fffffff","userId":"ffffffffffffffffffff","isInternal":"False","authenticatedUserId":"Unknown","ProductVersion":"2.85.681.0 (20.09)","ActivityId":"fffffffffff","Process":"PBIDesktop","Pid":5728,"Tid":5,"Duration":"00:00:46.3711815"}
DataMashup.Trace Information: 24579 : {"Start":"2020-11-20T14:43:40.9607477Z","Action":"SharedLocalStorageAccessor/AcquireMutex","ProductVersion":"2.85.681.0 (20.09)","ActivityId":"ffffffffffffffffffffffffffffffffff0","Process":"PBIDesktop","Pid":5728,"Tid":5,"Duration":"00:00:00.0000093"}
DataMashup.Trace Information: 24579 : {"Start":"2020-11-20T14:43:40.9674904Z","Action":"PBI.TraceMessage","sessionId":"ffffffffffffffffffffff","deviceId":"9d190bbf","userId":"fffffffffffffffff7ad","isInternal":"False","authenticatedUserId":"Unknown","Message":"AuthenticationManager.TryGetUserIdentityInfo: Valid stored client access from FrontEndUrl = https://app.powerbi.com/ for TenantId = ffffffffffffffff00","ProductVersion":"2.85.681.0 (20.09)","ActivityId":"ffffffffffffffffffffffff000","Process":"PBIDesktop","Pid":5728,"Tid":5,"Duration":"00:00:00.0000199"}
DataMashup.Trace Information: 24579 : {"Start":"2020-11-20T14:43:40.9717980Z","Action":"PBI.TraceMessage","sessionId":"effffffffffffffffffffffffffa8b","deviceId":"9d190bbf","userId":"fffffffffffffffffffd","isInternal":"False","authenticatedUserId":"Unknown","Message":"AuthenticationManager.AcquireTokenAsync: Acquiring token using TokenCache","ProductVersion":"2.85.681.0 (20.09)","ActivityId":"fffffffffffffffff000","Process":"PBIDesktop","Pid":5728,"Tid":5,"Duration":"00:00:00.0000118"}
DataMashup.Trace Information: 24579 : {"Start":"2020-11-20T14:43:40.9779288Z","Action":"PBI.MsalLog","Message":"Info: (False) MSAL 4.16.0.0 MSAL.Desktop Microsoft Windows NT 10.0.17763.0 [11/20/2020 14:43:40 - ffffffffffffffffff2] MSAL MSAL.Desktop with assembly version '4.16.0.0'. CorrelationId(fffffffffffffffffff8a12)","ProductVersion":"2.85.681.0 (20.09)","ActivityId":"000ffffffffffffff000000","Process":"PBIDesktop","Pid":5728,"Tid":5,"Duration":"00:00:00.0000555"}
This custom connector is AWESOME! I have been dying to either find or create a tool like this for well over a year and a half.
Thank you so much!
First of all, sorry for my english.
I placed the Power BI API.mez in my C:\Users\W81\Documents\Power BI Desktop\Custom Connectors, but i still can not find it in the Common Data Sources. I've already allowed any data extensions in Options\Global\Securities.
I've a connector (.mez) that works with Neo4j, so i think Power BI Desktop is correctly configured.
I get the attached error when I try to connect to any of the Power BI Service Administrator OR Functions tables. I am successfully signed in and all other tables work fine when I click the connect button, but the Power BI Service Administrator OR Functions tables get the error when I click the connect button.
This custom connector is working great through the desktop. I just installed the April release of the Gateway, and the gateway doesn't find the connector.
I've already checked that the gateway service account can access the folder it is in, and i have checked in the service that the gateway is enabled to use custom connectors.
Any ideas?
Is the AppID.txt and ClientSecret.txt no longer needed or used in the newest .mez file? I don't see them when converting to .zip and extracting. The reason I am asking is because a long time working .pbix is now failing with the attached error and not sure why. I was going to see if newer mez file fixes report. Any ideas on the error or do I need to use newer .mez?
Hey @ImkeF @klinejordan !
Would you guys mind trying out the new version of the connector, but re-enabling the client_secret for the OAuth token?
Every time that I tried with it, it just gave me an error that it couldn't load the ClientSecret.txt file for some odd reason.
My app works totally fine without the need for the client secret, but I just want to make sure that it'll work for you guys as well.
Great idea - this connector. It's something that is missing in PowerBI.
Unfortunately, we cannot utilize it yet... is there a newer version ?
We went through the steps a number of times with Microsoft and kept running into the same issue.
when trying to attach to any of the database objects, we get error messages. including: "We couldn't authenticate with the credentials provided. Please try again."
We have tried this using various credentials, without avail.
Any thoughts on how to resolve ?
Hi Miguel
Thanks for your help last time. I have another question.
One of the tables I get through API is "WorkspacesList" and it has a column named "Members" and it has no data, it is just blank.
Is there any trick to get this data ?
Thanks in advance !
Hideaki
Hola Miguel.
He vuelto a usar este conector en mi empresa ya que tenemos cientos de modelos de diferentes clientes y es espectacular poder tener control absoluto sobre los fallos de actualizaciones, y el numero de modelos e informes que tenemos en nuestro tenant, pero quería preguntarte una cosa.
¿Sigue sin dar Microsoft soporte para la actualización de los modelos creados con custom conectors?
No puede programar la actualización para este conjunto de datos porque los siguientes orígenes de datos no admiten la actualización:
Origen de datos de "Workspaces List"
Origen de datos de "Refresh History"
Origen de datos de Reports
Origen de datos de Datasets
Origen de datos de Dashboards
Descubrir orígenes de datos
Query contains unknown funtion name: PowerBIRESTAPI.Navigation.
Leí en alguna ocasión que mediante personal Gateway se podría actualizar, pero no he visto la opción.
Muchas gracias y una pena de la falta de soporte para los custom conectors porque como te comenté en su momento sería una vía interesantísima para la creación de modelos.
Un saludo
When I perform this action:
let
Source = #"Event Activity Log"(#date(2020, 5, 29), #date(2020, 5, 29))
in
Source
These columns get returned:
{"Id", "RecordType", "CreationTime", "Operation", "OrganizationId", "UserType", "UserKey", "Workload", "UserId", "ClientIP", "UserAgent", "Activity", "IsSuccess", "RequestId", "ActivityId", "ExportEventStartDateTimeParameter", "ExportEventEndDateTimeParameter"}
However when I perform this action:
let
Source = #"Event Activity Log"(#date(2020, 5, 18), #date(2020, 5, 29))
in
Source
These columns get returned:
{"Id", "RecordType", "CreationTime", "Operation", "OrganizationId", "UserType", "UserKey", "Workload", "UserId", "ClientIP", "UserAgent", "Activity", "ItemName", "WorkSpaceName", "DatasetName", "ReportName", "WorkspaceId", "ObjectId", "DatasetId", "ReportId", "EmbedTokenId", "IsSuccess", "ReportType", "RequestId", "ActivityId", "DistributionMethod", "ConsumptionMethod"}
Hi Miguel,
I followed your instuctions.
The issue is each time in Power BI Desktop when I connect using your connector and provide valid login/password I get the following message of error:
Exception of type
'Microsoft.Mashup.Engine.Interface.ResourceAccessAuthorizationException' was thrown.
I recreated an App but failed to succeed.
What am I doing wrong?
I've got an issue I'd like to ask you about! I took a look at issue #34 , and I saw that in the screenshot that you provided, your gateway had personal mode in the parenthesis in the upper right-hand corner.
I, too, have an on-premises data gateway, only it's not a personal-mode gateway; it's what I believe Microsoft now calls the Standard Mode on-premises data gateway which is installed on one of my company's servers.
That being said, I followed the same steps as the user that opened up issue #34 . However, my standard mode on-premises data gateway is unable to read the connector; it will not appear in the data gateway's Connector tab as an option, even though I have it pointed to the correct folder that contains the .mez file.
Power BI Desktop is installed on my personal laptop, and ,hence, I installed the custom connector according to the steps prescribed in your README - which works perfectly! My data gateway, since it is not a personal mode data gateway but instead a standard mode data gateway, is installed on one of our servers and, therefore, does not have access to the C:\ folder that contains the .mez file on my laptop. However, the standard mode data gateway has access to a network drive/fileserver, and I can verify that it can access the .mez file in a folder on there. From the official Microsoft documentation, I don't get the impression that the data gateway has to have specific access to a particular folder, but instead it just needs access to whatever folder the .mez file is in.
Have you had any issues or solutions in getting standard mode data gateways to read your custom connector? Is it designed only for personal mode data gateways?
Thanks for your time!
Hi Miguel,
Regarding 'Get Groups' API:
https://api.powerbi.com/v1.0/myorg/groups
If a workspace is on a dedicated capacity (isOnDedicatedCapacity = true) this API (Get Groups) returns 'capacityId' column of workspace's data record.
If a workspace isn't on a dedicated capacity (isOnDedicatedCapacity = false) this API (Get Groups) does not return 'capacityId' column among other column of workspace's data record.
There are cases when some of the workspaces are on a dedicated capacity and others are not. When this happens PowerBIRESTAPI.GroupsDatasets function fails to transform records with different column sets to a table:
As a result data gets truncated on a record with error:
The data returned is not consistent.
Hi,
After the Authntication is changed to AAD.
I am getting below error:
The application 'Microsoft Power Query for Excel' asked for scope 'user_impersonation' that doesn't exist on the resource.
Is it possible to set any other scope. oauth2Permissions in my APP does not have value to be 'user_impersonation'
Thanks in Advance,
Shruthi
Hi Miguel,
Great Custom Connector; thank you!
I am able to access details on Workspaces / reports etc. without any problems using the custom connector.
Unfortunately I too am unable to access the "Event Activity Log" due to permissions. I suspect my account would require Tenant Level Audit Log reads rather than my Power BI Service Admin permissions which (in theory) enable me to read Power BI specific Audit Log entries only...
Kind regards,
Originally posted by @marcmahmoodivc in #48 (comment)
The connector uses the Aad authentication which works very well on the desktop (thank you so much!). However when creating gateway connections the only option is OAUTH. Yes, Aad is a special case of OAUTH but I am still concerned that this may prevent me from using the connector on a gateway. I run some very hard API calls (datasource connection status against 300 connections) and it works fine on the desktop (taking the appropriate amount of time) but it fails to refresh on the gateway. The error message is not clear enough to figure out if it is an issue with the authentication or a timeout issue.
Cluster URI: | WABI-WEST-US-C-PRIMARY-redirect.analysis.windows.net
Activity ID: | 9df6c02a-57e1-46b0-b1c3-8f0c2c2e78ea
Request ID: | 2b0cacf9-5698-160b-2f54-2d59c99951be
Time: | 2021-04-27 11:51:30Z
Hi team,
I'm really excited to try this but I'm not able to sign in. I continue to get the following error:
Exception of type 'Microsoft.Mashup.Engine.Interface.ResourceAccessAuthorizationException' was thrown.
Any thoughts?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.