Skip to content

Instantly share code, notes, and snippets.

View ImkeF's full-sized avatar

Imke Feldmann ImkeF

View GitHub Profile
@ImkeF
ImkeF / Uri.UnescapeDataString.pq
Created August 1, 2023 20:51
Decodes special characters in the input data according to the rules of RFC 3986.
let func =
(data as text) as text =>
let
DecodedText = Uri.Parts("http://contoso?a=" & data)[Query][a]
in
DecodedText ,
documentation = [
Documentation.Name = " Uri.UnescapeDataString ",
Documentation.Description = " Decodes special characters in the input data according to the rules of RFC 3986. ",
Documentation.LongDescription = " Decodes special characters in the input data according to the rules of RFC 3986. ",
@ImkeF
ImkeF / Table.ParentChildExplosion.pq
Last active June 23, 2022 06:48
Expands Parent-Child-Hierarchy (Basic Pattern).
let
fnParentChild = let
func =
(ParentChildTable as table, ParentColumnName as text, ChildColumnName as text) =>
let
/* Debug Parameters
ParentChildTable = PCTable_,
ParentColumnName = "Parent_",
ChildColumnName = "Child_",
*/
@ImkeF
ImkeF / Tool.IdentifyUnusedMQueries.pq
Last active May 11, 2022 09:25
Identifies unused M-Queries that can be deleted
let
func = (ModelJsonPath as text) =>
let
// Helper function
fnRemoveBetweenDelimiters =
let
func = (
TextToClean as text,
StartDelimiter as text,
@ImkeF
ImkeF / Table.RemoveSPListColumns.pq
Last active October 16, 2020 08:21
Removes unnecessary columns from SharePoint List imports.
let func =
(SourceTable as table) => Table.RemoveColumns(
    SourceTable, 
    {
      "FileSystemObjectType", 
      "ServerRedirectedEmbedUri", 
      "ServerRedirectedEmbedUrl", 
      "ComplianceAssetId", 
      "OData__UIVersionString", 
      "GUID", 
@ImkeF
ImkeF / Xls.NORMINV.pq
Created June 18, 2020 06:42
Returns the inverse of the normal cumulative distribution for the specified mean and standard deviation.
let func =
(probability as number, mean as number, standard_dev as number) as number => 
    let
        // Source for NormalCDFInverse: https://www.johndcook.com/blog/normal_cdf_inverse/
        //StdDev = 1.5,
        //Mean = 2,
        p = probability,
        
RationalApproximation = (t as number) => 
            [c = {2.515517, 0.802853, 0.010328}, d = {1.432788, 0.189269, 0.001308}, return
section MyGraphB;
//
// OAuth configuration settings
//
// TODO: set AAD client ID value in the client_id file
client_id = Text.FromBinary(Extension.Contents("client_id"));
client_secret = Text.FromBinary(Extension.Contents("client_secret"));
redirect_uri = "https://oauth.powerbi.com/views/oauthredirect.html";
DoublingTime =
VAR CurrentDay =
MAX(DailyData[Date] )
// Get half of todays value
VAR ThresholdValue =
CALCULATE(MAX ( DailyData[Confirmed] ), DailyData[Date] = CurrentDay ) / 2
// Get the day when the number of cases was half as much as today
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcvL389AN0PXVNTRTitWJVnJ29NN18tF1NDQHc8GEhYVukK6js66hpVJsLAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [product_name = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"product_name", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Text.TrimEnd([product_name], {"0".."9"} & {"-"}))
in
#"Added Custom"
@ImkeF
ImkeF / Date.ToDateKey
Created November 19, 2019 07:45
Transforms and converts a <code>date</code> field to YYYYMMDD - text field.
let func =
(DateToTransform as date) as text =>
Text.From(Date.Year(DateToTransform))
& Text.PadStart(Text.From(Date.Month(DateToTransform)),2,"0")
& Text.PadStart(Text.From(Date.Day(DateToTransform)),2,"0") ,
documentation = [
Documentation.Name = " Date.ToDateKey ",
Documentation.Description = " Transforms and converts a <code>date</code> field to YYYYMMDD - text field. ",
Documentation.LongDescription = " Transforms and converts a <code>date</code> field to YYYYMMDD - text field. ",
@ImkeF
ImkeF / Type.FromText
Last active October 5, 2021 08:14
Returns a type from its textual representation.
let func =
(TypeAsText as text) =>
Record.Field(
[type null = Expression.Evaluate( "type null", [ type null = type null] ),
type logical = Expression.Evaluate( "type logical", [ type logical = type logical] ),
type decimal = Expression.Evaluate( "type number", [ type number = type number] ),
type time = Expression.Evaluate( "type time", [ type time = type time] ),
type date = Expression.Evaluate( "type date", [ type date = type date] ),
type datetime = Expression.Evaluate( "type datetime", [ type datetime = type datetime] ),
type datetimezone = Expression.Evaluate( "type datetimezone", [ type datetimezone = type datetimezone] ),