Слияние двух таблиц и конкатенация - Power BI Q [duplicate]

На самом деле есть способ без кастования каждого элемента вручную (он все еще уродлив, хотя ..)

//start with an arraylist of unknown generic type
ArrayList <Object> obj = getData();

//Make an array from it(basically the same as looping over the list
// and casting it to the real type of the list entries)
Object[] objArr = obj.toArray();

//Check if the array is not empty and if the componentType of the 
//array can hold an instance of the class Person 
if(objArr.length>0 
    && objArr.getClass().getComponentType().isAssignableFrom(Person.class)) {
    // do sth....
}

Это не должно давать никаких предупреждений.

Вы можете использовать он выглядит следующим образом:

private boolean isArrayOfType(Object[] array,Class<?> aClass) {
    return array.length > 0
            && array.getClass().getComponentType().isAssignableFrom(aClass);
}
Object[] personArr = getData().toArray();
if(isArrayOfType(personArr,Person.class) {
   //Do anything...

}

Что не будет работать:

// -> This won't work, sry!
       ArrayList<Person> personArrayList = Arrays.asList((Person[])personArr);
6
задан Giffyguy 18 May 2017 в 21:53
поделиться

2 ответа

Если ваша таблица является источником, и если NumberColumn имеет тип номера, это будет работать:

= Table.Group(Source, {"LetterColumn"}, {{"Column", each Text.Combine(List.Transform(_[NumberColumn], (x) => Number.ToText(x)), ","), type text}})

Table.Group выполняет группу по операции, которая создает таблицу, состоящую из всех строк с одинаковым значением в LetterColumn. _[NumberColumn] дает список значений в столбце NumberColumn в этой новой таблице. Часть List.Transform превращает числа в текстовые значения, а Text.Combine объединяет эти числа вместе с запятой, разделяющей каждое значение.

Если вам нужны окружающие кавычки, вы можете сделать это:

= Table.Group(Source, {"LetterColumn"}, {{"Column", each """" & Text.Combine(List.Transform(_[NumberColumn], (x) => Number.ToText(x)), ",") & """", type text}})

"""" представляет символ, а & amp; комбинирует два текстовых значения.

4
ответ дан Alejandro Lopez-Lago - MSFT 16 August 2018 в 03:49
поделиться

Вы можете использовать GUI для этого:

  1. Выберите свою LetterColumn, а затем Transform / GroupBy:
  2. Выберите Добавить столбец / Пользовательская колонка:
  3. Нажмите противоположные стрелки в правом верхнем углу нового столбца AllData для извлечения значений из нового столбца AllData:
  4. Удалить столбец AllData.
15
ответ дан Marc Pincince 16 August 2018 в 03:49
поделиться
  • 1
    Genius! Как вы нашли синтаксис [AllData] [NumberColumn]? Я работаю с этим инструментом уже 4 года и никогда не видел этого раньше. – Mike Honey 13 November 2017 в 13:02
  • 2
    Я, честно говоря, не помню @MikeHoney, но я мог видеть это в ответ от marcelbeug в прошлом. Я узнал от него много. Либо это ... или я просто попробовал, и это сработало. ; 0) – Marc Pincince 13 November 2017 в 14:11
  • 3
    Святое дерьмо это гений – Gaspa79 10 May 2018 в 17:56
  • 4
    – Eugene Rosenfeld 7 September 2018 в 00:48
Другие вопросы по тегам:

Похожие вопросы: